리눅스를 모니터링 할 때 가장 유용하게 사용되는 명령어인 Top에 대해서 알아보겠습니다.
top을 통해 살펴보면 프로세스 정보들
top
- 시스템의 상태를 전반적으로 가장 빠르게 파악 가능함(CPU, Memory, Process)
- 옵션 없이 입력하면 interval 간격(기본 3초)으로 화면을 갱신하여 정보를 보여줌
- top 실행 전 옵션
순간의 정보를 확인하려면 -b 옵션 추가 (batch 모드)
-n : top 실행 주기 설정(반복 횟수)
top 실행 후 명령어
- shift + p : CPU 사용률 내림차순
- shift + m : 메모리 사용률 내림차순
- shift + t : 프로세스가 돌아가고 있는 시간 순
- k : kill, k 입력 후 PID 번호 작성, singal은 9
- f : sort file 선택화면 -> q 누르면 RES 순으로 정렬
- a : 메모리 사용량에 따라 정렬
- b : Batch 모드로 작동
- 1 : CPU Core 별로 사용량 보여줌
ps와 top의 차이점
- ps는 ps한 시점에 proc에서 검색한 cpu 사용량
- top은 proc에서 일정 주기로 합산해 cpu 사용율 출력
- top -b -n 1 수행 시에 출력되는 화면
- 36days, 22:26 : 서버가 구동된지 36일 22시간 26분이 되었음
- load average : 현재 시스템이 얼마나 일을 하는지를 나타냄, 3개의 숫자는 1분, 5분, 15분 간의 평균 실행 / 대기 중인 프로세스의 수, CPU 코어수 보다 적으면 문제 없음.
- Tasks : 프로세스의 갯수
- KiB Mem, Swap : 각 메모리의 사용량
- PR : 실행 우선 순위
- VIRT, RES, SHR : 메모리 사용량 => 메모리 누수 check 가능함.
- S : 프로세스 상태(작업중, I/O 대기, 유휴 상태 등)
VIRT, RES, SHR
메모리 사용량 값에 대한 설명
- 현재 프로세스가 사용하고 있는 메모리
- VIRT
- 프로세스가 사용하고 있는 virtual memory의 전체 총량
- 프로세스에 할당된 가상 메모리 전체
- SWAP + RES
- RES
- 현재 프로세스가 사용하고 있는 물리 메모리의 양
- 실제로 메모리에 올려서 사용하고 있는 물리 메모리
- 실제로 메모리를 쓰고 있는 RES가 핵심!!
- SHR
- 다른 프로세스와 공유하고 있는 shared memory의 양
- 예시로 라이브러리를 들 수 있음. 대부분의 리눅스 프로세스는 glibc라는 라이브러리를 참고하기에 이런 라이브러리를 공유 메모리에 올려서 사용