Linux下判斷cpu物理個數,幾核,是超執行緒還是多核心
今天檢視一個HP DL580 機器, 發現 /proc/cpuinfo 上有 64 條記錄(0~63), 即 64 核, 但是physical_id 是 0~3 ,表示有 4 顆實體的CPU , 然而cpu cores = 8 , 算出來應該是 4*8=32核 , 看到的卻是64, 後來發現siblings = 16表示超執行緒 (16/8=2 >1) . 所以是 4*16=64 核 。
siblings : 16
core id : 11
cpu cores : 8
相關資料:
-----------------------------------------------------
目前intel新的多核心cpu都會在後面顯示具體的型號數字,例如:
model name : Intel(R) Xeon(R) CPU X3230 @ 2.66GHz
說明是 Xeon 3230的cpu,而不顯示型號的具體數字的,大部分都是奔騰的CPU。很多主機商都騙人,用奔騰的cpu,卻說是多核心的CPU。
探針看到的資料:
型別:Intel(R) Xeon(TM) CPU 2.80GHz 快取:1024 KB
型別:Intel(R) Xeon(TM) CPU 2.80GHz 快取:1024 KB
型別:Intel(R) Xeon(TM) CPU 2.80GHz 快取:1024 KB
型別:Intel(R) Xeon(TM) CPU 2.80GHz 快取:1024 KB
沒有具體的型號,快取1M,一般都是奔騰系列的cpu,或者是intel假雙核的cpu,具體要根據上面說的去判斷。新的多核心cpu都能看到具體的型號。另外多核心的xeon的CPU,一般主頻都不高,達到2.8和3.0的只有很少的幾個高階CPU型號,一般主機商不會用這麼好的。
一些作業系統的最新版本已經更新了 /proc/cpuinfo 檔案,以支援多路平臺。如果您的系統中的 /proc/cpuinfo 檔案能夠正確地反映出處理器資訊,那麼就不需要執行上述步驟。反之,可採用本文中的資訊進行解釋。
/proc/cpuinfo 檔案包含系統上每個處理器的資料段落。/proc/cpuinfo 描述中有 6 個條目適用於多核心和超執行緒(HT)技術檢查:vendor id, processor, physical id, core id, siblings 和 cpu cores。
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 條目也可以表示是否支援多核心。
不應該按照flags裡是否有 ht 標誌來判斷系統是否有超執行緒能力,而應該:
如果“siblings”和“cpu cores”一致,則說明不支援超執行緒,或者超執行緒未開啟。
如果“siblings”是“cpu cores”的兩倍,則說明支援超執行緒,並且超執行緒已開啟。
例如,如果系統包含兩個物理封裝,每個封裝中又包含兩個支援超執行緒(HT)技術的處理器核心,則 /proc/cpuinfo 檔案將包含此資料。(注:資料並不在表格中。)
processor 0 4 2 6 1 5 3 7
physical id 0 0 0 0 1 1 1 1
core id 0 0 1 1 2 2 3 3
siblings 4 4 4 4 4 4 4 4
cpu cores 2 2 2 2 2 2 2 2
此例說明:
1)一個物理封裝有四個核心,即有4個邏輯處理器。
2)一個核心上有2個不同的processer,即系統支援超執行緒技術(HT)。
3)cpu cores條目為2,而siblings的數目卻是4,故支援超執行緒技術(4/2=2>1)。
4)值得注意的是physical id和core id的編號可能是也可能不是連續的。系統上有兩個物理封裝並不罕見,而且physical id可能等於0和3。
可透過如下方法查詢CPU情況:
1. 邏輯CPU個數:
# cat /proc/cpuinfo | grep “processor” | wc -l
2. 物理CPU個數:
# cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
3. 每個物理CPU中Core的個數:
# cat /proc/cpuinfo | grep “cpu cores” | wc -l
是否為超執行緒?
如果有兩個邏輯CPU具有相同的”core id”,那麼超執行緒是開啟的。
4. 每個物理CPU中邏輯CPU(可能是core, threads或both)的個數:
# cat /proc/cpuinfo | grep “siblings”
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-682873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 4核8執行緒和6核6執行緒的CPU哪個好?電腦CPU核數多和執行緒多的區別執行緒
- 檢視伺服器CPU的個數、CPU的核數、多核超執行緒數伺服器執行緒
- 如何檢視CPU核數和執行緒數?CPU的核心數、執行緒數的關係和區別執行緒
- redis自學(22)Redis是單執行緒還是多執行緒?Redis執行緒
- cpu、核與執行緒執行緒
- 1、多執行緒同步——CPU、core核、執行緒、記憶體執行緒記憶體
- Linux下判斷磁碟是SSD還是HDD的3種方法Linux
- python怎麼判斷一個數是幾位數Python
- 面試官問,Redis 是單執行緒還是多執行緒?我懵了面試Redis執行緒
- python 判斷變數是數字型還是字元型Python變數字元
- 24. 一個普通main方法的執行,是單執行緒模式還是多執行緒模式?為什麼?AI執行緒模式
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- 聊聊CPU的發展歷程之單核、多核、超執行緒單核執行緒
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python
- Windos bat批處理指令碼,判斷是終端命令列執行,還是雙擊執行BAT指令碼命令列
- 根據CPU核數合理設定執行緒池大小執行緒
- REDHAT中如何判斷主機的CPU是32位還是64位的Redhat
- 多執行緒斷點下載原理執行緒斷點
- 判斷javaScript變數是Ojbect型別還是Array型別JavaScript變數型別
- Windows下繫結執行緒到指定的CPU核心Windows執行緒
- 編寫類 AA ,有一個方法:判斷一個數是奇數 odd 還是偶數, 返回 booleanBoolean
- linux下把程式繫結到特定cpu核上執行Linux
- jstack判斷執行緒狀態JS執行緒
- 靜態變數在多執行緒環境下的初始化是執行緒安全的嗎?變數執行緒
- 對多執行緒程式,單核cpu與多核cpu如何工作相關的探討執行緒單核
- python如何判斷一個數是否是整數Python
- 執行緒池中多餘的執行緒是如何回收的?執行緒
- JS 判斷客戶端是iOS還是AndroidJS客戶端iOSAndroid
- 判斷使用的是 x11 還是 wayland
- fastjson判斷JSON字串是Object還是List<Object>ASTJSON字串Object
- 什麼是多執行緒?Python多執行緒有什麼優勢?執行緒Python
- 多執行緒面試題之多執行緒有幾種實現方案,分別是什麼執行緒面試題
- 多執行緒下載、數學求解器... Edge,你還有多少驚喜是我不知道的?執行緒
- 判斷應用所執行的CPU型別型別
- 【數學問題】判斷一個數是否是素數
- cv2 判斷圖片是冷還是暖
- Linux判斷上一個語句是否執行成功Linux
- 原生js 判斷變數是一個陣列JS變數陣列
- 蘋果A12是四核還是六核處理器?iPhone Xs的處理器是幾核的蘋果iPhone