CPU 时间和 CPU 使用率有何相同之处?

CPU 时间和 CPU 使用率有何相同之处?

在 Wikipedia 页面中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使用率?

答案1

CPU 时间分配在离散的时间片(滴答声)。在一定数量的时间片中,CPU 处于忙碌状态,其他时间则不忙(由空闲进程表示)。下图中,CPU 忙碌了10 个 CPU 切片中的 6 个。6/10 = .60 = 60% 的繁忙时间(因此会有 40% 的空闲时间)。

在此处输入图片描述

A百分比定义为“将某事物的一定数量的部分划分为 100 个部分来表示的数字或比率”。因此,在这种情况下,这些部分是离散的时间片,事物是繁忙时间片与空闲时间片——繁忙时间片与空闲时间片的比率。

由于 CPU 以 GHz(每秒十亿个周期)运行。操作系统将时间分成更小的单位,称为“滴答”。它们实际上不是 1/10 秒。Windows 中的滴答速率是每秒 1000 万个刻度在Linux中也是如此sysconf(_SC_CLK_TCK)(通常为每秒100个刻度)。

在类似 中top,繁忙的 CPU 周期被进一步细分为用户时间和系统时间等百分比。在topLinux 和 Windows 中的 perfmon 中,您经常会看到超过 100% 的显示,这是因为总数是 100% * the_number_of_cpu_cores。

在操作系统中,它是调度程序作业将这些宝贵的片段分配给进程,因此调度程序会报告这一点。

答案2

CPU 时间是进程使用 CPU 的时间 - 将其转换为百分比是通过除以实际经过的时间量来完成的。

因此,如果我有一个进程在 2 秒的时间内使用了 1 秒的 CPU 时间,那么它就使用了 50% 的 CPU。

对于您的 MATLAB 进程,217% 表示它在上一个采样间隔内每秒使用 2.17 秒的 CPU 时间 - 实际上垄断了 2 个 CPU 核心并占用了三分之一。

相关内容