vmstat의 결과이다. 시스템 상태에 대하여 분석을 해보자.
현재 이 시스템 상태를 보면 pi 필드에 많은 수치를 보이고 있으며, sd에 디스크에 대한 입출력 크기를 보여주고 있다. pi는 Page-in을 의미하며, 실행될 내용 또는 데이터를
디스크에서 메모리에 로드(load)하는 크기라 할 수 있다. 즉, 현재 이 시스템은 실행될 프로그램 또는 처리할 데이터를 디스크에서 메모리로 로드하고 있으며,
보통 사용자 프로그램 또는 데이터베이스의 처음 실행에 따라 나타나는 현상으로 볼 수 있다. 그러나, 이미 프로그램이 실행 중이며 이에 따른 서비스를 실시하고
있는데 이런 증상이 나타난다면 프로그램의 처리보다는 많은 데이터 또는 크기가 큰 데이터를 처리하기 위해 데이터를 메모리로 로드하는 것으로 생각할 수 있다.
주로 데이터베이스 서버 등에서 배치성 작업등을 처리할 경우 나타날 수 있다.
vmstat는 Virtual Memory Statistics 약어이며, 커널 스레드(kernel thread), VM(가상 메모리: VirtualMemory), 디스크, 트랩(trap), 그리고, CPU 활동과 관련된
가상메모리 상태를 보고한다. 출력 값들은프로세서 수에 따른 합계와 평균으로서 표시된다. vmstat는 크게 5가지 형식으로 출력되며, 이를 통해 프로세스,
인터럽트, CPU 캐시(cache), CPU 활용, VM과 스왑핑(swapping) 활용, 디스크 활용 등의 내용을 측정할 수 있다. sar는 한번에 하나의 요소에 대해서만
측정을 할 수 있지만, vmstat는 동시에 여러 가지 요소를 볼 수 있는 장점이 있다. 시스템 모든 요소들을 운영하기 위해 가상메모리 영역에서 각 이벤트가 관리된다.
그래서, 가상 메모리에서 발생하는 모든 이벤트들을 종합적으로 분석한다면 현재 시스템 상황을 쉽게 판단할 수 있다. vmstat는 이러한 요건을 충분히 만족시켜
준다고 보면 될 것이다. 위의 경우 vmstat에 –S 옵션을 사용한 결과를 1초 간격으로 출력하고 있다. -S 옵션의 사용은 페이징 활동 보다는 스와핑에 대한
내용을 출력한다. vmstat가 옵션 없이 사용 할 경우 “re”, “mf”가 페이징의 정보를 보여주는데, -S 옵션을 사용할 경우 이 부분이 “si(Swap-ins)”,
“so(Swap-outs)”로 출력된다. vmstat는 기본적으로 결과를 6개 부분으로 구분하여 튜닝 결과를 출력한다.
다음은 각 필드에 대한 설명이다.
항목 |
내용 |
procs (solaris에서는 kthr로 나타난다. |
각 상황에 따른 커널 쓰레드의 수를 출력하며, 다음 3가지 상황에 따르는 프로세스 수를 출력한다. r 런큐(run queue)에 쌓인 프로세스의 수를 나타내며, 여기에 숫자가 높다는 것은 CPU에서 처리되기 위해 기다리는 프로세스가 많음을 b 페이징 등과 같이 I/O 자원에 대해 블록(block)되는 프로세스의 수(waiting)를 말한다. I/O에 있어 CPU 자원을 할당 받지 못해 블록화 |
memory |
가상 메모리와 실제 메모리의 가용에 대한 것을 출력 swap 현재 가용 가능한 스왑 공간의 크기(Kbytes) free 자유 목록(free list)의 크기(Kbytes)로서 자유 메모리가 현재 운영 중인 물리적인 메모리의 6%보다 계속적으로 적게 나오면 가용할 수 있는 메모리가 부족하다는 것을 의미하며, 이것은 시스템 전체 병목(Bottleneck)이 발생할 수 있음을 의미한다. |
page |
페이지 실패(fault)와 페이징(paging) 활동에 관한 정보를 출력 re 페이지 재 사용 – -S 옵션을 사용하면 이 필드는 si로 수정 |
disk |
디스크 운영에 대한 수를 출력한다(초 단위). 4개의 디스크에 대한 상태를 각각 보여준다. 디스크는 유형에 맞는 이름이 출력한다(s=SCSI, I=IPI 등). |
faults |
트랩(trap)/인터럽트(interrupt) 비율을 출력(초 단위) in 인터럽트 수 |
cpu |
CPU 사용에 대한 것을 %로 구분하여 출력한다. 여러 개의 CPU로 구성이 될 경우에는 CPU 개수에 따른 평균 값이 출력된다. |