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_totaltaskstats.h のコメントには、これが壁時計の時間であることが明確に示されていますが、フィールドは CPU 時間を示していますか? これらのフィールドの合計が経過時間よりも大きい理由は何でしょうか?
私のカーネルのバージョンは 3.2.0-38 です。