리눅스의 'top' 명령어는 시스템의 실시간 성능을 모니터링하는 데 사용된다. 주로 CPU와 메모리 사용량을 확인하고, 프로세스들을 관리하는 데 유용하다.
기본적으로 'top' 명령어를 터미널에 입력하면 실시간으로 시스템 상태를 표시하는 대화형 화면이 나타난다.
top
- 사진 출처 https://sabarada.tistory.com/14
요약 영역은 top 상단에 위치하고 있다. 이 요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려준다.
1. 요약 정보
uptime | 시스템 부팅된 이후 시간(GMT 기준) |
users | 현재 로그인한 사용자 수 |
load average | 시스템의 평균 부하(1분, 5분, 15분 간격) |
load average 영역은 시스템의 부하를 측정하는 지표로, 특정 시간 동안 CPU에 의해 처리되고 있는 작업의 평균 수를 나타낸다. 각 숫자는 지난 1분, 5분, 15분 동안의 평균 부하를 나타낸다.
load average: 0.72, 0.85, 0.90
위 예제는 지난 1분간의 평균 부하가 0.72, 5분간의 평균 부하가 0.85, 15분간의 평균 부하가 0.90임을 나타낸다.
이를 해석할 때는 시스템의 CPU 코어 수와 비교하는 것이 중요하다.
단일 CPU 또는 단일 코어 시스템에서 1.0이면 CPU가 완전히 바쁘다는 것이다. 멀티 코어 시스템에서는 각 코어에 대해 1.0을 의미한다. 예를 들어 4코어 시스템에서 값이 4.0이라면 모든 코어가 완전히 사용되고 있음을 나타낸다.
0.0~1.0은 시스템이 비교적 여유롭고, 모든 작업을 제 때 처리할 수 있음을 의미한다.
1.0 이상이라면 CPU가 과부하 상태에 있으며, 작업이 지연될 가능성이 있음을 나타낸다. 예를 들어 4코어 시스템에서 값이 4.0을 넘으면 시스템이 과부하 상태라는 것을 의미한다.
예를 들어, 단일 코어 시스템에서 2.0은 CPU가 2배로 과부하가 걸렸다는 의미이다.(작업 대기열에 추가 작업이 있다는 것이다.)
부하 원인으로는 CPU 사용률이 높거나, I/O 작업이 병목을 일으키거나 메모리가 부족한 등 다양한 원인이 있다.
2. 작업 요약
Tasks | 현재 실행 중인 프로세스 수(Running, Sleeping, Stopped, Zombie) |
CPU(s) | CPU 사용률(us:사용자, sy:시스템, ni:nice, id:idle, wa:I/O wait, hi:하드웨어 인터럽트, si:소프트웨어 인터럽트, st:스틸타임) |
Mem | 물리적 메모리 사용량(total, free, used, buff/cache) |
Swap | 스왑 메모리 사용량(total, free, used, avail) |
CPU의 ni는 "nice" 값을 의미하며, 프로세스 우선 순위 조정에 사용된다. 값이 낮을수록 높은 우선 순위를 의미한다. ni값이 낮은 프로세스일수록 CPU 시간을 더 많이 할당받게 된다. 이 값을 변경하여 시스템의 작업 스케줄링을 조정할 수 있다.
id는 "idle" 값을 의미하며, CPU가 아무 일도 하지 않고 유휴 상태에 있는 시간을 나타낸다. id 값이 높을수록 CPU가 할 일이 없고 여유롭다는 것을 의미한다. 예를 들어 id 값이 90%라면 CPU의 90%가 유휴 상태이고, 10%만 사용되고 있다는 것이다.
3. 프로세스 목록
PID | 프로세스 ID |
USER | 프로세스를 실행한 사용자 |
PR | 프로세스 우선 순위 |
NI | nice 값 |
VIRT | 가상 메모리 사용량 |
RES | 실제 메모리 사용량 |
SHR | 공유 메모리 사용량 |
S | 프로세스 상태(S: SLEEP, R:RUN, Z:ZOMBIE, T:STOP) |
%CPU | CPU 사용률 |
%MEM | 메모리 사용률 |
TIME+ | 프로세스가 사용한 총 CPU 시간 |
COMMAND | 실행 중인 명령어 |
4. 주요 단축키
h | 도움말 화면 표시 |
q | top 종료 |
k | 특정 프로세스 종료(PID 입력 필요) |
r | 특정 프로세스 우선 순위 변경(renice) |
z | 색상/하이라이트 켜기/끄기 |
1 | 각 CPU 사용량 개별적 표시 |
'개발 > 리눅스' 카테고리의 다른 글
쉘(Shell), 쉘스크립트(Shell Script), 쉘명령어 정리 (0) | 2024.07.04 |
---|