linux查看物理內核等信息(包括lscpu)

說明

查看這些之前我想說一下 lscpu 命令 ,因爲用一堆命令篩選出來的結果 lscpu 基本上都有,而且 還有些服務器只有用 lscpu才能看到結果,篩選的看不到,下面到時候會有說明!

[root@controller01 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                80  # 總cpu數量
On-line CPU(s) list:   0-79 # 在線的cpu數量 有些時候爲了省電或者過熱的時候,某些CPU會停止運行
Off-line CPU(s) list:  # 並不是每臺服務器都有,這是不在線cpu,也就是未使用的cpu,如果有參數 便是不在線的 cpu號 (這部分是vios中經過多線程技術,未分配給本分區的cup數量。)
Thread(s) per core:    2 # 每個核心的線程數
Core(s) per socket:    10 # 每個cpu插槽核數/每顆物理cpu核數 
Socket(s):             4 # cpu插槽數 如這就是有4顆物理cpu
NUMA node(s):          4
Vendor ID:             GenuineIntel # cpu廠商ID 
CPU family:            6 # cpu系列 
Model:                 63 # 型號
Model name:            Intel(R) Xeon(R) CPU E7-4820 v3 @ 1.90GHz  # 型號名
Stepping:              4 # #步進 
CPU MHz:               1899.925 # cpu主頻 
BogoMIPS:              3798.76
Virtualization:        VT-x # cpu支持的虛擬化技術 
L1d cache:             32K # 一級高速緩存 dcache 用來存儲數據
L1i cache:             32K # 一級高速緩存 icache 用來存儲指令
L2 cache:              256K
L3 cache:              25600K # 緩存速度上 L1 > L2 > L3 > DDR(內存) 內存的理論速度在幾十g一秒

查看邏輯CPU個數

  • 對應 lscpu 的CPU(s)
[root@controller01 ~]# cat /proc/cpuinfo |grep "processor"|sort -u|wc -l
80
[root@controller01 ~]# 

在這裏插入圖片描述

查看物理CPU個數

由於有 超線程技術 所以有必要查看一下物理CPU個數:
超線程技術:通過此技術,英特爾實現在一個實體CPU中,提供兩個邏輯線程。之後的Pentium D縱使不支持超線程技術,但就集成了兩個實體核心,所以仍會見到兩個線程。超線程的未來發展,是提升處理器的邏輯線程。英特爾於2016年發佈的Core i7-6950X便是將10核心的處理器,加上超線程技術,使之成爲20個邏輯線程的產品。

  • 對應lscpu的Socket(S)
[root@controller01 ~]# grep "physical id" /proc/cpuinfo|sort -u|wc -l 
4
[root@controller01 ~]# 

在這裏插入圖片描述

查看每個物理CPU內核個數

  • 對應lscpu的Core(S) per socket
[root@controller01 ~]# grep "cpu cores" /proc/cpuinfo|uniq
cpu cores       : 10
[root@controller01 ~]# 

在這裏插入圖片描述

查看每個物理CPU上邏輯CPU個數

對應lscpu的:總cpu(CPU(s)) / 物理cpu個數(Socket(s))

[root@controller01 ~]# grep "siblings" /proc/cpuinfo|uniq
siblings        : 20
[root@controller01 ~]# 

在這裏插入圖片描述

腳本一次性查看上面4個信息

  • 腳本內容
#!/bin/bash

physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0

logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F':' '{print $2}'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))

echo "****** CPU Information ******"
echo "Logical CPU Number : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number : ${coreNumber}"
echo "HT Number : ${HTNumber}"

echo "*****************************"
  • 運行結果
[root@controller01 ~]# ./cpuinfo # cpuinfo是自定義名稱
****** CPU Information ******
Logical CPU Number : 80
Physical CPU Number : 4
CPU Core Number : 10
HT Number : 20

判斷是否開啓了超線程

如果多個邏輯CPU的"physical id"和"core id"均相同,說明開啓了超線程
或者換句話說
邏輯CPU個數 > 物理CPU個數 * CPU內核數 開啓了超線程
邏輯CPU個數 = 物理CPU個數 * CPU內核數 沒有開啓超線程

建議使用lscpu看信息

最開始說到了 有些服務器通過命令篩選是沒有結果的,但能通過 lscpu 查看,如下圖:

[root@node-55 ~]# grep "cpu cores" /proc/cpuinfo|uniq 
[root@node-55 ~]# 
[root@node-55 ~]# grep "siblings" /proc/cpuinfo|uniq
[root@node-55 ~]# 
[root@node-55 ~]# lscpu
Architecture:          ppc64le
Byte Order:            Little Endian
CPU(s):                80
On-line CPU(s) list:   0,8,16,24,32,40,48,56,64,72
Off-line CPU(s) list:  1-7,9-15,17-23,25-31,33-39,41-47,49-55,57-63,65-71,73-79
Thread(s) per core:    1
Core(s) per socket:    10
Socket(s):             1
NUMA node(s):          1
Model:                 2.0 (pvr 004d 0200)
Model name:            POWER8 (raw), altivec supported
L1d cache:             64K
L1i cache:             32K
L2 cache:              512K
L3 cache:              8192K
NUMA node0 CPU(s):     0,8,16,24,32,40,48,56,64,72
[root@node-55 ~]# 

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章