vmstat 명령어란 ?
vmstat 명령어는 리눅스 서버에 현재 메모리 상태 확인하는 명령어입니다.
프로세스의 퍼포먼스나 서버 퍼포먼스에 문제가 생겼을 때 모니터링 목적으로 보통 봅니다.
vmstat 명령어를 입력할 경우 기본적으로 아래와 같이 나옵니다.
근데 r 은 뭐고 b는 뭔가요 ? 또 free ? 위의 필드 내용이 무엇일까요?
vmstat 필드설명
vmstat은 위와 같이 6가지의 필드가 존재하며 의미는 아래와 같습니다.
proc 필드
r : run queue에 쌓인 실행대기중인 프로세스의 수. (높을경우 CPU에 부하(load)가 발생하고 있다는 의미)
b : 메모리 페이징과 같은 I/O자원에 대해 프로세스를 할당받지 못해 대기하고 있는 프로세스 수.
r에서 프로세스를 할당 받아 메모리나 디스크에 쓰려고 하는데 자원할당을 받지 못하여 대기하고 있는 경우 b가 발생한다.
memory 필드
swapd : 현재 사용된 가상 메모리의 용량
free : 현재 사용가능한 여유 메모리의 용량
buffer : 버퍼에 할당된 메모리의 총량
cache : 페이지 캐시에 할당된 메모리의 용량
swap 필드
si : CPU에서 사용하기 위해 데이터를 디스크에서 메모리로 읽어들이는(swap in) 초당 사이즈
so : swap-out 된 메모리의 양 (kb). 메모리 확보를 위해 데이터를 디스크로 출력하는(swap out) 초당 사이즈
(스왑 아웃이 지속적으로 발생하였을경우 메모리 부족 의심)
I/O 필드
bi: 블록 디바이스로 부터 전송받은 블록 수
bo: 블록 디바이스에 전송한 블록 수
system 필드
in : 초당 발생한 interrupts의 수
cs : 초당 발생한 context switches(문맥교환) 수
interrupts(인터럽트)란 주변장치(마우스,키보드 등등) 로 부터의 CPU 자원요청을 의미하고
context switches는 context란 간단하게 말해 쓰레드가 예약 CPU예약 자원입니다. Multi thread를 구현하기 위해서는 하나의 쓰레드를 완료될때까지 계속 실행해서는 안되고 여러 쓰레드를 돌려가며(switch) 실행할 필요가 있습니다.이때 쓰레드간의 이동을 context switch라고 합니다.
CPU 필드
us : user가 사용한 CPU의 비율
sy : system이 사용한 CPU의 비율
id : idle 시간 IO-wait time을 포함
wa : IO wait 시간 ,idle에 합쳐서 표시됨
vmstat의 옵션
"vmstat [옵션]" 으로 사용하며 자주 사용하는 옵션은 아래와 같습니다.
vmstat -a
사용중이지 않은 메모리와 사용중인 메모리 양이 출력됩니다.
기본적으로 나오는 버퍼와 캐시 대신 inact(사용되지 않은 메모리 양) 와 active (사용중인 메모리양)이 출력됩니다
vmstat -d
디스크 사용량을 보여줍니다.
Reads (읽기)
total : 성공한 모든 읽기 작업 개수
merged : 하나의 I/O로 묶은 읽기 작업 수
sectors : 성공적으로 읽은 섹터 수
ms : 읽기 작업을 하는데 소요된 시간(밀리초)
Wrties (쓰기)
total : 성공한 모든 쓰기 작업 개수
merged : 하나의 I/O로 묽은 쓰기 작업 수
sectors : 성공적으로 쓴 섹터 수
ms : 쓰기 작업을 하는데 소요된 시간(밀리초)
I/O (입출력)
cur : 현재 수행 중인 I/O 수
sec : I/O를 수행하는데 소요된 시간(초)
vmstat [시간][번복]
특정 시간마다 반복하여 메모리 상태를 확인하는 명령어입니다.
예) vmstat 2 5
(2초에 한번씩 5번 메모리 상태 확인)
'서버 및 운영 > 운영' 카테고리의 다른 글
Hyper-V to vmware (0) | 2024.01.01 |
---|---|
쿠버네티스(Kubernetes)란? (0) | 2022.06.06 |
도커(Docker) 이미지 설치 및 컨테이너 실행 (0) | 2022.05.30 |
가상화란? (0) | 2022.05.12 |
github - git 연동 방법 (0) | 2022.05.10 |