即使在多任务处理时,添加用户时间+系统时间(来自shell的时间命令)也是可靠的措施吗?

时间:2017-07-30 21:45:06

标签: c++ benchmarking

我知道用户时间处理CPU时间因此它不受时间共享的影响,因为它可以在我们的进程拥有自己的CPU时测量CPU操作的数量。 但是,如果多个进程正在进行I / O,系统时间是否会减慢?

1 个答案:

答案 0 :(得分:0)

有三种方法很容易获得

  1. 墙上时间 - 已经过了多长时间。
  2. 内核时间 - 系统代表您做了多少工作
  3. 用户时间 - 代码运行的时间。
  4. 这些有助于讲述一个故事,但不是一个完整的故事。通常,系统以特殊方式解释这些问题。它允许你的程序在cpu核心上运行一段固定的时间。

    当该时间过去时,它会停止您的程序,并检查是否还有其他事情要做。如果没有其他内容,您的程序将重新开始。

    从常用操作系统(Windows,unix)获得的用户和系统时间的值基本上是系统到达量程结束的次数,并在用户模式代码中找到您的程序(用户)时间),或内核代码(内核时间)。

    因此,用户/系统测量的时间是对花费的时间的估计,而不是准确的测量。

    如果您执行I / O或产生量子(例如调用sleep),那么系统将不会考虑您花费的任何时间,并假设您几乎所有量子都处于空闲状态,并且没有时间考虑您的应用程序(用户或系统)。

    通话时间通常由可靠的"提供。计时器。它们可能无法提供准确的时间(PC可能每天漂移几秒),但它们会准确测量经过的时间 - 它们将测量两个间隔之间发生的时钟滴答数,这将是不受系统负载的影响(虚拟机可能受到机器负载的影响)。

      

    但是,如果多个进程正在进行I / O,系统时间是否会减慢

    系统时间稳定,(不包括负载机器上的VM)将提供准确且可重复的时间测量。

      

    我知道用户时间处理CPU时间

    用户时间(和内核时间),猜测应用程序花费了多少时间,并且可以被愚弄。