vmstat 명령을 사용하여 메모리 사용량 판별

vmstat 명령은 사용 가능 리스트의 실제 메모리 페이지 프레임 수뿐만 아니라 시스템에 있는 모든 프로세스에서 사용되는 총 활성 가상 메모리에 대해 요약합니다.

활성 가상 메모리는 실제로 접촉된 가상 메모리 작업 세그먼트 페이지의 수로 정의됩니다. 활성 가상 메모리 페이지 중 일부는 페이징 공간에 작성되었으므로 이 수는 머신의 실제 페이지 프레임 수보다 클 수 있습니다.

시스템에 메모리가 부족한지 또는 메모리 조정을 수행해야 하는지 여부를 판별하려면 설정된 간격 동안 vmstat 명령을 실행하고 결과 보고서에서 pi 열과 po 열을 조사하십시오. 이들 열은 초당 페이징 공간 페이지 인의 수와 초당 페이징 공간 페이지 아웃의 수를 표시합니다. 값이 계속해서 0이 아니면 메모리 병목 현상이 있는 것입니다. 가끔 0이 아닌 값이 있는 경우에는 페이징이 가상 메모리의 기본 원리이므로 염려하지 않아도 됩니다.
# vmstat 2 10
kthr    memory              page              faults        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 1  3 113726   124   0  14   6 151  600   0 521 5533 816 23 13  7 57
 0  3 113643   346   0   2  14 208  690   0 585 2201 866 16  9  2 73
 0  3 113659   135   0   2   2 108  323   0 516 1563 797 25  7  2 66
 0  2 113661   122   0   3   2 120  375   0 527 1622 871 13  7  2 79
 0  3 113662   128   0  10   3 134  432   0 644 1434 948 22  7  4 67
 1  5 113858   238   0  35   1 146  422   0 599 5103 903 40 16  0 44
 0  3 113969   127   0   5  10 153  529   0 565 2006 823 19  8  3 70
 0  3 113983   125   0  33   5 153  424   0 559 2165 921 25  8  4 63
 0  3 113682   121   0  20   9 154  470   0 608 1569 1007 15  8  0 77
 0  4 113701   124   0   3  29 228  635   0 674 1730 1086 18  9  0 73

위의 예제 출력에서 출력의 높은 입출력 대기와 블록된 큐의 스레드 수에 유의하십시오. 기타 입출력 활동으로 인해 입출력 대기가 발생할 수 있지만 이 특정 경우에 입출력 대기는 페이징 공간의 페이징 인과 페이징 아웃으로 인해 발생했을 가능성이 매우 높습니다.

시스템의 VMM에 성능 문제점이 있는지 확인하려면 memorypage 아래의 열을 확인하십시오.

  • memory

    실제 메모리와 가상 메모리에 대한 정보를 제공합니다.

    • avm

      활성 가상 메모리 avm 열은 vmstat 샘플이 수집된 시간에 나타난 활성 가상 메모리 페이지의 수를 나타냅니다. 지연 페이지 공간 정책이 디폴트 정책입니다. 이 정책에서는 avm의 값이 사용된 페이징 공간 페이지 수보다 클 수 있습니다. avm 통계는 파일 페이지를 포함하지 않습니다.

    • fre

      fre 열은 평균 사용 가능한 메모리 페이지 수를 표시합니다. 한 페이지는 실제 메모리의 4KB 영역입니다. 시스템은 VMM에 공간이 필요할 때 쉽게 액세스할 수 있는 메모리 페이지의 버퍼(사용 가능 리스트라고 함)를 유지합니다. VMM이 사용 가능 리스트에 보관하는 최소 페이지 수는 vmo 명령의 minfree 매개변수로 결정됩니다. 자세한 정보는 VMM 페이지 교체 조정의 내용을 참조하십시오.

      애플리케이션이 종료되면 모든 작업 페이지가 즉시 사용 가능 리스트에 리턴됩니다. 그러나 영구적 페이지 또는 파일은 RAM에 남아 있으며 다른 프로그램에 사용하기 위해 VMM이 스틸할 때까지 사용 가능 리스트에 다시 추가되지 않습니다. 해당 파일이 삭제되면 영구적 페이지도 사용 가능해집니다.

      이런 이유로 fre 값이 프로세스에서 쉽게 사용할 수 있는 모든 실제 메모리를 표시하지는 않습니다. 페이지 프레임이 필요한 경우에는 종료된 애플리케이션과 관련된 영구적 페이지를 제일 먼저 다른 프로그램에 제공해야 합니다.

      fre 값이 maxfree 값보다 상당히 큰 경우에는 시스템이 스래싱될 가능성이 낮습니다. 스래싱은 시스템이 지속적으로 페이징 인/아웃함을 의미합니다. 그러나 시스템에 스래싱이 발생하는 경우에는 확실히 fre 값이 작은 것입니다.

  • 페이지

    페이지 부재와 페이징 활동에 대한 정보입니다. 일정 간격 동안의 평균을 구하고 초당 단위로 주어집니다.

    • re
      참고: 이 열은 현재 지원되지 않습니다.
    • pi

      pi 열은 페이징 공간에서 페이지 인된 페이지 수를 자세히 보여줍니다. 페이징 공간은 디스크에 상주하는 가상 메모리의 일부입니다. 메모리가 과다 할당되는 경우 오버플로우로 사용됩니다. 페이징 공간은 실제 메모리에서 스틸한 작업 세트 페이지의 스토리지 전용인 논리적 볼륨으로 구성됩니다. 프로세스가 스틸된 페이지를 참조하고 페이지 부재가 발생하는 경우 페이지를 페이징 공간에서 메모리로 읽어 들여야 합니다.

      하드웨어, 소프트웨어, 애플리케이션의 구성이 다양하므로 주의해야 할 절대적인 숫자는 없습니다. 이 필드는 페이징 공간 활동의 주요 표시기이므로 중요합니다. 페이지 인이 발생하는 경우에는 이전에 해당 페이지에 대한 페이지 아웃이 있었던 것입니다. 또한 제한된 메모리 환경에서 각 페이지 인으로 인해 다른 페이지를 강제로 스틸하여 페이지 아웃이 발생할 가능성이 있습니다.

    • po

      po 열은 페이징 공간으로 페이지 아웃되는 페이지 수(비율)를 표시합니다. 작업 스토리지의 페이지가 아직 페이징 공간에 상주하지 않거나 수정된 경우에는 페이지가 스틸될 때마다 페이징 공간에 기록됩니다. 다시 참조되지 않는 경우에는 프로세스가 종료되거나 공간을 디스클레임할 때까지 페이징 장치에 남아 있습니다. 부재 페이지에 포함된 주소를 다음에 참조하면 페이지 부재가 발생하고 시스템이 페이지를 개별적으로 페이지 인합니다. 프로세스가 정상적으로 종료되면 해당 프로세스에 할당된 페이징 공간이 사용 가능해집니다. 시스템이 상당한 수의 영구적 페이지를 읽는 경우 po는 증가하지만 pi는 이와 같이 증가하지 않을 수 있습니다. 이는 반드시 스래싱을 나타내는 것은 아니지만 애플리케이션의 데이터 액세스 패턴을 조사해야 합니다.

    • fr

      일정 간격 동안 페이지 대체 알고리즘이 초당 사용 가능하게 한 페이지 수입니다. VMM 페이지 대체 루틴에서는 페이지 프레임 테이블(또는 PFT)을 스캔할 때, 사용 가능한 메모리 프레임의 사용 가능 리스트를 계속 공급하기 위해 스틸할 페이지를 선택하는 기준을 사용합니다. 기준에는 작업(계산용) 페이지와 파일(영구적) 페이지라는 두 가지 유형의 페이지가 모두 포함됩니다. 페이지가 사용 가능해졌다고 해서 입출력이 발생하지는 않습니다. 예를 들어, 영구적 스토리지(파일) 페이지가 수정되지 않으면 디스크에 다시 기록되지 않습니다. 입출력이 필요하지 않은 경우에는 최소 시스템 자원으로 페이지를 사용 가능하게 할 수 있습니다.

    • sr

      일정 간격 동안 페이지 대체 알고리즘에서 초당 조사한 페이지 수입니다. 페이지 대체 알고리즘은 여러 페이지 프레임을 스캔해야 페이지 대체 임계치를 충족할 만큼 충분히 스틸할 수 있습니다. sr 값이 fr 값보다 클수록 페이지 대체 알고리즘이 스틸하기에 적합한 페이지를 찾기 어렵습니다.

    • cy

      클럭 알고리즘의 초당 순환 수입니다. VMM에서는 클럭 알고리즘이라는 기법을 사용해 대체할 페이지를 선택합니다. 이 기법에서는 각 페이지의 참조 비트를 이용해 최근에 사용된(참조된) 페이지를 표시합니다. 페이지 스틸러 루틴이 호출되면 PFT를 순환하면서 각 페이지의 참조 비트를 조사합니다.

      cy 열은 초당 페이지 대체 코드가 PFT를 스캔한 횟수를 표시합니다. PFT를 전체 스캔하지 않아도 사용 가능 리스트를 계속 공급할 수 있고 모든 vmstat 필드는 정수로 보고되므로 이 필드는 보통 0입니다.

시스템에 적합한 RAM의 크기를 판별하는 한 가지 방법은 vmstat 명령에서 보고하는 avm의 가장 큰 값을 확인하는 것입니다. 해당 값에 4K를 곱해 바이트 수를 구한 후 시스템의 RAM 바이트 수와 비교하십시오. avm이 총 RAM보다 작은 경우가 이상적입니다. 그렇지 않으면 약간의 가상 메모리 페이징이 발생합니다. 페이징 발생 정도는 두 값의 차이에 따라 다릅니다. 가상 메모리를 사용하면 실제 있는 메모리(메모리 중 일부는 RAM에 있고 나머지는 페이징 공간에 있음)보다 많은 메모리를 다룰 수 있습니다. 그러나 가상 메모리가 실제 메모리보다 너무 많으면 페이징이 지나치게 많이 발생해 지연이 생길 수 있습니다. avm이 RAM보다 낮으면 RAM이 파일 페이지로 채워져 페이징 공간 페이징이 발생할 수 있습니다. 이런 경우 minperm, maxperm, maxclient 값을 조정하면 페이징 공간 페이징의 양을 줄일 수 있습니다. 자세한 정보는 VMM 페이지 교체 조정의 내용을 참조하십시오.