Show Table of Contents
2.3. Diskdevstat と netdevstat
Diskdevstat と netdevstat は、システムで実行されているすべてのアプリケーションのディスク活動とネットワーク活動の詳細情報を収集する SystemTap ツールです。これらのツールは、各アプリケーションによる 1 秒あたりの CPU のウェイクアップ回数を示す PowerTOP を参考にしています (「PowerTOP」を参照)。これらのツールが収集する統計により、数多くの小規模な I/O 操作で電力を浪費するアプリケーションを特定できます。転送速度のみを測定する他の監視ツールでは、このような種類の使用量を特定できません。
SystemTap とともにこれらのツールをインストールするには、
root で以下のコマンドを実行します。
yum install tuned-utils-systemtap kernel-debuginfo
以下のコマンドでツールを実行します。
diskdevstat
あるいは、以下のコマンドを実行します。
netdevstat
これら両方のコマンドには、以下のように最大 3 つのパラメータを使用できます。
diskdevstat update_interval total_duration display_histogram
netdevstat update_interval total_duration display_histogram
- update_interval
- 表示が更新される秒単位の間隔。デフォルト値:
5 - total_duration
- 実行完了にかかる秒単位の時間。デフォルト値:
86400(1 日) - display_histogram
- 実行完了時に全収集データで度数分布図 (柱状グラフ) を作成するかどうかを指定するフラグ。
出力は PowerTOP の出力に似ています。以下は、実行された長い diskdevstat の出力例です。
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 5494 0 sda1 0 0.000 0.000 0.000 758 0.000 0.012 0.000 0logwatch 5520 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 5549 0 sda1 0 0.000 0.000 0.000 140 0.000 0.009 0.000 perl 5585 0 sda1 0 0.000 0.000 0.000 108 0.001 0.002 0.000 perl 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 5429 0 sda1 0 0.000 0.000 0.000 62 0.009 0.009 0.000 crond 5379 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5473 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5415 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5433 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5425 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5375 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5477 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5469 0 sda1 0 0.000 0.000 0.000 62 0.007 0.007 0.000 crond 5419 0 sda1 0 0.000 0.000 0.000 62 0.008 0.008 0.000 crond 5481 0 sda1 0 0.000 0.000 0.000 61 0.000 0.001 0.000 crond 5355 0 sda1 0 0.000 0.000 0.000 37 0.000 0.014 0.001 laptop_mode 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd 5575 0 sda1 0 0.000 0.000 0.000 16 0.000 0.000 0.000 cat 5581 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5582 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5579 0 sda1 0 0.000 0.000 0.000 12 0.000 0.001 0.000 perl 5580 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5354 0 sda1 0 0.000 0.000 0.000 12 0.000 0.170 0.014 s h 5584 0 sda1 0 0.000 0.000 0.000 12 0.001 0.002 0.000 perl 5548 0 sda1 0 0.000 0.000 0.000 12 0.001 0.014 0.001 perl 5577 0 sda1 0 0.000 0.000 0.000 12 0.001 0.003 0.000 perl 5519 0 sda1 0 0.000 0.000 0.000 12 0.001 0.005 0.000 perl 5578 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5583 0 sda1 0 0.000 0.000 0.000 12 0.001 0.001 0.000 perl 5547 0 sda1 0 0.000 0.000 0.000 11 0.000 0.002 0.000 perl 5576 0 sda1 0 0.000 0.000 0.000 11 0.001 0.001 0.000 perl 5518 0 sda1 0 0.000 0.000 0.000 11 0.000 0.001 0.000 perl 5354 0 sda1 0 0.000 0.000 0.000 10 0.053 0.053 0.005 lm_lid.sh
各列の内容は、以下のとおりです。
- PID
- アプリケーションのプロセス ID
- UID
- アプリケーションの実行元となるユーザー ID
- DEV
- I/O が発生したデバイス
- WRITE_CNT
- 書き込み操作の合計数
- WRITE_MIN
- 2 回の連続書き込みに要した最短時間 (秒単位)
- WRITE_MAX
- 2 回の連続書き込みに要した最長時間 (秒単位)
- WRITE_AVG
- 2 回の連続書き込みに要した平均時間 (秒単位)
- READ_CNT
- 読み込み操作の合計数
- READ_MIN
- 2 回の連続読み込みに要した最短時間 (秒単位)
- READ_MAX
- 2 回の連続読み込みに要した最長時間 (秒単位)
- READ_AVG
- 2 回の連続読み込みに要した平均時間 (秒単位)
- COMMAND
- プロセスの名前
この例には、非常に目立つアプリケーションが 3 つあります。
PID UID DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND 2789 2903 sda1 854 0.000 120.000 39.836 0 0.000 0.000 0.000 plasma 2573 0 sda1 63 0.033 3600.015 515.226 0 0.000 0.000 0.000 auditd 2153 0 sda1 26 0.003 3600.029 1290.730 0 0.000 0.000 0.000 rsyslogd
これらの3つのアプリケーションでは、
WRITE_CNT が0 よりも大きいため、測定中になんらかの書き込みが実行されたことを意味します。その中でも、plasma は他と大差をつけて一番高い数値を示しています (最多の書き込み操作が実行されるため、当然書き込み間隔の平均時間は最短となります)。したがって、電力効率の悪いアプリケーションについて懸念がある場合は、Plasma が最有力候補になります。
strace コマンドと ltrace コマンドを使用して、所定のプロセス ID のすべてのシステムコールを追跡することによりアプリケーションをさらに詳しく調べることができます。この例では、以下のコマンドを実行できます。
strace -p 2789
この例では、
strace の出力には、ユーザーの KDE アイコンのキャッシュファイルを書き込みのため開き、直後にそのファイルを再び閉じるという動作が 45 秒毎に繰り返されるパターンが含まれていました。これにより、ファイルのメタデータ (特に変更時間) が変更されたため、必要な物理的な書き込みがハードディスクに行われました。最終的な修正では、アイコンに更新が加えられなかった場合に、こうした不要な呼び出しが発生しないようになりました。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.