我刚刚安装了 screenlet 来获取有关我系统的一些屏幕信息。我正在尝试使用 RingSensors screenlet 来监控 CPU 负载,但可供监控的传感器比我预期的要多。
当我进入设置来选择环应该监控哪个 CPU(核心)时,我得到了 5 个不同的 CPU 可供选择:
我的处理器是四核的,因此我期望有 4 个 CPU 监视器,而不是 5 个。如果我检查 /proc/cpuinfo,我会得到预期的数量:
$ cat /proc/cpuinfo | grep ^processor
processor : 0
processor : 1
processor : 2
processor : 3
所有监视器都会得到某种读数,因为它们呈现的是不断更新的值:
htop 和 RingSensors 都有一定的更新间隔,因此即使我在截屏时同时在屏幕上显示了两个仪表,htop 和 ringsensors 获得不同的值我也不会感到惊讶。
有人可以向我解释一下额外的 CPU 计量器吗?
其中一个仪表是所有核心的平均负载还是别的什么?
有什么方法可以让我尝试一次最大化一个核心,看看这会如何影响报告的负载值?
编辑:
使用命令任务集结合命令压力我可以一次强调一个核心,从而我可以得出 CPU1-4 代表各个核心,而 CPU0 是其他东西,或者是半数核心的集合或类似的东西。
$ stress -c 1&
[1] 18829
$ taskset -p -c 0 18830
pid 18830's current affinity list: 0-3
pid 18830's new affinity list: 0
$ taskset -p -c 1 18830
pid 18830's current affinity list: 0
pid 18830's new affinity list: 1
$ taskset -p -c 2 18830
pid 18830's current affinity list: 1
pid 18830's new affinity list: 2
$ taskset -p -c 3 18830
pid 18830's current affinity list: 2
pid 18830's new affinity list: 3
正如您所看到的,压力产生了一个子进程,这就是为什么我必须设置 pid 18830 而不是 18829 的亲和力。
最后,如果我同时最大化两个(或更多)核心,那么 CPU0 也会最大化: