是否有一些性能计数器或类似的计数器可以帮助量化同一内核上的两个超线程相互竞争执行资源的程度?
用例:在像 Kubernetes 这样的共享基础设施环境中,我也许可以请求我的进程拥有“1 个 CPU”的容量。然而,当超线程发挥作用时,这不是一个物理核心,而是一个逻辑 CPU,并且该核心的吞吐量可能会变化多达 2 倍,具体取决于计划在与同一物理核心的其他超线程相对应的另一个逻辑 CPU 上运行的内容。是否有一些指标可以量化等待另一个超线程所花费的时间?
另一个用例:根据工作负载的性质以及从超线程中获得的 yield ,平均 CPU 利用率可能无法很好地指示可用容量。对于根本无法从超线程中获益的工作负载,加载主机 CPU 利用率超过 50% 可能根本不会增加吞吐量。我可以使用哪些指标来确定有多少可用的实际执行资源,而不仅仅是空闲逻辑 CPU 时间?
也许,由于所有内容都在源代码中,您可以实现这样的计数器....
当然,实现取决于您想要监控的内容,
- 每个共享资源一个计数器,
- 每个函数一个全局计数器,
- 每种操作类型(锁定/解锁)一个计数器
无论如何,计数器(增加/减少)本质上必须是原子的,并且还应该包含(自旋锁?),这会使您的代码变慢,因此这是默认情况下不包含它们的几个原因。
我是一名优秀的程序员,十分优秀!