我想弄清楚taskstats結構中的統計信息如何加起來。我寫了一個簡單的C程序,它運行一段時間並執行IO並退出。我使用taskstats結構來監視這個程序的統計信息,我從taskstats netlink多播組中獲得這個結構。當我總結的cpu_delay_total
,blkio_delay_total
,swapin_delay_total
,freepages_delay_total
,ac_utime
和ac_stime
的值,得到了一個值,該值比所經過的時間的值大約0.5秒(ac_etime
)taskstats stats not add up
這裏有一個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的延遲轉換到微秒),而etime
只有3536036
!
有趣的是,掛鐘時間給出了實際上等於UTIME + STIME值:cpu_run_real_total: 3204000129
,而ac_utime + ac_stime: 3204000
是否cpu_run_real_total
領域給予的CPU時間,儘管在taskstats.h評論明確指出,這是一個掛鐘時間?這些字段的總和大於經過時間的原因是什麼?
我的內核版本是3.2.0-38。