【发布时间】:2021-09-02 00:34:46
【问题描述】:
我需要观察多核/超线程中的进程占用的 CPU 时间。假设是 Xeon、Opteron 等。
假设我有 4 个内核,超线程,这意味着 8 个“虚拟”内核。 让 X 我要运行的程序观察它花费了多少 CPU 时间。
如果我在我的 cpu 中运行进程 X,我会得到 CPU 时间 A。假设 A 超过 5 分钟。
如果我运行同一个进程 X 的 8 个副本,我将获得 CPU 时间 B1、B2…、B8。
如果我运行同一个进程 X 的 7 个副本,我将获得 C1、C2…、C7 的 CPU 时间。
如果我运行同一个进程 X 的 4 个副本,我将获得 CPU 时间 D1、D2…、D4。
问题:
数字A、Bi、Ci、Di有什么关系?
A 是否小于 Bi?多少钱? 慈、狄呢?
它们之间的时间 Bi 是否不同? 慈、狄呢?
【问题讨论】:
-
因此您编写了一个程序,该程序分别在每个线程上调用
cpu_time例程几次并将数据报告给某个输出设备。但请注意,cpu_time的定义有些模糊,并非 Unix/Linux 的所有主要分支都使用相同的变体。 -
假设程序是单线程的。我知道 cpu_time 在许多情况下的测量方式不同。我正在使用相同的操作系统和硬件以统一的方式对其进行测量。现在呢?
-
与其做假设,不如做一些实验,得到一些数据,得出一些结论。
-
是的,那是我的工作。我们的程序(大部分与研究相关)是单线程的。
标签: cpu-usage multicore hyperthreading