【问题标题】:Calculate process utilization in hyper-threading machine计算超线程机器中的进程利用率
【发布时间】:2012-01-04 12:23:39
【问题描述】:

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

我在计算时遇到了一个问题:

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

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

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

【问题讨论】:

  • top 即使在超线程机器上也应该可以正确使用
  • 我的进程(几乎)在核心上单独运行...我想通过计算循环量来查看它的负载情况。 top 会一直显示 98%。这对我不好
  • 在这种情况下你使用了 98% 的 cpu,真的没什么好说的了。可以通过 BIOS 或其他实用程序禁用超线程,因此请将其关闭并查看数字是否更改,这可能会让您更好地了解其他系统上的 cpu 使用情况。

标签: c linux multithreading utilization


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多