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

ps 명령을 사용해 개별 프로세스의 메모리 사용량을 모니터할 수도 있습니다.

ps v PID 명령은 다음과 같은 개별 프로세스의 메모리 관련 통계에 대한 포괄적인 보고서를 제공합니다.

  • 페이지 부재
  • 접촉한 작업 세그먼트의 크기
  • 메모리에 있는 작업 세그먼트와 코드 세그먼트의 크기
  • 텍스트 세그먼트의 크기
  • 내재 세트의 크기
  • 이 프로세스에서 사용되는 실제 메모리의 백분율
다음은 예제입니다.
# ps v
   PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
 36626  pts/3 A     0:00    0   316   408 32768    51    60  0.0  0.0 ps v

생성된 ps 보고서에서 가장 중요한 열에 대한 설명은 다음과 같습니다.

PGIN
페이지 부재로 인해 발생하는 페이지 인의 수입니다. 모든 입출력이 페이지 부재로 분류되므로 이 값은 기본적으로 입출력 볼륨의 측정치입니다.
SIZE
페이징 공간에서 프로세스 데이터 섹션의 가상 크기(KB, 다른 플래그에서는 SZ로 표시됨)입니다. 이 수는 프로세스의 접촉된 작업 세그먼트 페이지 수에 4를 곱한 수와 같습니다. 일부 작업 세그먼트 페이지가 현재 페이지 아웃된 상태인 경우에는 이 수가 사용 중인 실제 메모리의 양보다 큽니다. SIZE에는 프로세스의 개인용 세그먼트와 공유 라이브러리 데이터 세그먼트에 있는 페이지가 포함됩니다.
RSS
프로세스의 실제 메모리(내재 세트) 크기(KB)입니다. 이 수는 메모리에 있는 작업 세그먼트 수와 코드 세그먼트 페이지 수의 합계에 4를 곱한 수와 같습니다. 코드 세그먼트 페이지는 현재 실행 중인 모든 프로그램 인스턴스에서 공유됩니다. 26개의 ksh 프로세스가 실행 중인 경우 주어진 ksh 실행 가능 프로그램 페이지 중 하나의 사본만 메모리에 있지만 ps 명령은 해당 코드 세그먼트 크기를 각 ksh 프로그램 인스턴스의 RSS 일부로 보고합니다.
TSIZ
텍스트(공유 프로그램) 이미지의 크기입니다. 이는 실행 파일의 텍스트 섹션 크기입니다. 실행 가능 프로그램 텍스트 섹션의 페이지는 접촉되는 경우에만 즉, 분기되거나 로드되는 경우에만 메모리에 들어옵니다. 이 수는 로드할 수 있는 텍스트 양의 상한만 나타냅니다. TSIZ 값은 실제 메모리 사용량을 반영하지 않습니다. 실행 가능 프로그램에 대해 dump -ov 명령을 실행해(예: dump -ov /usr/bin/ls) 이 TSIZ 값을 표시할 수도 있습니다.
TRS
텍스트의 내제 세트(실제 메모리) 크기입니다. 이 값은 코드 세그먼트 페이지 수에 4를 곱한 값입니다. 이 수는 여러 인스턴스가 실행 중인 프로그램의 메모리 사용을 과장해서 표시합니다. XCOFF 헤더와 로더 섹션 같은 코드 세그먼트에 다른 페이지가 포함될 수 있으므로 TRS 값이 TSIZ 값보다 클 수 있습니다.
%MEM
메모리에 있는 작업 세그먼트 수와 코드 세그먼트 페이지 수의 합계에 4를 곱하고(RSS 값) 머신에서 사용 중인 실제 메모리의 크기(KB)로 나눈 후 100을 곱해 가장 가까운 전체 백분율 점으로 반올림하여 계산합니다. 이 값은 프로세스에서 사용 중인 실제 메모리의 백분율을 전달하려고 합니다. 하지만 RSS와 마찬가지로 다른 프로세스와 프로그램 텍스트를 공유하는 프로세스의 비용을 과장해 표시하는 경향이 있습니다. 또한 가장 가까운 백분율 점으로 반올림하면 시스템에서 RSS 값이 실제 메모리 크기의 0.005배 이하인 모든 프로세스의 %MEM 값이 0.0이 됩니다.
참고: ps 명령은 공유 메모리 세그먼트 또는 메모리 맵핑된 세그먼트에서 사용하는 메모리를 표시하지 않습니다. 여러 애플리케이션에서 공유 메모리나 메모리 맵핑된 세그먼트를 사용하므로 해당 세그먼트의 메모리 사용량을 보려면 svmon 명령을 사용하십시오.