超线程使逻辑核心加倍,但不会使 CPU 资源加倍。
Linux 以百分比来测量 CPU 使用率,为每个线程分配 100% 的点,因此对于激活 HT 的四核 CPU,报告最大值为 800%。
无论如何,我知道在实际使用情况下你不会达到 800%。
在我开始担心我的服务器之前,CPU 的合理最大值是多少?400%?600%?
答案1
您将达到 800%(在舍入误差范围内),但这不是 8 倍 100% 使用率。
关键是超线程不是独立的处理器,它们使用大部分相同的资源,因此使用量会“溢出”到其他线程。
想象一下一个单线程任务,消耗了 100% 的逻辑核心。您会看到 100% 的使用率,并且任务继续进行,例如每秒 10 颗石头。
现在您启动第二个任务并在另一个线程上运行,使用相同的物理核心。现在您看到使用率为 200%,并且两个任务都在进行,但不是每个任务每秒 10 颗石头,而是每个任务每秒 6 颗石头。
换句话说,与单线程相比,工作进度快了 20%,但每个线程的能力较低(因为资源较少);因此,当所有线程都繁忙时,100% 的数字仅为每核一个线程场景的 60%。