CPU 秒的定义?

CPU 秒的定义?

我完全支持这个话题。

昨天,我正在对正在编写的某个脚本进行分析,所花费时间的单位是“CPU秒'。有人能提醒我它的定义吗?

例如我得到的一些分析结果:200.750 CPU 秒。这是什么意思?在其他情况下,对于耗时的过程,我得到了:-347.977 CPU 秒,一个负数!

有什么方法可以让我将该时间转换为日历时间吗?

干杯,

答案1

CPU 秒是指 CPU 上的一秒钟的时间。

进程执行时间有两种测量方式:

  • CPU 时间,即 CPU 积极运行该进程所花费的时间;以及
  • 挂钟时间,或者从开始该过程到该过程结束所经过的时间量。

假设只有一个 CPU 核心,它们的关系如下:

(Wall time) - (CPU time) = (time the CPU spent doing other things)

举一个简单的例子,如果你运行一个进程,它需要 10 秒,但你得到的测量结果是 7 CPU 秒,那么在这 10 秒内,CPU 花了 3 秒来做​​除了执行你的进程之外的事情。

CPU 时间通常分为两种类型:

  • “系统”或“内核”时间,即内核为你的进程执行操作所花费的时间——运行 I/O、计时器、互斥锁等等
  • “用户”时间,或由用户空间中的进程运行的执行

例如:

$ time sleep 1

real    0m1.005s
user    0m0.000s
sys     0m0.002s

在这种情况下,我们休眠了一秒钟。系统在内核空间中花费了 2/1000 秒,可能为我们设置了计时器和中断,没有在用户空间中花费任何时间,整个过程耗时 1.005 秒,这意味着在这段时间内,计算机除了处理我们的进程之外还花费了额外的 0.003 秒来做​​其他事情。

我首先要弄清楚的是,为什么 CPU 时间会得到一个明显负数。

答案2

用 UNIX 术语来说,CPU 秒是用户时间加上进程本身的系统时间,而不是实际(挂钟)时间和子进程所花费的时间。

几年前,我在 AMD 双核 CPU 下看到了一些奇怪的负 CPU 时间。有一个处理器驱动程序更新解决了这个问题。基本上,两个处理器之间的时间发生了偏移,并导致了负 CPU 时间和负 ping 时间等问题。

答案3

“CPU 秒”是指运行进程或线程的一秒 CPU 周期。您可以将其除以 CPU 使用率,将其转换为实际时间:

15 CPU 秒/50% CPU 使用率 = 30 墙秒

负的 CPU 时间是测量过程中的故障,可能是溢出。

相关内容