일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- grub
- 우분투패스워드초기화
- nvidia
- 도커
- Cat
- 우분투 22.04 패스워드 초기화
- sudoer
- 모니터링
- nvidia-docker
- docker
- netplan
- A100
- python
- 패스워드초기화
- Ubuntu 22.04
- 리눅스 기본명령어
- ifconfig
- CUDA
- 엔비디아 도커
- uname
- dmesg
- TensorFlow
- 도커 설치
- passwd
- NGC
- ethtool
- sysstat
- 우분투
- TAIL
- V100
- Today
- Total
또이리의 Server Engineer
리눅스 top 명령어 본문
리눅스 top 명령어
리눅스 top 명령어 설명
리눅스의 top 명령어에 대해서 정리해 보겠습니다.
top 명령어를 사용해서 프로세스의 정보들을 알아보겠습니다.
우선 top를 한번 입력하고 엔터를 쳐보겠습니다.
아래와 같은 화면이 일정 시간을 주기로 갱신되며 출력되는 것을 확인할 수 있습니다.
root@ubuntu:~# top
top - 21:16:04 up 0 min, 2 users, load average: 0.97, 0.32, 0.11
top - 21:16:47 up 1 min, 2 users, load average: 0.49, 0.28, 0.10
Tasks: 191 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 985340 total, 264968 free, 159428 used, 560944 buff/cache
KiB Swap: 969960 total, 969960 free, 0 used. 674472 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 77616 8724 6668 S 0.0 0.9 0:01.88 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/u256:0
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
7 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
8 root 20 0 0 0 0 I 0.0 0.0 0:00.04 rcu_sched
9 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
14 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
15 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
16 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/1
17 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0
18 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_kthre
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd
23 root 20 0 0 0 0 I 0.0 0.0 0:00.02 kworker/1:1
24 root 20 0 0 0 0 I 0.0 0.0 0:00.08 kworker/0:1
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper
27 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0
29 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
30 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged
31 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 crypto
32 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kintegrityd
33 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd
34 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ata_sff
35 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 md
36 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 edac-poller
37 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 devfreq_wq
38 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 watchdogd
39 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/u256:1
41 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
42 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/u257:0
43 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ecryptfs-kthrea
85 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kthrotld
86 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 acpi_thermal_pm
87 root 20 0 0 0 0 S 0.0 0.0 0:00.02 scsi_eh_0
88 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_0
89 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_1
90 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 scsi_tmf_1
91 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/u256:2
92 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/u256:3
96 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 ipv6_addrconf
top
시스템의 상태를 전반적으로 가장 빠르게 파악 가능합니다.(CPU, Memory, Process)
옵션 없이 top만 입력하면 interval 간격(기본 3초)으로 화면을 갱신하며 정보를 출력하여 보여줍니다.
top 실행 전 옵션
순간의 정보를 확인하려면 -b 옵션(batch 모드) 화면이 갱신되지 않고, top 명령 실행 시점의 정보를 출력합니다.
-n : top 실행 주기 설정(반복 횟수) 옵션 뒤에 숫자를 붙여주면 됩니다.
top 실행 후 키 옵션
shift + p : CPU 사용률 내림차순 정렬
shift + m : 메모리 사용률 내림차순 정렬
shift + t : 프로세스가 작동된 시간 순
k : kill. k 입력 후 PID 번호 작성. signal은 9
f : sort field 선택 화면 -> q 누르면 RES순으로 정렬
a : 메모리 사용량에 따라 정렬
b : Batch 모드로 작동
1 : CPU Core별로 사용량 출력
ps와 top의 차이점
ps는 ps 한 시점 proc에서 검색한 CPU 사용률
top은 proc에서 일정 주기로 합산한 CPU 사용률
top -b -n 1 명령어를 입력합니다. 옵션의 의미를 알 수 있습니다.
화면이 갱신되지 않고 한 타임으로 출력이 끝이 납니다.(아래 코드 블록은 편집 한 출력 화면입니다.)
명령 프롬프트가 마지막에 보입니다.
root@ubuntu:~# top -b -n 1
top - 21:32:36 up 17 min, 2 users, load average: 0.00, 0.01, 0.02
Tasks: 160 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.6 sy, 0.1 ni, 98.9 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 985340 total, 263592 free, 158480 used, 563268 buff/cache
KiB Swap: 969960 total, 969960 free, 0 used. 675284 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 77616 8724 6668 S 0.0 0.9 0:01.89 systemd
478 root 19 -1 102992 29368 28672 S 0.0 3.0 0:00.20 systemd-journal
496 root 20 0 97708 1756 1584 S 0.0 0.2 0:00.00 lvmetad
502 root 20 0 48384 7128 3136 S 0.0 0.7 0:00.78 systemd-udevd
533 systemd+ 20 0 141932 3208 2680 S 0.0 0.3 0:00.02 systemd-timesyn
538 systemd+ 20 0 71852 5308 4708 S 0.0 0.5 0:00.09 systemd-network
552 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 bond0
574 systemd+ 20 0 70768 5348 4792 S 0.0 0.5 0:00.02 systemd-resolve
616 root 20 0 91152 10680 9208 S 0.0 1.1 0:00.02 VGAuthService
618 root 20 0 218148 6512 5596 S 0.0 0.7 0:00.57 vmtoolsd
621 message+ 20 0 50060 4356 3740 S 0.0 0.4 0:00.02 dbus-daemon
629 root 20 0 95540 1544 1416 S 0.0 0.2 0:00.00 lxcfs
631 syslog 20 0 263040 4848 3552 S 0.0 0.5 0:00.02 rsyslogd
632 root 20 0 70592 5992 5252 S 0.0 0.6 0:00.01 systemd-logind
669 root 20 0 170392 17240 9484 S 0.0 1.7 0:00.08 networkd-dispat
671 root 20 0 287548 6764 5888 S 0.0 0.7 0:00.03 accounts-daemon
672 root 20 0 110548 2092 1872 S 0.0 0.2 0:00.05 irqbalance
673 daemon 20 0 28332 2348 2140 S 0.0 0.2 0:00.00 atd
698 root 20 0 31320 3188 2908 S 0.0 0.3 0:00.00 cron
738 root 20 0 288884 6508 5716 S 0.0 0.7 0:00.01 polkitd
778 root 20 0 187236 20084 12180 S 0.0 2.0 0:00.05 unattended-upgr
939 root 20 0 72300 5696 4968 S 0.0 0.6 0:00.00 sshd
984 root 20 0 78768 3640 3076 S 0.0 0.4 0:00.01 login
1420 root 20 0 76620 7412 6404 S 0.0 0.8 0:00.01 systemd
1426 root 20 0 109300 2196 4 S 0.0 0.2 0:00.00 (sd-pam)
1446 root 20 0 22652 4896 3372 S 0.0 0.5 0:00.01 bash
1475 root 20 0 106044 7420 6248 S 0.0 0.8 0:00.10 sshd
1490 root 20 0 105696 6984 5996 S 0.0 0.7 0:00.01 sshd
1646 root 20 0 13060 2200 2044 S 0.0 0.2 0:00.00 sftp-server
1652 root 20 0 22652 5012 3428 S 0.0 0.5 0:00.05 bash
1779 root 20 0 0 0 0 I 0.0 0.0 0:00.51 kworker/u256:0
1796 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0
1814 root 20 0 44108 3996 3424 R 0.0 0.4 0:00.00 top
root@ubuntu:~#
상단의 시간 - 현재시간 up 17 min 현재 시간과 서버가 작동된 시간 17분
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라는 라이브러리를 참고하기 때문에 이런 라이브러리를 공유 메모리에 올려서 사용합니다.
Memory Commit
프로세스가 커널에게 필요한 메모리를 요청하면 커널은 프로세스에 메모리 영역을 주고 실제로 할당은 하지 않지만 해당 영역을 프로세스에게 주었다는 것을 저장해놓습니다.
이런 과정을 Memory commit이라 부릅니다.
프로세스 상태
SHR 옆에 있는 S 항목으로 볼 수 있습니다.
D : Uninterruptiable sleep. 디스크 혹은 네트워크 I/O를 대기
R : 실행 중(CPU 자원을 소모)
S : Sleeping 상태, 요청한 리소스를 즉시 사용 가능
T : Traced or Stopped. 보통의 시스템에서 자주 볼 수 없는 상태
Z : zombie. 부모 프로세스가 죽은 자식 프로세스
'Linux Engineer' 카테고리의 다른 글
sudo 권한 부여하기, 리눅스 su su - 차이 (0) | 2020.11.21 |
---|---|
apt-get 과 apt 차이점 (0) | 2020.11.20 |
netplan bonding 우분투 본딩 (0) | 2020.11.18 |
우분투 멀티 IP - 다중 IP 설정 (0) | 2020.11.17 |
우분투 아나콘다 설치 - 삭제 anaconda install (0) | 2020.11.16 |