我top -n 1 -b
从 Qt 应用程序调用 Linux 命令来获取空闲 CPU 百分比。该应用程序每 3 秒调用一次该命令,但 CPU 使用率似乎仅在第一次在应用程序中调用该命令时更新,然后将该值保存在缓存中(仅 CPU 使用率,所有其他值都会在每次调用时更新) 。如果我在控制台上手动测试“top -n 2 -b”命令,“实时”CPU 仅在第二次迭代后更新。我等不及应用程序中的第二次迭代来更新 CPU 值,因此我想知道是否有一些系统变量或缓存可以修改以在第一次迭代时获取此值更新。
答案1
每次top
迭代都会读取/proc/stat
cpu 行并将值与先前读取的值进行比较,这些值在第一次迭代时为零。与 3 秒前获得的值进行比较,即可得出这 3 秒内的平均 CPU 状态分布。与零相比,您可以得到整个系统正常运行时间的平均值(/proc/stat
系统启动时全为零),即您在第一次top
迭代时具有有效的百分比,但平均时间更长,因此似乎没有更新。
当手动解析时/proc/stat
,仍然需要在不同时刻进行两次读取。