Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
2.3. Diskdevstat and netdevstat
diskdevstat および netdevstat は、システムで実行しているすべてのアプリケーションのディスクアクティビティーとネットワークアクティビティーに関する詳細情報を収集する SystemTap ツールです。これらのツールは PowerTOP の影響を受けていました。これは、1 秒あたりの各アプリケーションによる CPU ウェイクアップの数を示しています( 「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 回の連続読み取りにかかる平均時間(秒単位)
- コマンド
- プロセスの名前
この例では、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 つのアプリケーションには
0
より大きい WRITE_CNT
があります。つまり、測定中に何らかの書き込みを実行します。この中で、plasma は、ほとんどの書き込み操作を実行し、当然ながら書き込みの平均時間が最低限であったのが最悪であったのが最悪です。したがって、Plasma は、電力効率の高いアプリケーションについて懸念しているかどうかを調査する上で最善の候補となります。
strace コマンドおよび ltrace コマンドを使用して、指定のプロセス ID のすべてのシステムコールを追跡することで、アプリケーションをより密接に検証します。以下の例では、以下を実行できます。
~]# strace -p 2789
この例では、strace の出力に、書き込みのためにユーザーの KDE アイコンキャッシュファイルを開き、その後にファイルの即時に閉じた 45 秒ごとに繰り返しパターンが含まれていました。これにより、ファイルメタデータ(具体的には変更時間)が変更になったため、ハードディスクへの必要な物理的な書き込みが行われました。最後の修正は、アイコンの更新が発生していない場合に不要な呼び出しを防ぐことです。