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 秒ごとに繰り返しパターンが含まれていました。これにより、ファイルメタデータ(具体的には変更時間)が変更になったため、ハードディスクへの必要な物理的な書き込みが行われました。最後の修正は、アイコンの更新が発生していない場合に不要な呼び出しを防ぐことです。