iotopIch habe immer wieder Performance-Probleme mit meinem I/O System (spinning disk, hdd). Daher ziehe ich zur Problemanalyse öfters mal das Linux Tool iotop zu Rate:
$ apt install iotop
$ iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 23.87 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 94.23 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
252 be/3 root 0.00 B/s 11.31 K/s 0.00 % 0.00 % [jbd2/sdb1-8]
879 be/3 root 0.00 B/s 11.31 K/s 0.00 % 0.00 % [jbd2/sdb3-8]
33639 be/4 mysql 0.00 B/s 1286.49 B/s 0.00 % 0.00 % bin/mariadbd --datadir=/home/mysql/database/mariadb-114/data
...
CONFIG_TASK_DELAY_ACCT and kernel.task_delayacct sysctl not enabled in kernel, cannot determine SWAPIN and IO %
Die unterste Zeile gibt eine Warnung aus: Die Spalten SWAPIN und IO sind immer null.
Man kann diese Kernel-Einstellung dynamisch ändern:
$ sudo sysctl kernel.task_delayacct=1
Diese gilt für alle Prozesse, die nach der Änderung neu gestartet werden. Es kann ein weilchen dauern, bis sie aktiv wird. Gegebenenfalls iotop stoppen, etwas warten und dann neu starten.
Persistieren geht auf DEB basierten Systemen wie folgt:
$ sudo echo 'kernel.task_delayacct=1' >>/etc/sysctl.d/90-shinguz.conf
Anschliessend sollte der Service neu gestartet werden:
$ sudo service procps start
ACHTUNG: Die Aktivierung dieser Kernel-Einstellung kann auf Kosten der Systemperformance gehen. Das iotop Monitoring selbst geht auch schon zu Lasten der CPU (top):
top - 15:56:43 up 17:19, 1 user, load average: 0.66, 0.67, 0.97
Tasks: 404 total, 1 running, 403 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.7 us, 0.9 sy, 0.0 ni, 95.1 id, 2.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15674.9 total, 4183.2 free, 5552.8 used, 6637.0 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 10122.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
61503 root 20 0 32076 20736 9216 S 6.3 0.1 0:33.78 iotop
3454 mysql 20 0 3978432 627052 41104 S 0.7 3.9 0:11.43 mysqld
4108 mysql 20 0 1957752 435524 46968 S 0.7 2.7 0:10.69 mysqld
75252 oli 20 0 4451236 541724 257692 S 0.7 3.4 0:23.30 firefox
3894 mysql 20 0 2621560 286524 26048 S 0.3 1.8 0:23.00 mariadbd
Quellen:
Man kann sehen, dass zwei verschiedene MariaDB Datenbank Instanzen am Laufen sind und ob Systemthreads die Last verursachen oder Userthreads (one_connection).
Total DISK READ: 0.00 B/s | Total DISK WRITE: 953.47 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 278.78 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
252 be/3 root 0.00 B/s 216.41 K/s 0.00 % 0.00 % [jbd2/sdb1-8]
314 be/3 root 0.00 B/s 692.51 K/s 0.00 % 0.00 % systemd-journald
884 be/3 root 0.00 B/s 2.55 K/s 0.00 % 0.00 % [jbd2/sda1-8]
1263 be/4 syslog 0.00 B/s 31.82 K/s 0.00 % 0.00 % rsyslogd -n -iNONE [rs:main Q:Reg]
22375 be/4 mysql 0.00 B/s 1303.54 B/s 0.00 % 0.00 % bin/mariadbd --datadir=/home/mysql/database/dwh/data [one_connection]
22380 be/4 mysql 0.00 B/s 5.09 K/s 0.00 % 0.00 % bin/mariadbd --datadir=/home/mysql/database/dwh/data [one_connection]
4077 be/4 mysql 0.00 B/s 2.55 K/s 0.00 % 0.00 % bin/mariadbd --datadir=/home/mysql/database/mariadb-114/data
33639 be/4 mysql 0.00 B/s 1303.54 B/s 0.00 % 0.00 % bin/mariadbd --datadir=/home/mysql/database/mariadb-114/data
Das (gleichzeitige) Starten von Thunderbird und Firefox verursacht heftige Systemlast (bis zu 100% IO). Es ist mir schon öfter aufgefallen, dass Thunderbird beim Starten SEHR I/O intensiv sein kann.
Jetzt, mit aktivierter task_delayacct Einstellung sehen wir auch, wer wieviel Prozent der I/O-Last macht.
Total DISK READ: 5.51 M/s | Total DISK WRITE: 862.20 K/s
Current DISK READ: 8.22 M/s | Current DISK WRITE: 777.60 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
62967 be/4 oli 4.45 M/s 26.13 K/s 0.00 % 36.81 % thunderbird
62992 be/4 oli 0.00 B/s 10.35 M/s 0.00 % 21.49 % firefox [glean.dispatche]
63206 be/4 oli 21.15 K/s 0.00 B/s 0.00 % 9.01 % thunderbird [Cache2 I/O]
63007 be/4 oli 216.48 K/s 0.00 B/s 0.00 % 5.55 % thunderbird [Socket Thread]
63210 be/4 oli 14.93 K/s 4.98 K/s 0.00 % 1.61 % thunderbird [BgIOThr~Pool #1]
63347 be/4 oli 517.57 K/s 0.00 B/s 0.00 % 1.50 % thunderbird [StreamTrans #10]
63365 be/4 oli 36.08 K/s 0.00 B/s 0.00 % 1.02 % thunderbird [WRScene~ilder#1]
63694 be/4 oli 135.61 K/s 0.00 B/s 0.00 % 0.91 % thunderbird [StreamTrans #27]
63304 be/4 oli 21.15 K/s 0.00 B/s 0.00 % 0.30 % thunderbird [TaskCon~ller #0]
63333 be/4 oli 39.81 K/s 0.00 B/s 0.00 % 0.29 % thunderbird [ImageIO]
63319 be/4 oli 65.94 K/s 4.98 K/s 0.00 % 0.14 % thunderbird [Renderer]
62977 be/4 oli 11.20 K/s 67.18 K/s 0.00 % 0.08 % thunderbird [glean.dispatche]
252 be/3 root 0.00 B/s 528.77 K/s 0.00 % 0.00 % [jbd2/sdb1-8]
314 be/3 root 0.00 B/s 196.58 K/s 0.00 % 0.00 % systemd-journald
1263 be/4 syslog 0.00 B/s 2.49 K/s 0.00 % 0.00 % rsyslogd -n -iNONE [rs:main Q:Reg]