Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.3. Diskdevstat および netdevstat

Diskdevstat および netdevstat は、システムで実行している全アプリケーションのディスクアクティビティーとネットワークアクティビティーに関する詳細情報を収集する SystemTap ツールです。これらのツールは、PowerTOP により提供され、毎秒各アプリケーションによる 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 run からの出力例です。
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 つのアプリケーションには 0 よりも大きな WRITE_CNT が 0 を超えています。これは、測定中に何らかの書き込み形式を実行したことを意味します。これら これらでは、plasma は最も大きな書き込み動作で実行され、書き込み間の平均時間が最小限に抑えられていました。したがって、電力効率の非効率のアプリケーションについて懸念するのは、Plasma が最適です。
strace コマンドおよび ltrace コマンドを使用して、指定のプロセス ID のすべてのシステムコールを追跡することで、アプリケーションをより密接に確認します。この例では、以下を実行できます。
~]# strace -p 2789
この例では、strace の出力に、ユーザーの KDE アイコンキャッシュファイルを開いた 45 秒ごとに繰り返しパターンが含まれており、その後ファイルを再度閉じます。これにより、ファイルのメタデータ(特に変更時間)がハードディスクに必要な物理書き込みが行われました。最終の修正は、アイコンへの更新が行われなかった場合に不要な呼び出しを防ぐために生じました。