一般今天的计算机都支持多个处理器。即使笔记本电脑通常也是1个物理处理器,内置2个内核;笔者使用的HP服务器,已经可以支持2个物理处理器,每个处理器上可以达到14个内核(Xeon E5-2660v4 (2.0GHz/14-core))。在服务器端,更多的处理器或内核意味着更多的计算能力。但另一方面,也更耗电。你可能会发现一个情况,当你的CPU利用率很高,但你觉得你没有运行什么应用。在Linux系统上,您可以使用mpstat来监视这个活动。
mpstat用于监视系统上的CPU利用率。如果你的系统有多个处理器,那将会更有用。第一个处理器将被标记为CPU 0,第二个将被标记为CPU 1等等。从手册页中,mpstat被描述为:
mpstat命令每个可用处理器活动写入标准输出,处理器0是第一个。所有处理器之间的全局平均活动也被报告。 mpstat命令可以在SMP和UP机器上使用,但是在后者中只能打印全局的平均活动。如果没有选择任何活动,则默认报告是CPU利用率报告。
在Ubuntu 16.04版本上,可以通过下列的命令来安装mpstat:
sudo apt-get install sysstat
只需在控制台上输入mpstat来运行mpstat。在笔者的笔记本上输出为:
hadoop@bob-thinkpad:~$ mpstat
Linux 4.10.0-42-generic (bob-thinkpad) 2017年12月14日 _x86_64_ (4 CPU)
18时47分48秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
18时47分48秒 all 1.10 0.01 0.57 0.44 0.00 0.01 0.00 0.00 0.00 97.87
以下是如何阅读上述信息:
从上面的显示信息中,你可以看到我使用的系统有4个CPU。你可以使用-P参数,跟CPU编号来显示指定CPU的利用率:
Linux 4.10.0-42-generic (bob-thinkpad) 2017年12月16日 _x86_64_ (4 CPU)
19时57分26秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
19时57分26秒 0 0.70 0.00 0.35 0.52 0.00 0.00 0.00 0.00 0.00 98.43
使用-P ALL参数可以显示所有CPU的利用率。
hadoop@bob-thinkpad:~$ mpstat -P ALL
Linux 4.10.0-42-generic (bob-thinkpad) 2017年12月16日 _x86_64_ (4 CPU)
20时02分02秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时02分02秒 all 0.54 0.00 0.32 0.58 0.00 0.01 0.00 0.00 0.00 98.54
20时02分02秒 0 0.70 0.00 0.35 0.51 0.00 0.00 0.00 0.00 0.00 98.44
20时02分02秒 1 0.45 0.01 0.21 0.87 0.00 0.04 0.00 0.00 0.00 98.42
20时02分02秒 2 0.64 0.00 0.40 0.52 0.00 0.00 0.00 0.00 0.00 98.44
20时02分02秒 3 0.38 0.00 0.32 0.44 0.00 0.00 0.00 0.00 0.00 98.86
您可能想要查看CPU利用率的变化。要做到这一点,你可以使用间隔选项。下面的例子是设置间隔周期为3秒,采集2次的运行结果:
hadoop@bob-thinkpad:~$ mpstat -P ALL 3 2
Linux 4.10.0-42-generic (bob-thinkpad) 2017年12月16日 _x86_64_ (4 CPU)
20时13分54秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时13分57秒 all 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.25
20时13分57秒 0 0.34 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.66
20时13分57秒 1 0.67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.33
20时13分57秒 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
20时13分57秒 3 1.98 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.02
20时13分57秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时14分00秒 all 0.83 0.00 0.08 0.00 0.00 0.00 0.00 0.00 0.00 99.08
20时14分00秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
20时14分00秒 1 0.33 0.00 0.33 0.33 0.00 0.00 0.00 0.00 0.00 99.00
20时14分00秒 2 0.34 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.66
20时14分00秒 3 2.30 0.00 0.33 0.00 0.00 0.00 0.00 0.00 0.00 97.38
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 0.79 0.00 0.04 0.00 0.00 0.00 0.00 0.00 0.00 99.17
Average: 0 0.17 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.83
Average: 1 0.50 0.00 0.17 0.17 0.00 0.00 0.00 0.00 0.00 99.17
Average: 2 0.17 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.83
Average: 3 2.14 0.00 0.16 0.00 0.00 0.00 0.00 0.00 0.00 97.70