2.3. Diskdevstat and netdevstat
Diskdevstat と netdevstat は、システム上で実行されているすべてのアプリケーションのディスクアクティビティーとネットワークアクティビティーに関する詳細情報を収集する SystemTap ツールです。これらのツールは、各アプリケーションによる 1 秒あたりの CPU ウェイクアップ数を表示する PowerTOP からインスピレーションを得たものです (「PowerTOP」)。これらのツールが収集する統計により、少数の大規模な操作ではなく、多くの小規模な I/O 操作で電力を浪費しているアプリケーションを特定できます。転送速度のみを測定する他の監視ツールは、このタイプの使用状況を特定するのに役立ちません。
root
として次のコマンドを使用して、SystemTap でこれらのツールをインストールします。
yum install tuned-utils-systemtap kernel-debuginfo
~]# yum install tuned-utils-systemtap kernel-debuginfo
次のコマンドでツールを実行します。
diskdevstat
~]# diskdevstat
またはコマンド:
netdevstat
~]# 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
- アプリケーションのプロセス 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
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 -p 2789
この例では、strace の出力には、ユーザーの KDE アイコンキャッシュファイルを書き込み用に開き、すぐにファイルを再度閉じるという 45 秒ごとの繰り返しパターンが含まれていました。これにより、ファイルのメタデータ (具体的には変更時刻) が変更されたため、ハードディスクへの物理的な書き込みが必要になりました。最後の修正は、アイコンが更新されていないときに不要な呼び出しが行われないようにすることでした。