Windows 2012任务pipe理器vs Process Explorer,不同的CPU使用率,为什么?

我们有一台配有4个Intel Xeon E5-4617(6核)CPU的服务器。 我们正在使用它作为数据库服务器。

Windows 2012任务pipe理器在2个处理器中不显示CPU使用情况。 Process Explorer显示所有处理器的CPU使用情况,但是第四个处理器的3个内核的CPU使用率较低。

哪一个是正确的?

编辑: 截图 ,使用y-cruncher(多核Pi生成器)。

在这里输入图像说明在这里输入图像说明在这里输入图像说明

哪一个是正确的?

两者,可能。

尽pipe您从图表中获得的印象,资源使用不是连续轮询,而是以不连续的间隔进行轮询。 所以,这里发生的事情是,在某个时间点,任务pipe理器轮询CPU的使用情况,并得到答案。 一些毫秒后,Process Explorer轮询CPU的使用情况,并得到一个稍微不同的答案。

这是有道理的,因为它轮询的时间稍有不同,两种测量都可能是准确的,只是稍有不同。 我们可能没有注意到10毫秒的时间差,但是对于计算机来说还是很长的时间 – 一个3.8Ghz的处理器可以在这10毫秒内处理3,800万次操作,我们甚至无法察觉。 这里有一个有点相关的ServerFault博客如何轮询间隔可能会导致你错误的结论 。

事实上,如果Process Explorer看到的是Task Manager没有的小活动的原因,也不会让我感到意外,因为Process Explorer正在测量Task Explorer生成的CPU使用情况 – 轮询活动,相关计算和绘图都不是没有空闲,并消耗CPU资源来处理。

所以,这里有两件事情:

  1. 您正在测量不同的时间间隔,这对我们来说可能是不可感知的,但对于计算机来说实际上是相对较长的时间,其中可以发生许多活动,产生不同的,精确的测量结果。

  2. 衡量资源消耗的资源,可以通过哪个应用程序获取数据来检测资源。 就像量子力学中的观察者效应 – 观察或测量事件的行为改变了事件 – 测量资源利用率的行为利用了您要测量的相同资源。

基于新的灵感,我对一般情况的回答是不适用的。

你的问题是任务pipe理器没有在你的两个CPU / 12你的内核上运行指标。 这些图表是空的/空白的,而不是表示完全空闲的CPU。 当然,我不确定为什么这样做(尽pipe显然在文本输出中显示的是CPU的数量),或者你会怎么做来纠正它,但是这可以解释你看到的巨大差异。

所以,系统信息是正确的,因为它似乎实际上是绘制和测量所有CPU和CPU核心的CPU使用率。