1

我正在尝试使用英特尔超线程计算我的机器上的进程利用率。

尝试进行计算时遇到一个问题:

我正在计算我的进程在物理核心上单独运行时正在执行的循环,并在另一个进程(相同的进程)在另一个逻辑核心(相同的物理核心)上运行时计算它。

我看到我的流程正在执行的循环数量存在差异。我想这与我在超线程机器上运行的事实有关。

有没有办法知道我的进程的确切运行时间是多少,以便在我尝试计算进程利用率时将其添加到我的计算中?

4

1 回答 1

2

您只能知道一个进程占用了多少逻辑 CPU 时间。您无法判断它使用了多少物理 CPU,也没有真正定义。
超线程(或者至少是更现代的 SMT)无法通过在两个线程之间划分物理 CPU 时间来工作。它通过将工作分配给 CPU 内的执行单元(并且有几个这样的单元)来工作。
所以两个线程可以同时运行——有几个整数执行单元,还有一些其他的(内存、浮点)。

底线 - 如果一个线程占用 100% 的逻辑 CPU,那么它会占用 100% 的 CPU。这就是你能说的。

于 2012-01-04T20:04:43.187 回答