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



我知道用户时间处理 CPU 时间,因此它不受分时的影响,因为它会测量我们的进程本身拥有 CPU 时的 CPU 操作数。 但是,如果像多个进程正在执行I/O一样,系统时间可以减慢吗?

有三种措施很容易获得

  1. 墙上时间 - 经过了多少时间。
  2. 内核时间 - 系统代表您做了多少工作
  3. 用户时间 - 代码运行的时间。

这些有助于讲述一个故事,但不是整个故事。 通常,系统以特殊方式考虑这些。它允许您的程序在 CPU 内核上运行固定的时间长度。

当该时间过去时,它会停止您的程序,并检查是否有其他操作要做。 如果没有其他操作,程序将重新启动。

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

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

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

挂断时间通常由"可靠"的计时器提供。 它们可能无法提供准确的一天中的时间(PC 每天可以漂移几秒钟(,但它们会准确测量经过的时间 - 它们将测量两个间隔之间发生的时钟周期数,并且不受系统负载的影响(VM 可能会受到计算机上负载的影响(。

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

系统时间稳定,并且(不包括负载下的计算机上的虚拟机(将提供准确且可重复的时间测量。

我知道用户时间与 CPU 时间有关

用户时间(和内核时间(是对应用程序花费多少时间的猜测,并且可能会被愚弄。

最新更新