본문 바로가기
Linux/Linux

Linux) 짧은 시간에 빠르게 서버 상태 파악하기(2)

by LILO 2021. 5. 9.
반응형

서버 상태 파악하기 - LAB

 

"vmstat" 명령을 이용해 현재 서버 상태를 "top" 명령어로 보는 것보다 더 자세하게 확인합니다.

이 명령어는 Virtual Memory, 페이징 활동 및 실패, CPU 활동, Process 등의 통계들이 있어 상당히 유용하게 쓰입니다.

 

일단 들어가자마자 확인해야 될 것은 현재 서버의 상태이기 때문에 자세한 정보보다 대략적인 상태를 보고 나서 자세히 알아보는 것이 좋은 것 같습니다. 아래의 명령어에 "1"인자를 붙여 1초 간격으로 정보를 봅니다.

 

# vmstat 1

 

 

뭔가 깔끔하게는 되어 있는데 처음 보면 낯설은 용어들이 보일 것입니다. 아래에 정리를 하면서 파악하려고 합니다.

 

○ procs(=Process, 프로세스)

1)
r: 실행 큐에 쌓인 실행 대기중인 프로세스의 수 (CPU Load(부하) 예측에 유용)
2) b: I/O 자원에 대해 프로세스를 할당 받지 못해 대기하고있는 프로세스 수 (Disk 및 CPU 성능 체크 필요)
(시스템 부하시 r에서 프로세스 할당을 받아 MEM이나 Disk에 쓰려고 하는데 자원 할당을 받지 못하는 상태)


○ memory (메모리 상태)

1)
swpd: Swap Partiton의 사용량
2) free: Memory 용량 중 Cache+Buffer+Shared 영역을 제외한 사용 가능한 용량 (단위: KB)
3) buff: 버퍼 메모리(Buffer Memory) 사용량, 버퍼 메모리는 한 쪽에서 다른 한 쪽(End Point)로 전송하는 동안 임시적으로 보관하는 공간 (단위: KB)
4)
cache: 메인 메모리와 CPU 간의 데이터 속도 향상을 위한 중간 버퍼 역할을 해주는 메모리 (CPU, MEM 등 여러 IO 장치에 존재, 병목현상 줄여줌)


○ swap (Swap 입출력 상태)

1) si: Disk에 스왑되지 않는 메모리로 swap 공간에 있는 데이터를 실제 메모리로 호출함
2) so: 메모리에서 Disk로 Swap되는 메모리로 실제 메모리의 데이터 중 일부분을 Swap 공간으로 보냄


○ io (블럭 디바이스 입출력 상태)

1) bi: Blcok Device로 보내는 블럭 수
2) bo: Block Device로부터 받은 블럭 수
3) 판단: 위의 두 값이 노으면 HDD/SSD에 읽고 쓰는 값(I/O)이 많다는 의심을 할 수 있음


○ system

1) in: 초당 인터럽트되는 양, 이더넷 패킷이나 실시간 시계도 이부분에 포함되기 떄문에 너무 높다면 네트워크 부분을 점검할 필요가 있음
※ 인터럽트: CPU가 작업을 실행 중일 때 하드웨어나 명령 등의 변수들에 예외사항이 발생하여 잠시 Micro Processor에 알려 처리하고 다시 원래의 작업을 진행하는 것을 말함

2) cs: 초당 Context Switch되는 양, CPU에서 실행되는 작업들이 자신의 우선순위보다 높은 작업(명령) 혹은 자신에게 할당된 CPU 점유 시간이 만료되면 우선순위에서 밀리는데 이 구간에서 새로운 프로세스를 적재할 때 Context Switch(문맥 교환)가 일어난다.


○ cpu

1) us: 유저 프로세스가 CPU를 사용하는 평균 시간
2) sy: 커널에서 사용되는 시스템 프로세스가 CPU를 사용하는 평균 시간
3) id: CPU가 아무 일도 하지 않고 여유 있는 유휴상태인 평균 시간
4) wa: 디스크 입출력이 있는 상태에서 CPU가 놀고 있는 평균 시간 (WAIT I/O)
5) st: 하이퍼바이저가 vCPU(가상 CPU)를 서비스하는 동안 실제 CPU를 차지한 평균 시간 (Stolen Time)

 

위의 내용으로 참고해서 해당 지표들을 봤을 때 매우 안정적인 지표를 보이고 있습니다. CPU 코어 수 1개에 작업 대기가 걸린 것이 없는 것을 보아 무거운 솔루션을 돌리지 않는 것으로 예측됩니다.

 

 

 

 

다음은 CPU 코어별 사용량이 어떻게 되는지 확인하는 작업입니다.

 

# mpstat -P ALL 1

 

 

매우 안정적인 지표를 보이고 있고 위에 "vmstat"과 비슷한 지표들이 많기 때문에 자세한 설명은 하지 않으려고 합니다.

거의 솔루션이 돌아고 있지 않고 1코어짜리 CPU를 사용하고 있음으로 예측됩니다. 

 

만약 여러 코어일 경우에 해당 CPU가 너무 많이 사용되고 있다는 생각이 들면 "mpstat -P <CPU ID> 1"을 입력해 1초 간격으로 CPU 상태를 받아옵니다.

 

 

 

반응형