在 Linux 系统上查看 CPU 信息的方法有很多,从查看 CPU 的硬件信息到使用率等,能通过好几个途径来实现同样的需求,本文以一些实际需求为例,分享了如何通过相关命令来获得想要的 CPU 信息。
查看 CPU 个数
现代 CPU 都是多核的,每个核相当于是一个单独的 CPU。那么在 Linux 系统上如何查到自己的 CPU 是几核,或者说有几个呢?
如果使用的是桌面版 Linux,可以找一个叫「系统监视器」的软件,通过这个软件可以很直观的看到。
通过这种方式虽然看起来很直观,但结果不一定准确。多核 CPU 这个所谓的「核」其实有两种:分别是「物理核」和「虚拟核」。虚拟核是由物理核模拟出来的,严格意义上来说不能算数。
那在 Linux 系统上如何查看 CPU 的物理核个数呢?这就需要使用命令了。首先要推荐使用的是 lscpu
命令:
lscpu
命令会输出很多和 CPU 相关的信息,和内核相关的主要是下面这几个:
...
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
...
Thread 表示线程,Core 表示核,Socket 表示主板上 CPU 的个数。根据上面的信息可以看出,我主板上就一块 CPU,它有 4 个物理核,每个核有 2 个线程。操作系统上显示的是包含虚拟核的 CPU,而数量就是这三个数相乘。这样就能明白为什么在系统监视器中显示的是 8 个 CPU 了。
除了 lscpu
命令,直接查看 /proc/cpuinfo 文件也能获得相关信息。
cat /proc/cpuinfo
在输出信息中找 cpu cores
开头的行,它后面的数字就是物理核数量。在我的电脑上显示如下:
cpu cores : 4
查看 CPU 硬件信息
还是推荐使用 lscpu
命令,输出的信息中品牌,型号,时钟频率,L1, L2, L3 缓存大小等信息都一目了然。
另外一个选择就是 cat /proc/cpuinfo
,它里面也包含了 CPU 的一些硬件信息,不过相对来说更简略一些,而且是以虚拟核的方式分段显示的。
查看 CPU 使用率
桌面环境下还是推荐使用「系统监视器」程序,它能以图表方式观测一段时间内 CPU 的使用波动情况和使用率。另外它还提供了进程管理界面,按 CPU 排序后可以方便的了解目前占用 CPU 较多的程序。关于它的界面可以翻到最上面查看 CPU 个数的部分了解。
对于终端环境,top
命令是个不错的选择。运行此命令后,会显示如下界面:
这个界面中有三块内容可以用来了解 CPU 的使用情况。
第一部分是最顶端的靠右边的 load average: 0.84, 0.65, 0.61
。它反应了系统的负载压力,也可以用来衡量 CPU 的总体使用情况。其中的三组数字分别代表了系统在过去一分钟,五分钟,十五分钟内所承担的计算压力。
对于单核 CPU,这个数字越接近 0 意味着压力越小,越靠近 1 表示系统越繁忙,负载较大。如果是多核 CPU,需要乘以 CPU 数量来观测。比如系统认为我的电脑有 8 个 CPU,目前显示的 0.84 可以理解为当前的负载并不高,CPU 的使用率也很低。而当这里负载显示接近或者超过 8 的时候,就可以认为系统负荷较大了。
第二部分内容是第三行以 %Cpu
开头的内容。这部分以百分比数字显示了当前系统 CPU 的整体情况。其中后面每组数字所代表的意义分别如下:
%us
:用户空间程序的使用率。%sy
:系统空间的使用率。%ni
:通过进程调度的程序使用率。%id
:空闲的比率。%wa
:处于 IO 等待状态的比率。%hi
:处理硬中断的比率。%si
:处理软中断的比率。%st
:实时比率。
这其中只要关注 %id
比率就能反推出系统当前的 CPU 使用率了。
当 CPU 使用率较高时,就需要进一步了解是哪些程序导致的,这是接下来要介绍的 top
命令的第三部分内容:进程列表。进程列表的 %CPU
列显示了各软件当前使用的 CPU 比率。使用 Shift
+p
快捷键可以让进程按 CPU 占用率从高到低排列,这样可以快速筛查出占用 CPU 较多的程序。
使用 ps
命令也可以完成筛选高 CPU 使用率进程的目的:
ps aux | sort -nrk 3,3 | head -n 10
上面的命令先使用 ps
命令列出当前所有运行的进程信息,然后通过 sort
命令按 CPU 使用率那一列的数字进行排序,最后用 head
命令只取最前面的 10 条数据。