2.3. Diskdevstat and netdevstat
Diskdevstat と netdevstat は、システム上で実行されているすべてのアプリケーションのディスクアクティビティーとネットワークアクティビティーに関する詳細情報を収集する SystemTap ツールです。これらのツールは、各アプリケーションによる 1 秒あたりの CPU ウェイクアップ数を表示する PowerTOP からインスピレーションを得たものです (「PowerTOP」)。これらのツールが収集する統計により、少数の大規模な操作ではなく、多くの小規模な I/O 操作で電力を浪費しているアプリケーションを特定できます。転送速度のみを測定する他の監視ツールは、このタイプの使用状況を特定するのに役立ちません。
root
として次のコマンドを使用して、SystemTap でこれらのツールをインストールします。
~]# 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
より大きく、これは測定中に何らかの形式の書き込みを実行したことを意味します。それらの中で、プラズマは かなりの程度で最悪の攻撃者でした。プラズマは最も多くの書き込み操作を実行し、当然ながら書き込み間の平均時間は最も短かったのです。したがって、電力効率の悪いアプリケーションが懸念される場合には、プラズマ が調査対象となる最適な候補となります。
strace および ltrace コマンドを使用すると、指定されたプロセス ID のすべてのシステムコールをトレースすることで、アプリケーションをより詳細に検査できます。現在の例では、次を実行できます。
~]# strace -p 2789
この例では、strace の出力には、ユーザーの KDE アイコンキャッシュファイルを書き込み用に開き、すぐにファイルを再度閉じるという 45 秒ごとの繰り返しパターンが含まれていました。これにより、ファイルのメタデータ (具体的には変更時刻) が変更されたため、ハードディスクへの物理的な書き込みが必要になりました。最後の修正は、アイコンが更新されていないときに不要な呼び出しが行われないようにすることでした。