全面了解 Linux 服务器 - 1. 查看 Linux 服务器的 CPU 详细情况

时间:2022-06-25 10:43:38

1. 查看 Linux 服务器的 CPU 详细情况

判断依据:

  • 具有相同的 core id 的 CPU 是同意个 core 超线程。
  • 具有相同的 physical id 的 CPU 是同一个 CPU 封装的线程或核心

显示物理 CPU 个数的命令:

liuqian@ubuntu:~$ cat /proc/cpuinfo | grep 'physical id' | sort| uniq | wc -l
1

显示每个物理 CPU 中 core 的个数(即核数):

liuqian@ubuntu:~$ cat /proc/cpuinfo | grep 'cpu cores' | uniq
cpu cores : 1

显示逻辑 CPU 的个数:

liuqian@ubuntu:~$ cat /proc/cpuinfo | grep 'processor' | wc -l
1

按理说有如下等式:

物理 CPU 个数 × 核数 = 逻辑 CPU 的个数

如果不相等的话,则表示你的服务器 CPU 支持超线程技术。在配置服务器的应用时,应以服务器的逻辑 CPU 个数为准。

查看系统内核版本号:

liuqian@ubuntu:~$ uname -a
Linux ubuntu 4.2.0-38-generic #45-Ubuntu SMP Wed Jun 8 21:21:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

【附加FreeBSD相关命令】

显示 CPU 个数:

[liuqian@SYQceshi03 ~]$ dmesg|grep cpu
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
acpi_throttle0: <ACPI CPU Throttling> on cpu0
acpi_throttle1: <ACPI CPU Throttling> on cpu1

或:

[liuqian@SYQceshi03 ~]$ sysctl -a|grep cpu
cpu HAMMER
device cpufreq
kern.sched.cpusetsize: 8
<cpu count="" mask="">0, 1</cpu>
<cpu count="" mask="">0, 1</cpu>
kern.ccpu: 0
kern.smp.maxcpus: 64
kern.smp.cpus: 2
net.inet.tcp.per_cpu_timers: 0
debug.acpi.cpu_unordered: 0
debug.cpufreq.lowest: 0
debug.cpufreq.verbose: 0
hw.ncpu: 2
......

从上面可以看出 CPU 个数为 2

如果CPU是多核,如何查看各颗CPU的运行状态:

[liuqian@SYQceshi03 ~] top

last pid: 42028;  load averages:  0.83,  1.66,  1.71                                                                        up 168+04:04:19 15:08:58
163 processes: 1 running, 160 sleeping, 2 stopped
CPU: 2.9% user, 0.0% nice, 1.2% system, 0.0% interrupt, 95.9% idle
Mem: 653M Active, 2302M Inact, 669M Wired, 27M Cache, 786M Buf, 291M Free
Swap: 4096M Total, 2673M Used, 1423M Free, 65% Inuse PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
768 mysql 42 20 0 781M 186M uwait 0 43.3H 0.00% mysqld
943 mongodb 10 20 0 650M 4880K uwait 0 457:16 0.00% mongod88098 root 17 52 0 2517M 40824K uwait 1 335:57 0.00% java
87136 root 17 20 0 2537M 40976K uwait 0 335:47 0.00% java
88884 root 17 52 0 2517M 40992K uwait 1 335:02 0.00% java
88733 root 17 52 0 2529M 40672K uwait 1 333:07 0.00% java

从上面的结果,可以知道,这是一颗双核的 CPU(看 C 那列的值的个数)