如何监视竞争性超线程的争用

时间:2018-11-09 16:37:32

标签: linux hyperthreading

是否存在一些性能计数器或类似的性能计数器,可以帮助量化同一内核上的两个超线程为执行资源而相互竞争的程度?

用例:在Kubernetes这样的共享基础结构环境中,我也许可以请求我的进程具有“ 1 CPU”的容量。但是,在使用超线程的情况下,它不是物理核心,而是逻辑CPU,并且该核心的吞吐量可能相差2倍之多,具体取决于计划在与另一个超线程相对应的另一个逻辑CPU上运行的时间相同的物理核心。是否有一些指标可以量化在另一个超线程上等待了多少时间?

另一个用例:根据工作负载的性质以及从超线程中获得多少收益,平均CPU利用率可能无法很好地表明可用容量。对于根本无法从超线程中受益的工作负载,将主机加载到超过50%的CPU利用率可能根本不会增加吞吐量。我可以使用什么指标来确定有多少实际执行资源,而不仅仅是空闲的逻辑CPU时间?

1 个答案:

答案 0 :(得分:-1)

可能,因为所有内容都在源代码中,所以您可以实现这样的计数器。...

当然,实施取决于您要监视的内容,

  • 每个共享资源的计数器
  • 每个功能的全局计数器
  • 每种操作类型(锁定/解锁)的计数器

无论如何,计数器(递增/递减)本质上必须是原子的,并且还应包含(自旋锁?),这会使您的代码变慢,因此,有几个原因默认不包括它们。