taskstats 構造体の統計がどのように加算されているかを把握しようとしています。私は、IO と終了を実行してしばらく実行する単純な C プログラムを作成しました。taskstats ネットリンク マルチキャスト グループから取得した taskstats 構造体を使用して、このプログラムの統計情報を監視します。cpu_delay_total
、blkio_delay_total
、swapin_delay_total
、 、freepages_delay_total
の値を合計するac_utime
と、経過時間 ( )ac_stime
の値よりも約 0.5 秒大きい値が得られます。ac_etime
3.5 秒の実行の統計は次のとおりです。
ac_etime: 3536036
ac_utime: 172000
ac_stime: 3032000
cpu_delay_total: 792528445
blkio_delay_total: 46320128
swapin_delay_total: 0
freepages_delay_total: 0
遅延、utime、および stime の値を合計すると4042848.573
(遅延を 1000 で割ってマイクロ秒に変換します)、whileetime
は3536036
!
興味深いことに、壁時計の時間は実質的に utime+stime:cpu_run_real_total: 3204000129
に等しい値を示します。ac_utime + ac_stime: 3204000
cpu_run_real_total
taskstats.h のコメントには、これが壁時計の時間であることが明確に示されていますが、フィールドは CPU 時間を示していますか? これらのフィールドの合計が経過時間よりも大きい理由は何でしょうか?
私のカーネルのバージョンは 3.2.0-38 です。