是否有任何 C API 可以计算每个 CPU 负载?/proc/loadavg
给出了所有可用 CPU 的 CPU 平均负载,并且/proc/stat
没有提及有关每个 CPU 的活动进程的任何信息。
如何获取每个CPU的负载?
答案1
不存在“每个 CPU 负载”这样的东西。
平均负载定义为等待系统资源的进程数。这不一定是CPU。此外,由于进程可能正在等待 CPU 时间,并且没有在 CPU 上主动运行,因此您不能将其归因于任何特定的 CPU,因为该进程最终可能在任何 CPU 上运行(除非固定)。
不过,您可以获得每个 CPU 的利用率百分比。使用/proc/stat
,并使用每个 CPU 的第 4 个字段来确定该 CPU 的空闲程度(请参见man 5 proc
和/proc/stat
部分)。
基本上读取该值,睡眠1秒,再次读取该值,将差值除以USER_HZ。