(1)查看CPU信息(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
輸出:可以看到有128個虛擬CPU核心,型號是后面一串
128 Intel(R) Xeon(R) Platinum 8336C CPU @ 2.30GHz
(2)查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
輸出:我們實驗室服務器只有兩個物理CPU,垃圾。
2
(3)查看每個物理CPU中core的個數(即實際核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq
輸出: 一個CPU實際核數只有32。
cpu cores : 32
(4)虛擬核心
輸出中,顯示了 CPU(s): 128,這意味著系統實際上識別到128個虛擬CPU或線程數,而不是物理CPU核心數量。這個現象通常由以下幾個原因造成:
-
超線程技術(Hyper-Threading)
-
處理器 Intel Xeon Platinum 8336C 支持 超線程技術(Hyper-Threading,HT)。每個物理核心可以通過 HT 支持多個線程。
-
每個物理核心 (Core(s) per socket: 32) 可以運行 2 個線程 (Thread(s) per core: 2)。
-
因此,2 個物理 CPU 插槽(Socket(s): 2)和每個插槽 32 個核心就提供了 32 * 2 = 64 個線程(每個物理核心有 2 個線程)。
-
因此,在兩個 CPU 插槽上,系統總共有 64 * 2 = 128 個虛擬核心(線程)。
-
-
虛擬 CPU 數量與物理核心數量的差異
-
物理 CPU 插槽數量:2
-
每個 CPU 插槽的核心數:32
-
每個核心支持線程數:2(超線程)
-
所以,系統看到的 128 個虛擬 CPU 是因為啟用了超線程(Hyper-Threading),它使得每個物理核心能夠處理兩個獨立的線程。
-
-
NUMA 配置(用于CPU間數據交換的組)
-
輸出中顯示有 2 個 NUMA 節點:
-
NUMA node0 CPU(s): 0-31, 64-95
-
NUMA node1 CPU(s): 32-63, 96-127
-
這意味著兩個 NUMA 節點分別使用了不同的 CPU 范圍。例如,節點0包含 0-31 和 64-95 的 CPU 核心,而節點1包含 32-63 和 96-127 的 CPU 核心。NUMA 配置表示內存訪問策略和 CPU 核心的關聯,也對并行計算有影響,特別是在大型多線程計算中。
-
(5)lscpu查看一些信息(包括 cache 和 cpu)
部分輸出如下:
CPU(s): 128
Core(s) per socket: 32
Thread(s) per core: 2
Socket(s): 2 // 這里的socke指的是實際CPU數量
L1d: 3 MiB (64 instances)
L1i: 2 MiB (64 instances)
其中L1d cache有64個實例,也就是說我每個物理core都有一個自己的L1d,大小都為3MiB。每個物理核心(Core)有獨立的 L1d 和 L1i 緩存。兩個邏輯核心(Hyper-Threading)共享同一個物理核心的 L1d 和 L1i 緩存。