Linux查看CPU核数

发布时间 2023-07-31 16:11:44作者: moxunjy

**方法一:通过proc文件系统 获取cpu总数量 命令如下 **

cat /proc/cpuinfo |grep processor


方法二:nproc命令

nproc


方法三:lscpu 显示CPU详细信息

lscpu

Architecture:        # 架构
CPU op-mode(s):      # CPU 运行模式
Byte Order:          # 字节序
CPU(s):              # 逻辑CPU颗数
On-line CPU(s) list: # 在线CPU列表
Thread(s) per core:  # 每个核的线程数
Core(s) per socket:  # 每个CPU插槽核数/每颗物理CPU核数
CPU socket(s):       # CPU插槽数
NUMA node(s):        # NUMA节点
Vendor ID:           # CPU厂商ID
CPU family:          # CPU系列
Model:               # 型号
Model name:          # 型号名称
Stepping:            # 步进
CPU MHz:             # CPU主频
CPU max MHz:         # CPU最大主频
CPU min MHz:         # CPU最小主频
Virtualization:      # CPU支持的虚拟化技术
L1d cache:           # 一级缓存(CPU的L1数据缓存)
L1i cache:           # 一级缓存(CPU的L1指令缓存)
L2 cache:            # 二级缓存

查看 cpu0 线程数:

cat /sys/devices/system/cpu/cpu0/topology/core_cpus

(2)以可读格式显示 CPU 信息。

lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       yes
1   0    0      1    1:1:1:0       yes

(3)显示 CPU 指定列的信息,如查看逻辑 CPU。

lscpu -e=CPU
CPU
0
1

可用列有:

CPU  			逻辑 CPU 数量。
CORE  			逻辑核心数量。一个核心可以包含多个CPU。
SOCKET  		逻辑插座数量。一个 socket 可以包含多个核心。
BOOK  			逻辑 book 数。一个 book 可以包含多个插座。
NODE  			逻辑 NUMA 节点数量。
DRAWER  		逻辑抽屉数(不太明白,好像和book有关系)
CACHE  			CPU 之间如何共享缓存
POLARIZATION 	虚拟硬件上的 CPU 调度模式
ADDRESS			CPU 物理地址
CONFIGURED  	管理程序是否分配了CPU
ONLINE  		显示 Linux 当前是否使用 CPU
MAXMHZ			CPU 最大频率
MINMHZ			CPU 最小频率

方法四:top 命令
参数详解
https://www.cnblogs.com/zhangmingcheng/p/15658923.html
执行top命令 控制台输入1,查看当前系统cpu总核数


top的使用方式 top [-d number] | top [-bnp]

参数解释:

-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。 -b:以批次的方式执行top。 -n:与-b配合使用,表示需要进行几次top命令的输出结果。 -p:指定特定的pid进程号进行观察。

在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的):

P 按照 进程 cpu 的使用率排序 (默认情况)
M 按照 内存的使用情况排序
q 退出
shift +< 上一页
shift +> 下一页
r 调整nice 值 renice
f 选择显示那一列
F,O 按那一列排序
k 杀死一个进程
c 显示command详细信息

样例图片

top各输出参数含义
top前5行统计信息
第1行:top - 21:09:34 up 2 days, 9:49, 2 users, load average: 3.90, 3.19, 2.49
第1行是任务队列信息,其参数如下:

内容 含义
21:09:34 表示当前时间
up 2 days, 9:49 表示系统运行时间
2 users 当前登录用户数
load average: 3.90, 3.19, 2.49 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第2行:Tasks: 532 total, 2 running, 515 sleeping, 0 stopped, 15 zombie
第3行:%Cpu(s): 14.1 us, 5.6 sy, 0.0 ni, 80.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行,其参数如下:

内容 含义
532 total 进程总数
2 running 正在运行的进程数
515 sleeping 睡眠的进程数
0 stopped 停止的进程数
15 zombie 僵尸进程数
14.1 us 用户空间占用CPU百分比,这个值是当前机器逻辑CPU占用百分比累加值/CPU逻辑核数所得,可以使用top 1命令查看各核CPU使用情况
5.6 sy 内核空间占用CPU百分比,这个值是当前机器逻辑CPU占用百分比累加值/CPU逻辑核数所得,可以使用top 1命令查看各核CPU使用情况
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
80.3 id 空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.0 si 软中断(Software Interrupts)占用CPU的百分比
0.0 st
第4行:KiB Mem : 32780544 total, 7673504 free, 8104836 used, 17002204 buff/cache
第5行:KiB Swap: 0 total, 0 free, 0 used. 24058588 avail Mem
第4、5行为内存信息
其参数如下:
内容 含义
32780544 total 物理总内存
7673504 free 空闲内存总量
8104836 used 使用的物理内存总量
17002204 buff/cache 用作内核缓存的内存量
KiB Swap 交换空间
24058588 avail Mem 代表可用于进程下一次分配的物理内存数量

缓冲的交换区总量即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

计算可用内存数有一个近似的公式:
第四行的free + 第四行的buffers + 第五行的cached

二、进程信息

列名 含义
PID 进程ID
USER 进程所有者的用户名
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令行