리눅스 top 명령어(CPU, 메모리 점유율 확인)
리눅스 top 명령어는 구동 중인 OS의 상태를 보여주는 명령어이며 table of processes의 뜻을 가지고 있습니다. 총 메모리 사용량, CPU 사용량 등을 보여주며 각 프로세스의 구체적인 메모리와 CPU 사용량을 개별적으로 확인할 수 있습니다.
Ⅰ. 리눅스 top 명령어 기본 사용
top 명령어는 대부분 옵션 없이 사용하지만 일반적인 명령어와 동일하게 기본 사용은 옵션과 명령 인자로 이루어져 있습니다.
top -[옵션] [명령 인자]
1. top 명령어 기본 옵션
2. top 명령어 옵션 활용
top -b -n7
top -b -n7 > top_output
top -b -n7 | tee top_output
Ⅱ. top 명령어
top - 12:55:01 up 22:47, 1 user, load average: 0.06, 0.03, 0.01
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
MiB Mem : 1760.5 total, 1058.7 free, 530.2 used, 331.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1230.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
740 nobody 20 0 1079368 10796 5592 S 0.3 0.6 0:10.35 httpd
4005 root 20 0 0 0 0 I 0.3 0.0 0:01.50 kworker/0:0-events
1 root 20 0 103444 12844 9796 S 0.0 0.7 0:05.55 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 slub_flushwq
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
1. top 명령어 영역 설명
1.1 top 영역
uptime 명령어에서 나오는 옵션과 동일한 정보를 확인할 수 있습니다.
top - 14:08:25 up 38 days, 8:02, 1 user, load average: 1.70, 1.77, 1.68
1.2 tasks 영역
tasks 영역에서는 전체 기동 중인 total, running, sleeping, stopped, zombie 5가지의 프로세스 상태를 확인할 수 있습니다. 프로세스는 I/O 기반의 업무를 수행하며, 업무 수행 중에 CPU는 idle 타임(유휴 시간)에 들어갑니다.
1.3 Cpu(s): CPU 정보 확인
Cpu(s) 라인은 CPU가 현재 하고 있는 일에 대한 정보를 제공합니다. 3번째 라인에서 top 명령어로 cpu 사용률 확인하기를 할 수 있습니다.
리눅스에서 nice 및 renice 명령어는 실행 중인 프로세스의 우선 순위를 조정하는데 사용되며, 시스템 리소스가 다른 작업에 할당되는 방식을 제어할 수 있습니다.
프로세스 우선순위 지정(nice(or niceness) 및 renice)
1.4 메모리 정보
버퍼와 캐시 차이 : 버퍼는 데이터를 일시적으로 저장하는 공간을 나타내며, 캐시는 데이터를 더 빠르게 제공하기 위한 용도입니다.
완충 장치라는 사전적인 의미를 가진 Buffer에서 알 수 있듯이 버퍼는 데이터를 일시적으로 저장하는 공간을 나타내며, 주로 입출력(I/O) 작업에서 사용되며, 데이터를 한 곳에서 다른 곳으로 전송하는 동안 임시로 데이터를 저장하는 데 활용됩니다. 버퍼는 데이터를 모아서 한 번에 전송함으로써 효율성을 높이는 역할을 하며, 메모리를 회수할 때에는 버퍼에 저장된 데이터가 전송이 완료 후 발생합니다.
캐시는 주로 CPU나 메모리와 같이 빠른 속도의 장치에서 느린 속도의 장치로부터 데이터를 더 빠르게 제공하기 위한 용도로 사용되며, 캐시는 주로 읽기 연산에 대한 성능 향상을 위해 사용됩니다. 이미 읽은 데이터를 캐시에 저장해두어 나중에 동일한 데이터를 요청할 때 더 빠르게 제공할 수 있도록 합니다. 캐시에 저장된 데이터는 언제든지 필요에 따라 재사용될 수 있습니다.
1.5 top 프로세스의 필드 항목
프로세스(process) ID는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말합니다.
프로세스를 실행시킨 사용자 ID
프로세스의 우선순위(priority)
NI: nice 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
- 가상 메모리 크기(Virtual Memory Size), 키로바이트(Kib)
- 가상 메모리의 사용량(SWAP+RES)
- 상주 메모리 크기(Resident Memory Size) – 키로바이트(Kib)
- 현재 프로세스가 사용하고 있는 물리 메모리 양
상주 메모리는 스왑을 제외한 VIRT의 하위 집합입니다.
- 공유 메모리 크기 (Shared Memory Size), 키로바이트(KiB)
- 다른 프로세스와 공유하고 있는 공유 메모리의 양
공유 메모리는 다른 프로세스에서 사용할 수 있는 RES(상주 메모리)의 하위 집합니다.
- 프로세스 상태(Stat)
- R(Runable): 실행 대기 상태
- S(Sleeping): 수면 상태
- D(in Disk wait) 입·출력을 기다리는 상태
- T(sTopped): 멈춰 있거나 흔적이 남아 있는 상태
- Z(Zombie): 좀비 프로세스
- CPU 사용률
- 메모리 사용률
- 작업에 사용된 실제 메모리 양
- 작업이 시작된 이후 사용한 총 CPU 시간을 의미
- 명령어 이름 또는 명령어 라인
- 명령어 또는 관련 프로그램의 이름이 표시됨.