Linux 如何监视竞争超线程的争用
是否有一些可用的性能计数器或类似计数器可以帮助量化同一内核上的两个超线程相互竞争执行资源的程度 用例:在像Kubernetes这样的共享基础设施环境中,我可以请求我的进程具有“1CPU”的容量。然而,在使用超线程的情况下,这不是一个物理内核,而是一个逻辑CPU,该内核的吞吐量可能会变化多达2倍,这取决于计划在与同一物理内核的其他超线程相对应的其他逻辑CPU上运行的内容。是否有一些指标可以量化在等待另一个超线程时所花费的时间Linux 如何监视竞争超线程的争用,linux,hyperthreading,Linux,Hyperthreading,是否有一些可用的性能计数器或类似计数器可以帮助量化同一内核上的两个超线程相互竞争执行资源的程度 用例:在像Kubernetes这样的共享基础设施环境中,我可以请求我的进程具有“1CPU”的容量。然而,在使用超线程的情况下,这不是一个物理内核,而是一个逻辑CPU,该内核的吞吐量可能会变化多达2倍,这取决于计划在与同一物理内核的其他超线程相对应的其他逻辑CPU上运行的内容。是否有一些指标可以量化在等待另一个超线程时所花费的时间 另一个用例:根据工作负载的性质以及超线程的收益,平均CPU利用率可能不是
另一个用例:根据工作负载的性质以及超线程的收益,平均CPU利用率可能不是可用容量的良好指标。对于一个完全不能从超线程中获益的工作负载,将主机加载到超过50%的CPU利用率可能根本不会增加吞吐量。我可以使用什么指标来确定有多少实际执行资源,而不仅仅是空闲的逻辑CPU时间可用?可能,因为所有内容都在源代码中,您可以实现这样的计数器 当然,实施取决于您想要监控的内容
- 每个共享资源的计数器
- 每个函数有一个全局计数器
- 每种操作类型的计数器(锁定/解锁)
无论如何,计数器(in/de)增量本质上必须是原子的,并且还应该包含(自旋锁?),这会降低代码的速度,因此这就是默认情况下不包含它们的几个原因。我认为关于我想要监控的内容,问题非常清楚:来自竞争超线程的争用。恐怕你完全没有抓住要点。为代码所做的事情实现计数器很容易。一个计数器,用于CPU的一个实现细节,您在程序中没有控制权,也没有太多控制权。