Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統 CPU 核心數與超執行緒判斷完整指南

編輯:Linux 教學

前言

在 Linux 系統管理與效能調校中,準確掌握 CPU 的物理封裝數、核心數以及邏輯處理器數量至關重要。本文將系統性整理從 C 語言 API 到 Shell 指令的多種判斷方法,並透過實際 /proc/cpuinfo 輸出範例,示範如何識別超執行緒(Hyper-Threading)與多核心架構。

一、C 語言快速取得線上邏輯處理器數

最簡單的方法是呼叫 sysconf:

#include <unistd.h>
long num = sysconf(_SC_NPROCESSORS_ONLN);

回傳值即為目前系統上線的邏輯 CPU 數量。

二、核心判斷邏輯:physical id 與 core id

/proc/cpuinfo 中有兩個關鍵欄位:

  • physical id:實體 CPU 封裝的唯一識別碼。相同 physical id 表示屬於同一顆實體 CPU 的執行緒或核心。
  • core id:核心的唯一識別碼。相同 core id 表示為同一核心內的超執行緒。

判斷規則總結:

  1. 擁有相同 core id 的邏輯 CPU 為同一核心的超執行緒。
  2. 擁有相同 physical id 的邏輯 CPU 屬於同一實體 CPU 封裝。

三、實戰範例解析:LunarPages 伺服器

以下節錄四筆 processor 記錄:

processor : 0  physical id : 0  core id : 0  cpu cores : 1  siblings : 2
processor : 1  physical id : 0  core id : 0  cpu cores : 1  siblings : 2
processor : 2  physical id : 3  core id : 3  cpu cores : 1  siblings : 2
processor : 3  physical id : 3  core id : 3  cpu cores : 1  siblings : 2

分析結果:

  • 共 4 個邏輯 CPU(processor 0~3)。
  • physical id 有 0 和 3 兩組 → 2 顆實體 CPU。
  • 每顆實體 CPU 下 core id 唯一且 cpu cores = 1 → 單核心。
  • siblings = 2 且同一 core id 出現兩次 → 啟用超執行緒。
  • 型號顯示 Intel(R) Xeon(TM) CPU 3.00GHz,無具體型號數字(如 X3230),且快取 2MB,推測為 NetBurst 微架構的 Xeon(Pentium 4 代),效能較弱。

四、常用 Shell 指令速查表

目的指令
邏輯 CPU 總數cat /proc/cpuinfo | grep 'processor' | wc -l
實體 CPU 顆數cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
每顆實體 CPU 核心數cat /proc/cpuinfo | grep 'cpu cores' | uniq
是否啟用超執行緒若存在相同 core id 的多筆記錄即為啟用
每顆實體 CPU 邏輯處理器數cat /proc/cpuinfo | grep 'siblings' | uniq

五、識別 CPU 型號真偽的技巧

  • 新款多核心 Xeon:model name 會顯示具體型號數字,例如 Intel(R) Xeon(R) CPU X3230 @ 2.66GHz。
  • 舊款 Pentium 4 架構 Xeon:僅顯示 Intel(R) Xeon(TM) CPU 3.00GHz,無型號數字,快取通常 1~2 MB。
  • 主機商若宣稱「多核心」但 model name 無具體數字、快取 1 MB,大多為 Pentium 系列或假雙核。

六、/proc/cpuinfo 關鍵欄位完整說明

現代核心已完善支援多路平台,以下六個欄位為核心:

  • processor:邏輯處理器唯一識別碼。
  • physical id:實體封裝唯一識別碼。
  • core id:核心唯一識別碼。
  • siblings:同一實體封裝內的邏輯處理器總數(含超執行緒)。
  • cpu cores:同一實體封裝內的實體核心數。
  • vendor_id:Intel 處理器為 GenuineIntel。

判斷邏輯總結:

  1. 相同 physical id = 同一實體插槽。
  2. siblings = 該封裝邏輯處理器數。
  3. 相同 core id = 同一核心。
  4. 同一 physical id 下出現多個相同 core id → 超執行緒啟用。
  5. 同一 physical id 下 core id 不同 → 多核心處理器。

七、典型拓撲範例

雙實體封裝、每封裝雙核心、每核心雙超執行緒(共 8 邏輯 CPU)的 /proc/cpuinfo 結構示意:

physical id: 0, core id: 0, siblings: 4, cpu cores: 2  (processor 0,1)
physical id: 0, core id: 1, siblings: 4, cpu cores: 2  (processor 2,3)
physical id: 1, core id: 0, siblings: 4, cpu cores: 2  (processor 4,5)
physical id: 1, core id: 1, siblings: 4, cpu cores: 2  (processor 6,7)
Copyright © Windows教程網 All Rights Reserved