# 查看完整 CPU 信息
cat /proc/cpuinfo
# 僅統計邏輯 CPU 數量(處理器編號數)
grep -c ^processor /proc/cpuinfo
# 查看物理 CPU 數量(去重 physical id)
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
# 查看每顆物理 CPU 的核心數
grep 'cpu cores' /proc/cpuinfo | uniq
# 判斷是否支持超線程(HT)
grep -q 'ht' /proc/cpuinfo && echo "支持超線程" || echo "不支持超線程"
| 字段 | 含義 | 用途 |
|---|---|---|
processor | 邏輯處理器編號(從 0 開始) | 統計邏輯 CPU 總數 |
physical id | 物理封裝 ID | 相同值 = 同一顆物理 CPU;去重計數 = 物理 CPU 數 |
core id | 核心 ID | 同一 physical id 下不同 core id = 多核心 |
cpu cores | 每顆物理 CPU 的核心數 | 直接顯示核心數 |
siblings | 同一物理 CPU 下的邏輯處理器數 | siblings > cpu cores 表示開啟超線程 |
flags | CPU 特性標志 | 含 ht 表示支持超線程技術 |
假設 /proc/cpuinfo 輸出片段如下:
processor : 4
physical id : 9
core id : 19
cpu cores : 2
siblings : 4
flags : ... ht ...
processor : 5
physical id : 9
core id : 19
cpu cores : 2
siblings : 4
flags : ... ht ...
分析結論:
physical id 均為 9)cpu cores = 2)siblings = 4,且 processor 4~7 共 4 個)超線程技術通過特殊硬件指令,在單個物理核心內模擬兩個邏輯核心,使單核心能同時執行兩個線程,提高 CPU 利用率。
| 場景 | 性能表現 | 說明 |
|---|---|---|
| 多線程並行負載 | 提升 15%~30% | 充分利用閒置執行單元 |
| 單線程負載 | 可能略微下降 | 資源爭用導致管線停頓 |
| 浮點密集型計算 | 提升有限 | FPU 為共享資源,易成瓶頸 |
#!/bin/bash
echo "=== CPU 拓撲信息 ==="
echo "物理 CPU 數: $(grep 'physical id' /proc/cpuinfo | sort -u | wc -l)"
echo "每顆核心數: $(grep 'cpu cores' /proc/cpuinfo | uniq | awk '{print $4}')"
echo "邏輯 CPU 數: $(grep -c ^processor /proc/cpuinfo)"
echo "超線程支持: $(grep -q 'ht' /proc/cpuinfo && echo '是' || echo '否')"
echo "超線程啟用: $( [ $(grep 'siblings' /proc/cpuinfo | uniq | awk '{print $3}') -gt $(grep 'cpu cores' /proc/cpuinfo | uniq | awk '{print $4}') ] && echo '是' || echo '否' )"
echo ""
echo "詳細型號: $(grep 'model name' /proc/cpuinfo | uniq | cut -d: -f2)"
通過 /proc/cpuinfo 可完整掌握 Linux 系統的 CPU 拓撲結構。關鍵在於區分物理 CPU(physical id)、核心(core id/cpu cores)與邏輯處理器(processor/siblings)三個層級。超線程技術通過邏輯核心共享物理資源提升並行吞吐,但非萬能加速器,需根據負載類型評估收益。