總核數 = 物理CPU個數 X 每顆物理CPU的核數
總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數
查看物理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
查看CPU信息(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看內存信息
cat /proc/meminfo
通過對/proc/cpuinfo文件參數的分析。Linux操作系統,CPU的信息在啟動過程中被裝載到虛擬目錄/proc/cpuinfo文件中,可通過cat /proc/cpuinfo查看:


上圖是電腦的CPU信息,下面分析其中幾個比較重要的指標:
processor 邏輯處理器的id。
physical id 物理封裝的處理器的id。
core id 每個核心的id。
cpu cores 位於相同物理封裝的處理器中的內核數量。
siblings 位於相同物理封裝的處理器中的邏輯處理器的數量。
返回去看上圖,physical id都為0,說明只有一個物理處理器;
processor有兩個不同的編號,並且同屬於一個physical id,同時cpu cores值為2,這也就說明了CPU是雙核心的,並且每個核心只有一個邏輯處理器。
為加深對這幾個參數的理解,再來看一台工作站的服務器:

在這個服務器上,cpu cores為4,physical id有兩個,core id有8個,siblings的值為8,總共有16個processor。
所以這個服務器主機的CPU為2個物理封裝的處理器,每個處理器又有4個處理核心(cpu cores),每個cpu core有可划分為2個邏輯處理器(超線程技術),因此,每個物理處理器上有8個邏輯處理器,總共就有16個processor。大體的結構如下圖:

原文鏈接:https://blog.csdn.net/sycflash/article/details/6643492
Linux下區分物理CPU、邏輯CPU、CPU核數、線程數以及查看命令
概念
① 物理CPU
實際服務器中插槽上的CPU個數
是指物理上,也就是硬件上存在着幾顆物理cpu,指的是真實存在是cpu處理器的個數,1個代表一顆,2個代表2顆cpu處理器。
物理cpu數量,可以數不重復的 physical id 有幾個
② 邏輯CPU
Linux用戶對 /proc/cpuinfo 這個文件肯定不陌生. 它是用來存儲cpu硬件信息的
信息內容分別列出了processor 0 – n 的規格。這里需要注意,如果你認為n就是真實的cpu數的話, 就大錯特錯
一般情況,我們認為一顆cpu可以有多核,加上intel的超線程技術(HT), 可以在邏輯上再分一倍數量的cpu core出來,這時邏輯CPU數就是核心數的兩倍
邏輯CPU數量=物理cpu數量 x cpu cores 這個規格值 x 2(如果支持並開啟ht)
備注一下:Linux下top按1后 查看的CPU也是邏輯CPU個數
③ CPU核數
一塊CPU上面能處理數據的芯片組的數量、比如現在的i5 760,是雙核心四線程的CPU、而 i5 2250 是四核心四線程的CPU
核心數:一個核心就是一個物理線程,英特爾有個超線程技術可以把一個物理線程模擬出兩個線程來用,充分發揮CPU性能,意思是一個核心可以有多個線程。
線程數:線程數是一種邏輯的概念,簡單地說,就是模擬出的CPU核心數。比如,可以通過一個CPU核心數模擬出2線程的CPU,也就是說,這個單核心的CPU被模擬成了一個類似雙核心CPU的功能。
一般來說,物理CPU個數×每顆核數就應該等於邏輯CPU的個數,如果不相等的話,則表示服務器的CPU支持超線程技術
查看CPU信息
vendor id 如果處理器為英特爾處理器,則字符串是 Genuine Intel。
processor 包括這一邏輯處理器的唯一標識符。
physical id 包括每個物理封裝的唯一標識符。
core id 保存每個內核的唯一標識符。
siblings 列出了位於相同物理封裝中的邏輯處理器的數量。
cpu cores 包含位於相同物理封裝中的內核數量。
擁有相同physical id的所有邏輯處理器共享同一個物理插座,每個physical id代表一個唯一的物理封裝。
Siblings 表示位於這一物理封裝上的邏輯處理器的數量,它們可能支持也可能不支持超線程(HT)技術。
每個 core id 均代表一個唯一的處理器內核,所有帶有相同 core id 的邏輯處理器均位於同一個處理器內核上。簡單的說:“siblings”指的是一個物理CPU有幾個邏輯 CPU,”cpu cores“指的是一個物理CPU有幾個核。
如果有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支持超線程(HT)技術。
如果有兩個或兩個以上的邏輯處理器擁有相同的 physical id,但是 core id不同,則說明這是一個多內核處理器。cpu cores條目也可以表示是否支持多內核。
舉例說明
① 查看物理CPU的個數
[root@test01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
2
② 查看邏輯CPU的個數
[root@test01 ~]# cat /proc/cpuinfo |grep "processor"|wc -l
24
③ 查看CPU是幾核
[root@test01 ~]# cat /proc/cpuinfo |grep "cores"|uniq
cpu cores : 6
④查看CPU型號
[root@test01 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
24 Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
這里應該是2個物理CPU,每個CPU有6個核,是Intel的CPU,而且支持超線程,所以顯示24,24為邏輯CPU個數
另外,top下按1也可以看邏輯CPU的個數,從0開始排序,如圖顯示的是24個
原文鏈接:https://blog.csdn.net/lcm_linux/article/details/104009080
Linux下關於物理CPU、邏輯CPU和CPU核數、超線程
1、概念
(1) 【物理CPU數】 :實際Server中插槽上的CPU個數,物理cpu數量可以數不重復的 physical id 有幾個 (physical id)
(2) 【CPU核數】:單塊CPU上面能處理數據的芯片組的數量,如雙核、四核等 (cpu cores)
(3)【邏輯CPU數】:一般情況下,邏輯cpu=物理CPU個數×每顆核數,如果不相等的話,則表示服務器的CPU支持超線程技術(HT:簡單來說,它可使處理器中的1 顆內核如2 顆內核那樣在操作系統中發揮作用。這樣一來,操作系統可使用的執行資源擴大了一倍,大幅提高了系統的整體性能,此時邏輯cpu=物理CPU個數×每顆核數x2)
(4)【超線程】:超線程(Hyper-Threading,簡稱“HT”)”技術。超線程技術就是利用特殊的硬件指令,把兩個邏輯內核模擬成兩個物理芯片,讓單個處理器都能使用線程級並行計算,進而兼容多線程操作系統和軟件,減少了CPU的閑置時間,提高的CPU的運行效率。
超線程技術是在一顆CPU同時執行多個程序而共同分享一顆CPU內的資源,理論上要像兩顆CPU一樣在同一時間執行兩個線程,雖然采用超線程技術能同時執行兩個線程,但它並不象兩個真正的CPU那樣,每個CPU都具有獨立的資源。當兩個線程都同時需要某一個資源時,其中一個要暫時停止,並讓出資源,直到這些資源閑置后才能繼續。因此超線程的性能並不等於兩顆CPU的性能。
2、計算公式
總核數 = 物理CPU個數 X 每顆物理CPU的核數
總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數
3、使用命令如何查看
(1)查看物理CPU的個數
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
(2)查看CPU是幾核(核數)
cat /proc/cpuinfo |grep "cores"|uniq
(3)查看邏輯CPU的個數
cat /proc/cpuinfo |grep "processor"|wc -l
(4)查看是否具有超線程
#列出位於相同物理封裝中的邏輯處理器的數量
cat /proc/cpuinfo |grep "siblings" |uniq
#看下siblings數目與cpu cores數目之間的關系
cat /proc/cpuinfo |grep "siblings" |uniq && cat /proc/cpuinfo |grep "cpu cores" |uniq
#如果“siblings”和“cpu cores”一致,則說明不支持超線程,或者超線程未打開。
#如果“siblings”是“cpu cores”的兩倍,則說明支持超線程,並且超線程已打開。
#如果有兩個邏輯CPU具有相同的”core id”,那么超線程是打開的。
[root@localhost ~]# grep 'core id' /proc/cpuinfo
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
示例:

(5)查看CPU基本信息的命令
#查看 CPU 型號
dmidecode -s processor-version
#查看 CPU 的詳細信息:
cat /proc/cpuinfo
4、查看CPU信息
vendor id 如果處理器為英特爾處理器,則字符串是 GenuineIntel。
processor 包括這一邏輯處理器的唯一標識符。
physical id 包括每個物理封裝的唯一標識符。
core id 保存每個內核的唯一標識符。
siblings 列出了位於相同物理封裝中的邏輯處理器的數量。
cpu cores 包含位於相同物理封裝中的內核數量。
1. 擁有相同 physical id 的所有邏輯處理器共享同一個物理插座,每個 physical id 代表一個唯一的物理封裝。
2. Siblings 表示位於這一物理封裝上的邏輯處理器的數量,它們可能支持也可能不支持超線程(HT)技術。
3. 每個 core id 均代表一個唯一的處理器內核,所有帶有相同 core id 的邏輯處理器均位於同一個處理器內核上。簡單的說:“siblings”指的是一個物理CPU有幾個邏輯 CPU,”cpu cores“指的是一個物理CPU有幾個核。
4. 如果有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支持超線程(HT)技術。
5. 如果有兩個或兩個以上的邏輯處理器擁有相同的 physical id,但是 core id不同,則說明這是一個多內核處理器。cpu cores條目也可以表示是否支持多內核。

5、腳本自動檢測CPU信息
#!/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 "*****************************"
原文鏈接:https://blog.csdn.net/u011391839/article/details/107512687
