Linux系统如何查询CPU核心数? (怎么查看linux是几核的)
在Linux操作系统中,查询CPU核心数是一个非常基础和实用的操作,它可以帮助我们更好地了解计算机的硬件信息,也可以帮助我们优化计算机的性能。那么,在Linux系统中,如何查询CPU核心数呢?本文将详细介绍这个操作。
一、通过lscpu命令查询CPU核心数
lscpu是Linux系统中一个非常常用的命令,它可以显示CPU的信息,包括处理器架构、逻辑处理器数、单个处理器的核心数、缓存等信息。它的使用非常简单,只需要在终端中输入如下命令即可:
“`shell
lscpu
“`
执行该命令后,我们可以看到如下的输出:
“`shell
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
Stepping: 10
CPU MHz: 711.077
CPU max MHz: 4000.0000
CPU min MHz: 400.0000
BogoMIPS: 3984.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-3
“`
在输出结果中,我们可以看到CPU(s)字段,它表示当前计算机的逻辑CPU数,也就是CPU核心数。在上面的例子中,我们可以看到该计算机有4个逻辑CPU。另外,我们还可以看到Thread(s) per core字段和Core(s) per socket字段,它们分别表示每个核心的线程数和每个插槽的核心数。
除了上面的输出外,lscpu命令还可以通过参数来输出更加详细的信息。例如,如果我们希望查看某个具体的CPU核心的信息,可以使用-l参数:
“`shell
lscpu -l
“`
执行该命令后,我们可以看到如下的输出:
“`shell
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 4000.0000 400.0000
1 0 0 1 1:1:1:0 yes 4000.0000 400.0000
2 0 0 2 2:2:2:0 yes 4000.0000 400.0000
3 0 0 3 3:3:3:0 yes 4000.0000 400.0000
“`
在输出结果中,我们可以看到CPU、NODE、SOCKET、CORE等字段,它们分别表示CPU编号、NUMA节点编号、插槽编号和核心编号,L1d、L1i、L2和L3表示各级缓存大小,ONLINE表示该CPU是否在线,MAXMHZ和MINMHZ分别表示该CPU的更大和最小频率。
二、通过/proc/cpuinfo文件查询CPU核心数
除了使用lscpu命令以外,还可以通过查看/proc/cpuinfo文件来查询CPU核心数。该文件包含了本地CPU的详细信息。
我们可以使用如下命令来查看/proc/cpuinfo文件:
“`shell
cat /proc/cpuinfo
“`
执行该命令后,我们可以看到如下的输出:
“`shell
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
stepping : 10
cpu MHz : 711.077
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti sd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgase tsc_adjust bmi1 avx2 ep bmi2 erms invpcid mpx rdseed adx ap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 3984.00
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
…
“`
在输出结果中,我们可以看到cpu cores字段,它表示每个物理CPU的核心数。在上面的例子中,我们可以看到该计算机共有8个物理CPU核心。
需要注意的是,上述命令的简单输出只提供了硬件的基本信息,如果想得到更加详细和完整的信息,可以使用grep命令等进一步解析/proc/cpuinfo文件。
三、通过top命令查询CPU核心数
除了使用lscpu命令和/proc/cpuinfo文件以外,还可以通过top命令来查询CPU核心数。
top命令是一个非常强大的Linux命令,它可以用于监视系统进程和资源利用情况,包括CPU利用率、内存使用情况、磁盘IO情况等。而在top命令的内部,也含有CPU核心数信息。我们只需要在终端中输入如下命令即可:
“`shell
top
“`
执行该命令后,我们可以看到如下的输出:
“`shell
top – 13:23:12 up 13 days, 2:21, 3 users, load average: 0.43, 0.44, 0.45
Tasks: 279 total, 1 running, 278 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.0 us, 2.5 sy, 0.0 ni, 87.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16290372+total, 2464016 free, 69575200 used, 71310644 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 88117380+ avl Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6797 root 20 0 21.545g 8.053g 1.002g S 0.7 5.2 497:15.89 Xorg
18377 zezhongz 20 0 388496 273160 34980 S 0.3 0.2 144:18.28 gnome-shell
1 root 20 0 168852 7508 4552 S 0.0 0.0 1:12.01 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.23 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 13:10.76 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 3:25.73 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:58.74 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:00.10 migration/0
10 root rt 0 0 0 0 S 0.0 0.0 0:05.91 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.89 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:05.87 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:26.39 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
“`
在输出结果中,我们可以看到%Cpu(s)字段,它表示当前计算机的CPU使用率,其中us表示用户空间占用CPU的百分比,sy表示内核空间占用CPU的百分比,ni表示优先级较高的进程占用CPU的百分比,id表示CPU空闲的百分比。
除此以外,我们还可以使用数字键1来切换top命令的CPU模式。在CPU模式下,top命令也会显示所有CPU的使用率、进程数量和运行时间等统计信息。在CPU模式下,我们可以看到如下的输出:
“`shell
top – 13:32:25 up 13 days, 2:31, 3 users, load average: 0.53, 0.50, 0.48
Tasks: 282 total, 2 running, 279 sleeping, 0 stopped, 1 zombie
%Cpu0 : 13.9 us, 1.5 sy, 0.0 ni, 84.2 id, 0.4 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 15.1 us, 3.3 sy, 0.0 ni, 81.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 9.7 us, 1.8 sy, 0.0 ni, 88.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 3.3 us, 0.9 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu4 : 18.5 us, 2.9 sy, 0.0 ni, 78.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 11.1 us, 1.7 sy, 0.0 ni, 86.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.3 st
%Cpu6 : 16.6 us, 2.6 sy, 0.0 ni, 80.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 3.3 us, 0.7 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16290372+total, 2437388 free, 69632788 used, 70298256 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 87921028+ avl Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24057 root 20 0 146464 3856 3076 R 19.9 0.0 0:00.00 top
1 root 20 0 168852 7508 4552 S 0.0 0.0 1:12.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.23 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 13:10.78 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
“`
在输出结果中,我们可以看到所有CPU的使用率和进程数量。
四、
在Linux系统中,查询CPU核心数是一个非常关键和实用的操作,它可以帮助我们更好地了解计算机的硬件信息,也可以帮助我们优化计算机的性能。在本文中,我们介绍了三种不同的查询CPU核心数的方法,它们分别是使用lscpu命令、查看/proc/cpuinfo文件和使用top命令。不同的方法各有优缺点,我们可以根据具体情况选择适合自己的方法。