
當我運行 top 時,我顯示 CPU 0-7。當我做:
cat /proc/cpuinfo | grep "cpu cores" | uniq
我得到:
cpu cores : 4
如果我 grep "physical id" 我有 1。
我認為我的命令是錯誤的,而 top 是正確的。這不是虛擬機,而是實體伺服器,RedHat。我究竟做錯了什麼?
我不確定這些答案:
編輯:我是否更正該實體 ID,如果它只顯示 1,那麼我的主機板上有一個實體晶片?
編輯:它是一個 Intel(R) Xeon(R) CPU X5560 @ 2.80GHz 但物理 id 是 1,我以為它會是 0,但 cpuinfo 中沒有實體 id 0。
編輯:如果重要的話,我正在嘗試找出他們在哪裡進行 0.5 核心數量的許可。
答案1
X5560是一個單晶片。它看起來像這樣:
grep "physical id"
告訴您您安裝了一個實體處理器。
如果您將散熱器從頂部取下,您可以看到這一點 - 單一物理死(面朝下) :
如果你可以移除那個骰子並將其翻轉過來,它看起來會像這樣:
在那個單一的實體晶片上有四個物理CPU核心構建在矽上:
grep "cpu cores"
告訴您您的處理器內建了四個實體核心。
每個核心都是一個處理器,具有浮點單元、多個整數執行單元、一對暫存器堆疊以及一些其他功能,允許每個核心一次有效地執行兩個獨立的指令流(執行緒)。
top
告訴您電腦上的所有處理器和核心總共可以一次執行八個獨立的工作流程 - 它告訴您作業系統能夠在任何給定時間安排八個並發線程執行。
答案2
你使用什麼CPU?每個物理核心有多少執行緒?
cat /proc/cpuinfo
顯示物理核心數,同時top
顯示存在的總線程數。
我認為你的CPU有4個物理核心,每個物理核心有2個邏輯核心。所以顯示的是top
8。
此外,內容在/proc/cpuinfo
某種程度上依賴實作。就像在 root android shell 中一樣,該cpuinfo
檔案不包含任何 term cpu cores
。
然而,cpuinfo
每個線程被命名為processor : X
,其中X
線程號。所以最後一個線程 no 要與top/htop
輸出相同。
結果nproc --all
也應符合top/htop
答案3
top
每個邏輯 CPU 顯示一個「CPU」;在 x86 上,這是系統中的套接字數量、每個套接字的物理核心數量、每個核心的執行緒數量的乘積。
cpu cores
中的條目同樣/proc/cpuinfo
在 x86 上顯示物理核心的數量。要查找邏輯核心的數量(如 中所用)top
,您應該查看該siblings
值:
cat /proc/cpuinfo | grep "siblings" | uniq
這在內核文件。
lscpu
提供有關已安裝 CPU 的信息,這比它更容易理解/proc/cpuinfo
(或者更確切地說,它以更簡單的方式呈現相同的信息)。
答案4
cpuinfo 顯示實際的核心,而 htop/top 顯示核心和線程作為核心。