一、基本概念
為了給電腦更高的性能,一台計算機可以包含多個物理 CPU,一個物理 CPU 中可以集成了多個內核,這樣電腦的性能就能成倍的提升.隨着科技的發展,我們發現每個內核的性能也是十分強大的,於是一個內核又被分成兩個線程.但是,我們要注意的是,一個 CPU 分成多個內核,這是物理的分隔,拆開 CPU 是可以看到的;但是一個內核被分成兩個線程是一種超線程技術,也就是串代碼,操作系統會認為一個線程也是一個內核,這其實就有點欺騙操作系統的感覺了
二、計算公式
總核數 = 物理 CPU 個數 x 每個物理 CPU 的核數
邏輯 CPU 個數 = 物理 CPU 個數 x 每個物理 CPU 的核數 x 超線程數
三、Linux 查詢命令
# 查看物理 CPU 的個數(uniq:去重)
cat /proc/cpuinfo | grep "physical id" | sort | uniq
# 查詢每個物理 CPU 的核心數
cat /proc/cpuinfo | grep "cpu cores" | sort | uniq
# 查看每個物理 CPU 核心上的邏輯處理個數
cat /proc/cpuinfo | grep 'siblings' | sort | uniq
# 查看邏輯 CPU 的個數
cat /proc/cpuinfo | grep "processor" | sort | uniq
四、驗證
1、服務器一(4 核心 4 線程)
物理 CPU 個數: 2
每個物理 CPU 上核心數: 2
每個物理 CPU 封裝的處理器數量: 2 (每個 CPU 上的處理器數量 = 每個 CPU 上的核心數,代表未開超線程)
邏輯 CPU 的個數: 4
2、服務器二(16 核心 32 線程)
物理 CPU 個數: 2
每個物理 CPU 上核心數: 8
每個物理 CPU 封裝的處理器數量: 16 (每個 CPU 上的處理器數量是每個 CPU 上的核心數倍數,代表開了超線程)
邏輯 CPU 的個數: 32