요약:

요약:

질문: 실제 메모리 사용량을 어떻게 보고할 수 있나요(없이캐시!) 사용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 -Gvmstat -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에서 기본적으로 사용 가능해야 하며 topLinux 와 유사하지만 훨씬 더 많은 정보를 제공합니다 .

실행하면 topas기본적으로 많은 정보(CPU를 사용하는 상위 프로세스, 메모리 사용량 요약 등)가 표시되고, 누르면 h다른 키와 해당 기능이 포함된 인라인 도움말 텍스트가 표시됩니다(예를 들어 c여러 번 누르면 CPU 사용량을 표시하는 다양한 방법이 순환됩니다). .

관련 정보