Linux查看物理CPU个数、CPU内核数、线程数、和占用的进程
Linux查看物理CPU个数、CPU内核数、线程数、和占用的进程
前言:
physical id:每颗CPU的id,计算系统中有几个CPU。
cpu cores:当前的CPU有几个核心。
processor:每个CPU线程的id,计算系统中总计有几个CPU线程。
㈠ 概念
① 物理CPU
- 实际Server中插槽上的CPU个数
- 物理cpu数量,可以数不重复的 physical id 有几个
② 逻辑CPU
- Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
- 信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
- 一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来
- 逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
- 备注一下:Linux下top查看的CPU也是逻辑CPU个数
③ CPU核数
- 一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
- 一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
物理cpu*核心数<逻辑CPU 说明支持超线程
计算公式
总核心数 = 物理CPU个数 X 每颗物理CPU的核数
常规情况下:总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
有特殊情况(一般不考虑,部分服务器可能存在这种情况,但是系统信息回详细注明):
比如有高性能线程数+第性能线程数据的情况:
eg:
核心数:14
高性能线程数:6
低性能线程数:8
逻辑CPU数据=6*2+8=20
查看方式
# 查看CPU逻辑id
grep 'physical id' /proc/cpuinfo | sort -u
# 查询物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的核数(即个数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看总线程数量
grep 'processor' /proc/cpuinfo | sort -u | wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# cpu详细信息
cat /proc/cpuinfo
案例
查看CPU信息(型号)以及个数(这里不是有12颗cpu)
[root@AAA ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
24 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
# 查看物理CPU个数
[root@AAA ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
# 查看每个物理CPU中core的个数(即核数)
[root@AAA ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 6
# 查看逻辑CPU的个数
[root@AAA ~]# cat /proc/cpuinfo| grep "processor"| wc -l
24
其他
intel官方查看CPU列表信息
https://ark.intel.com/content/www/us/en/ark.html#@Processors
1234567891011121314151617181920212223242526
CPU占用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
USER //用户名
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)resident set size
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
ps auxw
u:以用户为主的格式来显示程序状况
x:显示所有程序,不以终端机来区分
w:采用宽阔的格式来显示程序状况
ps auxw|head -1 输出表头
sort -rn -k5
-n是按照数字大小排序
-r是以相反顺序
-k是指定需要排序的栏位
tty (Teletype terminal )与进程关联的终端
串行端口终端(/dev/ttySn)
伪终端(/dev/pty/)
控制终端(/dev/tty)
控制台终端(/dev/ttyn, /dev/console)
虚拟终端(/dev/pts/n)
stat取值含义
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ //位于后台的进程组;
案例
以下配置:
物理CPU数量(即实际服务器插槽插的CPU个数:2): Socket(s): 2
每颗CPU的核心数: Core(s) per socket: 16
每个核心的线程数: Thread(s) per core: 2
逻辑CPU数: CPU(s): 64
逻辑CPU=物理CPU数量每颗CPU的核心数每个核心的线程数
[root@prod-bip-db02 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 64
On-line CPU(s) list: 0-63
Thread(s) per core: 2
Core(s) per socket: 16
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 106
Model name: Intel(R) Xeon(R) Silver 4314 CPU @ 2.40GHz
Stepping: 6
CPU MHz: 1205.273
CPU max MHz: 3400.0000
CPU min MHz: 800.0000
BogoMIPS: 4800.00
Virtualization: VT-x
L1d cache: 48K
L1i cache: 32K
L2 cache: 1280K
L3 cache: 24576K
NUMA node0 CPU(s): 0-15,32-47
NUMA node1 CPU(s): 16-31,48-63

浙公网安备 33010602011771号