在Debian挤压/ xen的顶端vs vmstat

我在xen 4.0.1上运行一个完全卸载的DomU。 我注意到iostat和顶部之间的cpu状态有所不同:

顶部(在每一个iter):

Cpu0 : 0.2%us, 2.0%sy, 0.0%ni, 94.2%id, 2.7%wa, 0.0%hi, 0.0%si, 0.9%st 

iostat -x 3(第一个):

 avg-cpu: %user %nice %system %iowait %steal %idle 0.19 0.00 1.98 2.69 0.88 94.26 

iostat -x 3(随后的iters):

 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 

我是对的,如果我认为顶端显示累积百分比,而不是现在和现在1迭代之间的差异? 我知道顶部理解为累积模式,但这对我来说只应该影响进程显示,而不是CPU状态统计。

错误? 也许Xen相关?

问候

蒂姆

topvmstat (和其他类似的x stat你可以使用)从/proc/stat获取他们的信息尝试捕获该虚拟文件,你会看到整个CPU的计数器,加上每个硬件线程和其他一些线中断计数器。

你可以看到CPU的数字是系统在各种状态下启动后已经过的内核数目。

vmstat的第一个迭代只是基于对这些计数器的单次读取(其中,如您所说的基于累积计数)来显示相对百分比,top将在大约0.5秒内实际轮询计数器两次,然后再看到初始显示,所以当前比率的读数(可能稍微不准确)将是您首先看到的。

要确认,试试运行: strace -e open top |grep "/proc/stat" ,你会看到/proc/两个快速读取,后面是每个tick的后续读取。 这就是为什么你总是得到一个很短的延迟之前,顶部出现。

据我所知,内核没有跟踪用户空间程序立即访问增量的寄存器。 它用于平均负载,在不同时间间隔内保持“运行”进程计数的三个滚动平均值; 但CPU利用率没有任何相似之处。

所以:不是一个错误,而是devise。