CPU时间和CPU使用情况如何?

在维基百科页面上显示CPU时间

CPU时间以时钟刻度或秒为单位进行测量。 通常,测量CPU时间占CPU容量的百分比(称为CPU使用率)很有用。

我不明白如何用一个百分比来代替一段时间。 当我看到top ,不是%CPU告诉我, MATLAB正在使用我的核心的2.17?

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18118 jasl 20 0 9248400 261528 78676 S 217.2 0.1 8:14.75 MATLAB 

为了更好地理解CPU使用情况,我该如何计算CPU使用率?

CPU时间分配在不连续的时间片(滴答)中。 对于一定数量的时间片,CPU是繁忙的,而其他时间则不是(这是由空闲进程表示的)。 在下面的图片中,CPU占用了10个CPU片中的6片。 6/10 = 0.60 =繁忙时间的60% (因此空闲时间为40%)。

在这里输入图像描述

一个百分比被定义为“一个数字或比率,表示为一定数量的东西分成100份”。 所以在这种情况下,这些部分是离散的时间片,忙时间片vs空闲时间片 – 忙到空闲时间片的速率。

由于CPU工作在GHz(十亿分之一秒)。 操作系统以更小的单位进行切片,称为刻度。 他们不是十分之一秒。 windows中的滴答速率是每秒1000万个滴答 ,在Linux中是sysconf(_SC_CLK_TCK) (通常是每秒100 sysconf(_SC_CLK_TCK) )。

top东西,繁忙的cpu周期,然后进一步细分成诸如用户时间和系统时间的百分比。 在Linux和Windows上的perfmon中,您通常会获得超过100%的显示,这是因为总数是100%* the_number_of_cpu_cores。

在一个操作系统中, 调度程序的工作是将这些宝贵的片分配给进程,所以调度程序就是这样报告的。

CPU时间是进程使用CPU的时间 – 将其转换为一个百分比是通过除以实时数量来完成的。

所以,如果我有一个在2秒的时间内使用1秒的CPU时间的进程,它使用了CPU的50%。

在你的MATLAB过程的情况下,217%表示它在最后一个采样间隔中每秒使用2.17秒的CPU时间 – 有效地垄断了2个CPU核心并占用了三分之一的CPU时间。