获取以下 CPU 使用率输出。可能存在以下问题:少数核心 100% 使用,而少数核心 100% 空闲:
Cpu0 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 99.7%us, 0.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 99.7%us, 0.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu8 : 99.7%us, 0.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu9 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
答案1
问题并不明确,您是否想知道为什么所有核心都没有被利用,或者为什么有些核心的利用率达到了 100%。
应用程序决定了它将使用多少个核心或线程。大多数应用程序都是单线程的,只会使用一个核心。这样所有操作都会按预期顺序进行。例如,如果 a+b=c 和 c+d=e 被传递给 2 个不同的核心,如果 a+b=c 尚未完成,您如何在处理 c+d=e 时知道 c 是什么?
您可以使用top
命令查看哪些应用程序正在使用这些核心。
答案2
我读了你附带的报告后发现,所有核心的使用率都达到了 100%——只是有些核心在执行“用户”任务,其他核心在运行“系统”任务或其他任务(无论“id”是什么)。这是正常的,因为大多数任务都是单线程的(如另一个答案中所述)。计算机在前台执行一些工作,即你明确启动的工作,还有一些在后台执行(通常是操作系统任务,但也可能是 BOINC 任务或其他分布式计算系统之类的任务)。