Red Hat Training

A Red Hat training course is available for RHEL 8

41.2. SystemTap での各ファイルの読み取りまたは書き込みの I/O 時間の追跡

iotime.stp SystemTap スクリプトを使用して、各プロセスが任意のファイルへの読み取りまたは書き込みを行う場合にかかる時間を監視できます。これにより、システムへの読み込みに時間がかかっているファイルを判断する上で役立ちます。

前提条件

手順

  • iotime.stp スクリプトを実行します。

    # stap --example iotime.stp

    このスクリプトは、システムコールが開いたり、閉じたり、読み込みを行ったり、ファイルに書き込んだりするたびに追跡します。システムコールがアクセスするファイルごとに、読み取りもしくは書き込みが終了するまでの時間をマイクロ秒単位でカウントし、読み取りもしくは書き込みされたデータ量をバイト単位で追跡します。

    この出力には、以下が含まれます。

  • タイムスタンプ (マイクロ秒)
  • プロセス ID およびプロセス名
  • access フラグまたは iotime フラグ
  • アクセスしたファイル

    プロセスがデータの読み取りまたは書き込みが可能であった場合は、アクセス行と iotime 行のペアが一緒に表示されます。アクセス行は、指定したプロセスがファイルのアクセスを開始した時間を指します。アクセス行の末尾には、読み取りまたは書き込みのデータ量が表示されます。iotime の行には、プロセスが読み取りまたは書き込みを実行するのにかかった時間がマイクロ秒単位で表示されます。

iotime.stp スクリプトの出力は、以下のようになります。

[...]
825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
[...]
117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0
117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7
[...]
3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0
3973744 2886 (sendmail) iotime /proc/loadavg time: 11
[...]