효과적인 시스템 관리는 리소스 사용량을 면밀히 주시하는 것을 필요로 하며, 메모리 모니터링은 이 과정의 중요한 부분입니다. 시스템 메모리가 부족해지면 성능이 크게 저하될 수 있습니다. Linux 는 메모리 소비를 추적하는 데 도움이 되는 여러 도구를 제공하며, 그중 가장 다재다능한 도구 중 하나가 vmstat입니다.
vmstat 소개
vmstat (가상 메모리 통계) 명령어는 프로세스, 메모리, 페이징, 블록 I/O, 트랩 및 CPU 활동에 대한 정보를 보고하는 강력한 메모리 사용량 모니터입니다. 인자 없이 실행하면 마지막 부팅 이후 시스템의 현재 상태 스냅샷을 제공합니다.
pete@icebox:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 396528 38816 384036 0 0 4 2 38 79 0 0 99 0 0
출력은 여러 열로 구성되어 있습니다. 각 필드가 무엇을 의미하는지 분석해 보겠습니다.
Procs (프로세스)
r: 실행 시간을 기다리는 실행 가능한 프로세스의 수입니다.b: 비인터럽트 가능한 절전 상태에 있는 프로세스의 수로, 일반적으로 I/O 를 기다립니다.
Memory (메모리)
swpd: 사용된 가상 메모리 양 (킬로바이트 단위).free: 유휴 메모리 양 (킬로바이트 단위).buff: 버퍼로 사용되는 메모리 양.cache: 페이지 캐시로 사용되는 메모리 양.
Swap (스왑)
si: 초당 디스크에서 스왑 인된 메모리 양 (킬로바이트 단위). 높은 값은 시스템의 물리적 메모리가 부족함을 나타냅니다.so: 초당 디스크로 스왑 아웃된 메모리 양 (킬로바이트 단위). 이상적으로는 0 이어야 합니다.
IO (입출력)
bi: 블록 장치로부터 수신된 블록 수 (블록/초).bo: 블록 장치로 전송된 블록 수 (블록/초).
System (시스템)
in: 초당 인터럽트 횟수 (클럭 포함).cs: 초당 컨텍스트 스위치 횟수.
CPU (중앙 처리 장치)
이 값들은 총 CPU 시간의 백분율입니다.
us: 커널 코드가 아닌 코드를 실행하는 데 사용된 시간 (사용자 시간).sy: 커널 코드를 실행하는 데 사용된 시간 (시스템 시간).id: 유휴 상태인 시간.wa: I/O 대기 시간.st: 가상 머신에서 빼앗긴 시간 (가상화된 환경의 경우).