documentation 여기서 설명하는 것 이상으로 유용한 command 및 nmon에서 출력하는 정보에 대한 내용이 써져 있으니 궁금하면 찾아보자.
System Activity Report의 약자다. Unix계열 OS에서 OS 관련 자원인 CPU 사용량, 메모리 활용도, I/O 장치 사용률, 네트워크, 디스크 사용률, 프로세스랑 쓰레드 할당, 배터리 성능(...), plug and play 장치 관련, file system등을 어떻게, 얼마나 활용하는지에 대해 파악하는데 유용하다.
이걸 실행하고 싶으면 먼저 설치를 해야 한다. Ubuntu 기준 밑을 수행.
$ sudo apt-get install sysstat
sar
command를 입력하진 말고, 다음 command를 수행할 필요가 있음$ systemctl start sysstat.service
$ systemctl start sysstat.service
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
systemd
가 아니라 init
인 경우에 이 문제가 발생한다.$ pstree
init─┬─init───init───sh───sh───sh───node─┬─node─┬─bash───pstree
│ │ └─11*[{node}]
│ ├─node───12*[{node}]
│ ├─node───11*[{node}]
│ └─10*[{node}]
├─2*[init───init───node───6*[{node}]]
└─{init}
$ pstree
systemd─┬─2*[agetty]
├─atop
├─atopacctd
├─cron
├─dbus-daemon
├─init-systemd(Ub─┬─SessionLeader───Relay(628)───bash───pstree
│ ├─init───{init}
│ ├─login───bash
│ └─{init-systemd(Ub}
├─networkd-dispat
├─rsyslogd───3*[{rsyslogd}]
├─snapd───23*[{snapd}]
├─5*[snapfuse]
├─subiquity-serve───python3.10─┬─python3
│ └─{python3.10}
├─systemd───(sd-pam)
├─systemd-journal
├─systemd-logind
├─systemd-resolve
├─systemd-udevd
└─unattended-upgr───{unattended-upgr}
$ systemctl start sysstat.service
systemctl이 뭐냐면, 어떤 'service'랑 관련된 명령어들을 말한다. 그러면 'service'가 뭐냐... 간단히 말해서 그냥 daemon이다. Daemon이 뭔지는 atop
관련 글에서 설명했으니 넘어가고, 여튼 이것들을 Linux에서 흔히 'service'라는 파일로 설정하며, 이것을 실행 및 관리하는 systemd
라는 process랑 관련된 명령어가 바로 systemctl
인 것이다.
여담으로 앞에서 systemd
로 init system이 실행되지 않았다는 오류가 나오는것도 이거랑 관련이 있는데, systemd
가 요즘 Linux에서 흔히 사용되는 PID가 1인 process인데, 이게 예전에는 init
process였기 때문이다. 옛날 것을 사용했어가지고 오류가 나왔던 것.
여튼 그래서 이제 되는가? 라고 물어보면 또 안된다(...?)
$ systemctl start sysstat.service
Failed to start sysstat.service: Interactive authentication required.
See system logs and 'systemctl status sysstat.service' for details.
sudo
를 붙이는 것이다.sudo systemctl start sysstat.service
sysstat.service
라는 녀석이 systemd
가 관리하에 수행이 되는 것이다. 여기서 수집한 data를 sar
이 활용하다보니 이를 수행하는 것은 필수.$ sar --help
sar
의 version을 출력한다. 정확히는 sysstat
의 version을 출력한다.$ sar -V
$ sar -u
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
19:30:42 LINUX RESTART (12 CPU)
19:40:12 CPU %user %nice %system %iowait %steal %idle
19:50:02 all 0.02 0.00 0.01 0.00 0.00 99.97
Average: all 0.02 0.00 0.01 0.00 0.00 99.97
$ sar -u 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
19:52:38 CPU %user %nice %system %iowait %steal %idle
19:52:40 all 0.04 0.00 0.00 0.00 0.00 99.96
19:52:42 all 0.00 0.00 0.04 0.00 0.00 99.96
19:52:44 all 0.04 0.00 0.00 0.00 0.00 99.96
19:52:46 all 0.00 0.00 0.00 0.00 0.00 100.00
19:52:48 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.02 0.00 0.01 0.00 0.00 99.97
$ sar -r
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
19:30:42 LINUX RESTART (12 CPU)
19:40:12 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
19:50:02 15331140 15548364 478544 2.93 6580 437752 991560 4.83 109216 542996 0
Average: 15331140 15548364 478544 2.93 6580 437752 991560 4.83 109216 542996 0
$ sar -r 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
19:58:39 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
19:58:41 15336540 15553924 472996 2.89 6708 437772 992472 4.83 110844 541840 0
19:58:43 15332440 15549824 477096 2.92 6708 437772 992472 4.83 110844 541648 0
19:58:45 15332372 15549756 477164 2.92 6708 437772 992472 4.83 110844 541852 0
19:58:47 15332372 15549756 477164 2.92 6708 437772 992472 4.83 110844 541852 0
19:58:49 15332372 15549756 477164 2.92 6708 437772 992472 4.83 110844 541852 0
Average: 15333219 15550603 476317 2.91 6708 437772 992472 4.83 110844 541809 0
$ sar -F 2 5
$ sar -d 1 3
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
20:55:26 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
20:55:27 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:27 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:27 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:27 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
20:55:28 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:28 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:28 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:28 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
20:55:29 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:29 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:55:29 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
$ sar -q 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:05:53 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
21:05:55 0 253 0.00 0.00 0.00 0
21:05:57 0 253 0.00 0.00 0.00 0
21:05:59 0 253 0.00 0.00 0.00 0
21:06:01 0 253 0.00 0.00 0.00 0
21:06:03 0 253 0.00 0.00 0.00 0
Average: 0 253 0.00 0.00 0.00 0
-u
랑 같지만, 특정 코어에 대해서만 이를 분석하는 것이다. 밑은 1번 코어에 대한 분석이다.$ sar -P 1 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:09:00 CPU %user %nice %system %iowait %steal %idle
21:09:02 1 0.00 0.00 0.00 0.00 0.00 100.00
21:09:04 1 0.00 0.00 0.00 0.00 0.00 100.00
21:09:06 1 0.00 0.00 0.00 0.00 0.00 100.00
21:09:08 1 0.00 0.00 0.00 0.00 0.00 100.00
21:09:10 1 0.00 0.00 0.00 0.00 0.00 100.00
Average: 1 0.00 0.00 0.00 0.00 0.00 100.00
$ sar -v 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:09:51 dentunusd file-nr inode-nr pty-nr
21:09:53 16276 1280 31543 2
21:09:55 16276 1280 31543 2
21:09:57 16276 1280 31543 2
21:09:59 16276 1280 31543 2
21:10:01 16276 1280 31543 2
Average: 16276 1280 31543 2
$ sar -S 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:15:22 kbswpfree kbswpused %swpused kbswpcad %swpcad
21:15:24 4194304 0 0.00 0 0.00
21:15:26 4194304 0 0.00 0 0.00
21:15:28 4194304 0 0.00 0 0.00
21:15:30 4194304 0 0.00 0 0.00
21:15:32 4194304 0 0.00 0 0.00
Average: 4194304 0 0.00 0 0.00
$ sar -b 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:19:08 tps rtps wtps dtps bread/s bwrtn/s bdscd/s
21:19:10 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:19:12 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:19:14 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:19:16 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:19:18 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sar -w 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:23:18 proc/s cswch/s
21:23:20 0.00 259.50
21:23:22 0.00 275.00
21:23:24 0.00 265.50
21:23:26 0.00 260.00
21:23:28 0.00 260.00
Average: 0.00 264.00
$ sar -B 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:25:13 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
21:25:15 0.00 0.00 1.50 0.00 16.00 0.00 0.00 0.00 0.00
21:25:17 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00
21:25:19 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:25:21 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:25:23 0.00 0.00 0.00 0.00 0.50 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.40 0.00 3.30 0.00 0.00 0.00 0.00
DEV
를 사용할건데, 네트워크 장치와 관련된 네트워크 관련 정보를 파악한다. 숫자를 넣으면 특정 주기로 총 몇번 통계를 낼지 지정 가능. 밑은 2초 주기로 총 5번 통계를 낸다.$ sar -n DEV 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:35:52 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21:35:54 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:54 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:54 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21:35:56 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:56 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:56 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21:35:58 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:58 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:35:58 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21:36:00 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:36:00 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:36:00 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21:36:02 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21:36:02 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
-o
옵션을 쓰도록 하자. 밑과 같이 하면 앞의 -u
option 예시를 result
에다가 저장한다. 저장 위치는 현재 working directory$ sar -o result -u 2 5
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:33:50 CPU %user %nice %system %iowait %steal %idle
21:33:52 all 0.00 0.00 0.04 0.00 0.00 99.96
21:33:54 all 0.00 0.00 0.04 0.00 0.00 99.96
21:33:56 all 0.00 0.00 0.00 0.00 0.00 100.00
21:33:58 all 0.08 0.00 0.04 0.00 0.00 99.88
21:34:00 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.02 0.00 0.02 0.00 0.00 99.96
-f
를 사용해 다음과 같이 한다.$ sar -f result
Linux 5.15.133.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID) 12/16/23 _x86_64_ (12 CPU)
21:33:50 CPU %user %nice %system %iowait %steal %idle
21:33:52 all 0.00 0.00 0.04 0.00 0.00 99.96
21:33:54 all 0.00 0.00 0.04 0.00 0.00 99.96
21:33:56 all 0.00 0.00 0.00 0.00 0.00 100.00
21:33:58 all 0.08 0.00 0.04 0.00 0.00 99.88
21:34:00 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.02 0.00 0.02 0.00 0.00 99.96