2018年6月22日

/proc/1/io を見るとsystemdがすごくI/Oしてそうに見える件メモ

/proc/1/io を見ると systemdがI/O大量にやっている(ように見える)のが腑におちなくてちょっとしらべました。
task_io_accounting_add という関数があってioの集計情報を足すのですが
その関数がexit時によばれて子プロセスのio統計が親プロセスに加算されるようです。

linux-3.10.0-862.fc24.x86_64/kernel/exit.c
内で、
release_task → __exit_signal → task_io_accounting_add という順に呼ばれています。

動作を確認するため簡単に実験しました。bashからddを実行するとそのあとにwrite_bytesが100MiBくらい増えて統計情報だけみるとbashがI/Oしたかのようにみえるのがわかります。

snake:~$ cat /proc/$$/io
rchar: 4569105
wchar: 4335
syscr: 2875
syscw: 60
read_bytes: 0
write_bytes: 4096
cancelled_write_bytes: 0
 
snake:~$ dd if=/dev/zero of=/var/tmp/foo bs=1MiB count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0308119 s, 3.4 GB/s
 
snake:~$ cat /proc/$$/io
rchar: 109501412
wchar: 104862679
syscr: 3095
syscw: 249
read_bytes: 8192
write_bytes: 104861696
cancelled_write_bytes: 0

0 件のコメント:

コメントを投稿