질문: 실제 메모리 사용량을 보고하는 방법(아니요은닉처! )사용나이몬또는가상 머신 상태또는svmonAIX 6에서?
나이몬:
가상 머신 통계:
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
사용 중인 +페이지(단위는 4k 페이지)에 대한 출력을 보거나 실행 파일(동일 단위)을 제외한 파일 캐시에 대한 "파일 페이지"를 찾아보십시오.pers
svmon -G
vmstat -v
무슨 일이 일어나고 있는지 완전히 이해하려면 다음 문서를 확인해야 합니다.AIX 페이지 교체 개요.
간단히 말해서, AIX에는 두 가지 메모리 분류가 있습니다.
작업 기억 vs 영구 기억
작업 메모리는 프로세스(스택, 힙, 공유 메모리) 및 커널 메모리입니다. 이러한 메모리를 페이지 아웃해야 하는 경우 교체해야 합니다.
영구 메모리는 파일 캐시입니다. 페이지 아웃이 필요한 경우 페이지 아웃이 발생한 파일 시스템으로 반환됩니다(더티 페이지의 경우 깨끗한 페이지가 회수됩니다). 이는 JFS 파일 시스템의 비클라이언트(또는 영구) 페이지와 JFS2, NFS 및 기타 클라이언트 페이지로 구분됩니다.
계산된 페이지와 계산되지 않은 페이지.
컴퓨팅 페이지는 다시 프로세스 및 커널 데이터와 프로세스 텍스트 데이터(예: 실행 파일/코드를 캐시하는 페이지)입니다.
비계산은 실행 불가능한 파일 캐시(또는 공유 라이브러리)와는 다른 것입니다.
svmon -G
(그런데 svmon -G -O unit=MB
좀 친절해요) 영구 페이지 대신 일자리를 주세요. 이 work
열은 작업 메모리입니다. pers
(JFS) 및 (JFS2) 열을 추가 하여 clnt
영구 메모리를 얻습니다 .
귀하의 경우 파일 시스템(186151*4k 페이지)에서 지원하는 약 730MB의 영구 페이지가 있습니다.
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%만이 캐싱에 사용되는 이유를 설명할 수 있습니다(그리고 "컴퓨팅, 로드된 프로그램"이라고도 함).
한가상 머신 상태또한 -I(대문자: i, "fi" 및 "fo" 추가 - fileIn 및 fileOut 활동) 및 -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와 같은 공통 프로세스에 의해 시작된 후 분기되는 경우 일부 또는 거의 모든 데이터 및 자루 페이지를 공유할 수도 있습니다. 프로세스에 필요하지만 우리에게는 거의 보이지 않는 수십 개의 라이브러리의 경우에도 마찬가지입니다.
이러한 알 수 없는 공유로 인해 일반적으로 모든 프로세스의 모든 메모리를 합산하면 분명히 메모리보다 훨씬 큽니다.
nmon
최상위 프로세스에 "t"를 사용한 다음 프로세스 크기를 정렬하기 위해 "4"를 사용하면 프로세스 메모리가 표시됩니다.
- 크기 KB = 디스크에 있는 프로그램 파일의 크기.
- 상주 세트 크기 = 메모리 크기(코드와 같은 파일 시스템에 아직 남아 있는 페이지 및 페이징 디스크의 일부 부분 제외)".
- ResText 열은 Resident Set의 코드 페이지입니다.
- ResData 열은 상주 세트의 데이터 및 스택 페이지입니다.
답변4
이 topas
명령은 실제 메모리와 컴퓨터 메모리의 비율을 표시합니다. 이는 AIX에서 기본적으로 사용 가능해야 하며 Linux의 그것과 유사합니다(그러나 훨씬 더 많은 정보를 제공합니다) top
.
기본적으로 시작 시 topas
풍부한 정보(CPU를 사용하는 상위 프로세스, 메모리 사용량 요약 등)가 표시되며, 누르면 h다른 키 및 해당 기능과 함께 인라인 도움말 텍스트가 표시됩니다(예: c몇 번 누르면 다음 단계가 순환됩니다). 다양한 방법으로 CPU 사용량 목록).