【问题标题】:CPU time on multicored/hyperthreaded多核/超线程上的 CPU 时间
【发布时间】: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。

问题:

  1. 数字A、Bi、Ci、Di有什么关系?

  2. A 是否小于 Bi?多少钱? 慈、狄呢?

  3. 它们之间的时间 Bi 是否不同? 慈、狄呢?

【问题讨论】:

  • 因此您编写了一个程序,该程序分别在每个线程上调用cpu_time 例程几次并将数据报告给某个输出设备。但请注意,cpu_time 的定义有些模糊,并非 Unix/Linux 的所有主要分支都使用相同的变体。
  • 假设程序是单线程的。我知道 cpu_time 在许多情况下的测量方式不同。我正在使用相同的操作系统和硬件以统一的方式对其进行测量。现在呢?
  • 与其做假设,不如做一些实验,得到一些数据,得出一些结论。
  • 是的,那是我的工作。我们的程序(大部分与研究相关)是单线程的。

标签: cpu-usage multicore hyperthreading


【解决方案1】:

数字A、Bi、Ci、Di之间的关系是什么?

预计 D1=D2=D3=D4=A*1,除非您有 L2 缓存问题(冲突、故障等),在这种情况下您的数字会比 1 略大。

期待B1=B2=B3=B4=...=B8=A*1.31.3 的数量可能会在 1.12 之间变化,具体取决于您的应用程序(某些处理器子部分是超线程的,其他则不是)。根据一个私人论坛,它是根据类似的统计数据计算的,我在这里使用问题的符号给出:D=23 秒,A=18 秒。无线程进程在没有输入/输出的情况下进行整数计算。确切的应用是检查 Motivic Steenrod 代数中的 Adem 系数(不知道它是什么;设置为 (2n+e,n),n=20)。

在有七个进程 (Cs) 的情况下,如果您 assign 每个进程到一个核心(在 linux 上使用 /usr/bin/htop),那么您将拥有一个进程(例如 C5)与 A 相同的执行时间,而其他(在我的示例中为 C1、C2、C3、C4、C6、C7)将具有与 Ds 相同的值。如果您不将进程分配给核心,并且您的进程持续时间足够长,操作系统确实会在核心之间平衡它们,那么它们将收敛到 C 的平均值。

Are times Bi different between them? What about Ci, Di?

取决于您的操作系统调度程序及其配置。而来自linux的/bin/top显示的百分比是作弊的,A、Bs、Cs和Ds显示接近100%。

要评估性能,不要forget /usr/bin/nettop(以及变体 nethogs、nmon、iftop、iptraf)、iotop(以及变体 iostat、latencytop)、collectl (+colmux) 和 sar (+下垂,+sadf)。

【讨论】:

  • 好的,将stackoverflow.com/questions/20565404/… 添加到您的问题中,然后在此处通知我,并提供包含@user2987828 的评论。
  • 你知道超线程被禁用的情况吗?
  • 当 HPC 将任务分配给特定的虚拟内核并启用超线程时,我看到一些实验报告 D1=D2=D3=D4=A*1.5
【解决方案2】:

到 2021 年,运行多个实验时可能会有很大差异。例如,超过 50% 的差异。

两个黄金标准:

  • 以单核模式运行
  • 禁用超线程。

检测问题:

  • 多次运行相同的算法。

理论上,这可以在运行实验时使用:

  • 每个实验运行 k 次。

但是,当比较运行时间时,这是不完整的,因为一组 K 可以在与其他 K 实验不可比的条件下进行。

缓解这种情况:

  • 每个实验运行 k 次。
  • 随机化实验顺序。

出于发布目的,这还不够,但它可能有助于快速周转,即使 k = 2。

H/T:规划社区闲置空间讨论,与会议ICAPS相关:https://www.icaps-conference.org

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 2010-10-15
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    相关资源
    最近更新 更多