其他过程如何影响使用“时间”进行的测量?

Nat*_*ong 7 performance time benchmark

如果我使用time命令对进程计时,我会得到“real”、“user”和“sys”的输出。

我从这次讨论中的理解是“真实”是墙壁时间,而“用户”和“系统”是进程时间。

这是否意味着“用户”和“系统”将不受其他进程的影响?换句话说,如果计算机处于其他进程的重负载或轻负载下,则可能需要更多的时间在挂钟上(“真实”)来完成我的进程。但是我的过程可能只需要 5 秒的运行时间,即使它分散了超过 20 秒的实际时间。

无论系统在做什么,我能保证我会被告知“5 秒用户时间”吗?

der*_*ert 7

不。进程/上下文切换不是免费的。

运行多少其他进程会减慢你的进程是非常依赖于系统的,但它包括以下内容:

  • 每次处理器切换到不同的地址空间(包括进程)时,都必须刷新 MMU 缓存。可能是处理器 L1 缓存。也许还有 L2 和 L3 缓存。这将在您的进程恢复后立即减慢内存访问(这会影响您的“用户”时间)。

  • 在 SMP(或多核)机器上,如果两个进程试图访问(物理)RAM 的相同部分,则处理器必须合作。这需要时间。它通常在体系结构级别完成,甚至低于操作系统。这将计入您的用户或系统时间,具体取决于它何时命中。

  • 快速内核锁定(实际上并没有安排另一个进程)将计入您的系统时间。这与上面的观点类似。

  • 在 NUMA 框上,您可能会被移动到不同的节点。内存访问现在可能是跨域的,因此速度较慢

  • 其他进程可能会影响电源管理决策。例如,钉住更多内核将降低 Intel Turbo Boost 速度,以将处理器封装保持在其电气和热规格内。即使没有涡轮增压,处理器也可能因过热而变慢。它也可以以另一种方式工作——更多的负载可能会导致 CPU 调速器提高 CPU 速度。

系统上还有其他共享资源;如果等待它们实际上并不涉及您的进程睡眠,那么它将被计入您的用户或系统时间。