Site icon DBA의 정석

vmstat를 통한 시스템 현 상태 분석하는 법

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에서 처리되기 위해 기다리는 프로세스가 많음을
의미한다. 즉, 현재 CPU 작업이 많다는 것을 의미한다. 보통 이의 상태에 따라 CPU의 바쁨 정도를 추적할 수 있다.

b 페이징 등과 같이 I/O 자원에 대해 블록(block)되는 프로세스의 수(waiting)를 말한다. I/O에 있어 CPU 자원을 할당 받지 못해 블록화
된 프로세스의 수를 의미한다. w 스왑 아웃(Swap out)되는 프로세스의 수로서, 실행 가능한 실행 큐에는 쌓이지 않고 바로 스왑 아웃되는 프로세스를 의미한다. 이를 통해 물리적 메모리의 부족 여부를 판단할 수 있다.

 memory

 가상 메모리와 실제 메모리의 가용에 대한 것을 출력 swap 현재 가용 가능한 스왑 공간의 크기(Kbytes) free 자유 목록(free list)의 크기(Kbytes)로서 자유 메모리가 현재 운영 중인 물리적인 메모리의 6%보다 계속적으로 적게 나오면 가용할 수 있는 메모리가 부족하다는 것을 의미하며, 이것은 시스템 전체 병목(Bottleneck)이 발생할 수 있음을 의미한다.

 page

 페이지 실패(fault)와 페이징(paging) 활동에 관한 정보를 출력

re 페이지 재 사용 – -S 옵션을 사용하면 이 필드는 si로 수정
mf 최소한의 페이지 실패 – -S 옵션을 사용하면 이 필드는 so로 수정
pi 페이지 인 하는(paged in) 페이지 수(단위: Kbytes)
po 페이지 아웃되는(paged out) 페이지 수(단위: Kbytes)
fr 자유(free) 페이지 수(단위: Kbytes)
de 메모리 부족한 크기를 미리 예측(단위: Kbytes)한다. 부족한 메모리에
대해 스왑아웃을 하기 위해 스완 인을 막게 된다.
sr 클럭 알고리즘(Clock algorithm)에 의해 스캔(scan)되는 페이지 수로서, 가용할 수 있는 메모리가 부족할 경우 활성화 되어 있는 페이지의
데몬의 수를 나타낸다. 즉, sr이 크다는 것은 이에 비례하여 메모리가 부족하다는 것을 의미한다.

 disk

 디스크 운영에 대한 수를 출력한다(초 단위). 4개의 디스크에 대한 상태를 각각 보여준다. 디스크는 유형에 맞는 이름이 출력한다(s=SCSI, I=IPI 등).

 faults

 트랩(trap)/인터럽트(interrupt) 비율을 출력(초 단위)

in 인터럽트 수
sy 시스템 요청(system call)
cs CPU 문맥 교환(Context switches)

 cpu

 CPU 사용에 대한 것을 %로 구분하여 출력한다. 여러 개의 CPU로 구성이 될 경우에는 CPU 개수에 따른 평균 값이 출력된다.
us 사용자가 사용한 CPU 시간 비율(user time)
sy 시스템이 사용한 CPU 시간 비율(system time)
id 가용 가능한 CPU 시간 비율(Idle time)

Exit mobile version