![요약:](https://rvso.com/image/36008/%EC%9A%94%EC%95%BD%3A.png)
질문: 실제 메모리 사용량을 어떻게 보고할 수 있나요(없이캐시!) 사용nmon또는vmstat또는svmonAIX 6에서?
nmon:
vmstat:
svmon:
Linux와 마찬가지로 free 명령을 사용할 수 있지만 AIX에서는 사용할 수 없습니다.
[user@notebook ~]$ free -m
total used free shared buffers cached
Mem: 7797 4344 3453 0 219 2745
-/+ buffers/cache: 1379 6417
Swap: 2047 0 2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$
답변1
짧은 버전: 모든 파일 캐시를 알고 싶다면 출력 에서 사용 중 clnt
+ pers
페이지 (단위는 4k 페이지)를 보거나 실행 파일을 제외한 파일 캐시(동일 단위)에 대해서는 "파일 페이지"를 보고 살펴보세요.svmon -G
vmstat -v
무슨 일이 일어나고 있는지에 대한 좋은 개요를 보려면 다음 문서를 확인해야 합니다.AIX 페이지 교체 개요.
매우 간략하게 요약하면 AIX의 메모리는 두 가지 방식으로 분류됩니다.
작업 기억과 영구 기억
작업 메모리는 프로세스(스택, 힙, 공유 메모리) 및 커널 메모리입니다. 해당 종류의 메모리를 페이지 아웃해야 하는 경우 스왑으로 이동합니다.
영구 메모리는 파일 캐시입니다. 페이지 아웃해야 하는 경우 원래 있던 파일 시스템으로 다시 나갑니다(더티 페이지의 경우 클린 페이지가 재활용됩니다). 이는 JFS 파일 시스템에 대한 비클라이언트(또는 영구) 페이지와 JFS2, NFS 및 기타 항목에 대한 클라이언트 페이지로 세분화됩니다.
계산 페이지와 비계산 페이지.
계산 페이지는 다시 프로세스 및 커널 데이터와 프로세스 텍스트 데이터(예: 실행 파일/코드를 캐시하는 페이지)입니다.
비계산은 실행 가능하지 않은 파일 캐시(또는 공유 라이브러리)입니다.
svmon -G
(btw, svmon -G -O unit=MB
조금 더 친숙합니다) 작업과 영구 페이지를 제공합니다. 열 work
은 작업 기억입니다. pers
(JFS) 및 clnt
(JFS2) 열을 추가하여 영구 메모리를 얻습니다 .
귀하의 경우 파일 시스템이 지원하는 약 730MB의 영구 페이지(186151*4k 페이지)가 있습니다.
이제 topas
오른쪽 상단의 "위젯"에 FileSystemCache (numperm)
약간 다른 내용이 표시되며 다음과 같은 동일한 데이터를 얻게 됩니다 vmstat -v
. 이는 계산되지 않은 영구 페이지일 뿐입니다. 즉, 위와 동일하지만 실행 파일 페이지는 제외됩니다.
귀하의 경우 약 350MB(16G의 2.2%)입니다.
어느 쪽이든 실제로는 캐시가 많지 않습니다.
답변2
찾고있는 명령 (imho)은 다음과 같습니다.
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
여기서 주요 옵션은 다음과 같습니다.
- 'filtertype=working' # 일명, 캐시 없음;
- 'segment=off' # -O를 사용할 때 실제로 기본값
- 'filtercat=exclusive' # 공유 메모리나 커널 atm을 포함하지 않습니다.
- 'unit=MB' # 페이지 수에서 계산하려는 사람 ??
그리고 -C(명령 이름 관련, 아래 몇 가지 예) 및 아마도 -U(사용자 관련)와 같은 다른 옵션을 살펴보는 것이 좋습니다.
++++댓글 시작 ++++
귀하의 질문에 대한 의견으로 입력한 내용을 삽입했지만 여기에 새로운 사용자로서 평판이 부족합니다.
귀하의 vmstat 출력은 현재 상황보다 더 많은 것을 알려줍니다. 단일 라인 출력이기 때문에 역사적입니다. 그리고 pi/po(페이징 공간 페이지 인/페이징 공간)의 기록을 보여주므로 메모리 문제가 발생한 것으로 의심됩니다. 페이지아웃)
관심 있는 다른 열은 fr/sr 열입니다.
- fr: lrud에 의해 해제된 페이지(가장 최근에 사용된 데몬, 즉 페이지 스틸러)
- sr: '이전' 페이지를 찾기 위해 lrud가 스캔/검색한 페이지
- sr/fr: 해제하기 위해 "스캔"해야 하는 페이지 수를 나타내는 비율 1
내가 문제라고 생각하는 것은 여기에 제공된 pi/po 값이며 다른 명령의 데이터와 완전히 일치하지 않습니다. 여기에도 가동 시간이 없으므로 '테스트'가 이러한 숫자를 생성한 것이 무엇인지 알기가 어렵습니다.
- pi: 페이징 공간 페이지 인(즉, 페이징 공간에서 애플리케이션 메모리 읽기)
- po: 메모리를 훔치고 응용 프로그램(작업) 메모리를 페이징 공간에 씁니다. 작업 메모리만 페이지 공간으로 들어가거나 페이지 공간에서 나옵니다.
프레젠테이션에서는 pi=22 및 po=7을 표시합니다. 이는 평균적으로 시스템이 데이터를 쓴 것보다 페이징 공간에서 정보를 쓴 후(쓴 후) 3배 더 자주 정보를 읽는다는 의미입니다. 이는 데이터를 읽은 후(pi) 다시 도난(sr/fr)하는 중(sr/fr)이 터치되기 전에(사용된 참조라고도 함) 애플리케이션이 '대기'하기 전에 다시 읽고 제거되기 때문에 시스템이 부족하다는 표시입니다. 그것에 접근할 기회가 있어요.
간단히 말해서, 제시된 데이터는 '고통' 순간과 '동기화'되지 않습니다. 이는 현재 메모리의 2.2%만 캐싱에 사용되는 이유를 설명할 수 있지만('로드된 프로그램이라고도 불리는 계산'일 수도 있음).
한vmstat또한 -I('fi' 및 'fo' - fileIn 및 fileOut 활동을 추가하는 capital:i) 및 -w(와이드) 플래그를 제안하여 숫자가 텍스트 헤더 아래에 더 잘 배치되도록 합니다.
++++ '댓글' 끝
-P(프로세스 뷰)를 사용하여 발췌한 내용을 살펴보겠습니다.
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
14614630 httpd 21.5 0.06 0 21.5
11272246 httpd 21.4 0.06 0 21.4
12779758 httpd 21.2 0.06 0 21.2
17760476 httpd 20.9 0.06 0 20.9
11796712 httpd 20.8 0.06 0 20.8
17039454 httpd 20.6 0.06 0 20.6
11862240 httpd 20.6 0.06 0 20.6
14680090 httpd 20.5 0.06 0 20.5
10747970 httpd 20.5 0.06 0 20.5
11141286 httpd 20.5 0.06 0 20.5
4718766 mysqld 13.6 0.02 0 13.6
루트가 아닌 경우에는 해당 환경의 명령만 볼 수 있습니다.
$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
5505172 svmon 10.7 0.19 0.44 11.4
6553826 ksh 0.57 0.02 0 0.57
9175288 ksh 0.55 0.02 0 0.55
12910710 sshd 0.55 0.02 0 0.55
15204356 sshd 0.52 0.02 0 0.52
12779760 head 0.18 0.02 0 0.18
특정 명령을 보고 싶을 수도 있으므로 루트로 다시 전환하여 httpd를 살펴보세요.
요약:
svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 227.44 0.69 0 227.44
세부정보: 발췌
# svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 230.62 0.81 0 230.62
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
230.62 0.81 0 230.62
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
81a203 3 work working storage m 24.6 0 0 24.6
parent=883990
8b82d7 3 work working storage m 18.8 0 0 18.8
parent=834226
8b9d37 3 work working storage m 18.2 0 0 18.2
parent=884fb0
8915f2 f work shared library data m 2.00 0 0 2.00
parent=898373
89abb3 f work shared library data m 2.00 0 0 2.00
parent=84b9a9
824ea4 f work shared library data m 2.00 0 0 2.00
이는 'segment=category'를 잘 표시하지 않으므로 이제 더 간단한 명령(tail)을 사용하여 각 메모리 '세그먼트' 유형의 요약 및 세부 정보를 표시하지만 여전히 '작업' 메모리만(캐싱 없음)
# svmon -C tail -O filtertype=working,segment=category,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
tail 82.5 52.6 5.12 90.6
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
34.1 33.1 2.38 35.8
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 34.1 33.1 2.38 35.8
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
0.18 0.02 0 0.18
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
88b4f1 f work working storage sm 0.09 0 0 0.09
82d005 2 work process private sm 0.07 0.02 0 0.07
8e0c9c 3 work working storage sm 0.02 0 0 0.02
...............................................................................
SHARED segments Inuse Pin Pgsp Virtual
48.2 19.5 2.75 54.6
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
9000 d work shared library text m 48.2 19.5 2.75 54.6
답변3
nmon을 누른 다음 "m"을 누르면 몇 가지 큰 메모리 사용 방법이 빠르게 표시됩니다.
ipcs -am
DB2 및 Oracle과 같은 많은 애플리케이션에서 사용되는 공유 메모리 - 명령에서 SEGSZ의 크기를 확인하세요 ipcs -am
. 소유자 열은 일반적으로 SGA의 oracle 사용자 또는 DB2 버퍼 캐시의 db2inst1과 같은 용도로 사용되는 항목을 알려줍니다.
그런 다음 프로세스에 따라 달라지며 까다로워집니다. 동일한 프로그램 파일을 실행하는 모든 프로세스는 코드 페이지를 읽기 전용으로 공유합니다. 예를 들어 RDBMS 및 Apache와 같은 공통 프로세스에 의해 프로세스가 시작된 경우 데이터 및 자루 페이지의 일부 또는 거의 전부를 공유할 수도 있습니다. 이는 프로세스에도 필요하지만 우리에게는 거의 보이지 않는 수십 개의 라이브러리에도 해당됩니다.
이러한 알 수 없는 공유로 인해 모든 프로세스의 모든 메모리를 합산하면 분명히 메모리보다 훨씬 큰 경우가 종종 있습니다.
최상위 프로세스에 "t"를 사용 nmon
하고 프로세스 크기를 정렬하기 위해 "4"를 사용하면 프로세스 메모리가 표시됩니다.
- 크기 KB = 디스크의 프로그램 파일에 있는 크기입니다.
- 상주 세트 크기 = 메모리 내 크기(코드와 같은 파일 시스템에 아직 남아 있는 페이지 및 페이징 디스크의 일부 부분 제외)".
- ResText 열은 Resident Set의 코드 페이지입니다.
- ResData 열은 Resident Set의 데이터 및 스택 페이지입니다.
답변4
이 topas
명령은 실제 메모리와 컴퓨터 메모리의 비율을 보여줍니다. 이는 AIX에서 기본적으로 사용 가능해야 하며 top
Linux 와 유사하지만 훨씬 더 많은 정보를 제공합니다 .
실행하면 topas
기본적으로 많은 정보(CPU를 사용하는 상위 프로세스, 메모리 사용량 요약 등)가 표시되고, 누르면 h다른 키와 해당 기능이 포함된 인라인 도움말 텍스트가 표시됩니다(예를 들어 c여러 번 누르면 CPU 사용량을 표시하는 다양한 방법이 순환됩니다). .