-
CPU數,核數,processor數的概念
-
CPU 數
- 獨立的中央處理單元,體現在主板上就是有多少個CPU槽位
-
CPU cores
- 在每一個CPU上,都可能有多核(core),每個核中都有獨立的ALU,FPU,Cache等組件,可以理解為CPU的物理核數。(我們常說4核8線程中的核)
-
processor
- 每一個物理核可以模擬出多個邏輯核,"超線程"技術就是通過采用特殊的指令,把邏輯內核模擬為物理超線程,這樣的核就是processor.是一個處理數據的通道,流水線。可以理解為邏輯核(比如我們常說的4核8線程中的線程)
-
查看計算機的 processor 數(虛擬核數)
-
在 linux 中使用 top 然后輸入 1 ,從 CPU0 到 CPUn 顯示的就是 CPU 的虛擬核數( processor )

-
-
查看物理核數
-
在 linux 中輸入 cat /proc/cpuinfo 就可以看到 CPU cores 和 processor 的概念

-
-
-
關於進程和線程
-
進程
- 是CPU調度和分配的基本單位
-
線程
- 是操作系統進行資源(包括CPU,內存,磁盤IO)分配的最小單位
-
關系
- 打開微信,瀏覽器都是一個進程,一個進程中可能有多個子任務,比如微信接受信息,發送信息,這些子任務都是線程
- 進程之間無法共享資源,進行通信。但是線程之間可以通信,共享進程的資源
- 開啟一個進程,就是打來一個軟件,消耗的資源多。但是線程相較進程就會節省很多資源。
-
線程之間的切換
-
分時
- 將時間平均分配,各個線程之間輪流使用
-
搶占
- 優先級高的線程搶到資源的概率大
-
-
線程開銷
- 上下文切換,保存當前線程的執行環境,並恢復要執行線程的環境。
- 線程創建和消亡的開銷
- 線程需要保存維持線程本地棧,會消耗內存
-
當線程多到一定的程度時,就會拖慢系統性能,因為多線程的切換需要資源。所以在線程數應該在性能瓶頸的 90% 。
-
-
多核下線程數量的選擇
-
Master-worker 模式
-
針對多任務,我們通常采用 Master-worker 模型。 Master 負責分配任務, worker 負責執行任務。如果 Worker 掛掉,就要 Master 負責重新調度。 Hadoop 集群即使這樣 NameNode 管理 DataNode. 這是由線程切換到節點。
-
-
計算密集型
- 程序主要是復雜的邏輯判斷和復雜的運算。比如我們常見的機器學習之類的。
- CPU利用里高,不應開太多的線程。因為線程太多會因為線程的上下文切換浪費資源。
- 計算密集型的任務同時進行的數量應當等於CPU的核心數(processo數,虛擬內核也算)
-
IO 密集型
- 程序主要是IO操作,比如磁盤IO和網絡IO。比如Hadoop的MR。
- 因為IO操作會阻塞線程,CPU大量的時間在等待IO操作的完成,因此CPU的利用率不高,可以多開線程,當IO阻塞時就切換到其他就緒的線程,提高CPU的利用率
-
如果磁盤 IO 的性能超過了總線的能力,此時的瓶頸就是 IO 而不再是 CPU ,線程開的多也沒有意義。因為總線被打滿了,數據過不來。
-
-
關於VMware虛擬機CPU核數的設置
- 機器設置:E5-2660 V2 兩顆,每顆10核,20線程
-
VMware 設置界面

-
查看 VMware 中的各種情況 ( 注意:這里顯示的都是 ID 數,不是個數 )
- CPU個數 cat /proc/cpuinfo | grep "physical id"
- CPU core cat /proc/cpuinfo | grep "core id"
- CPU processor cat /proc/cpuinfo | grep "processor"
- 對比
| 設置 |
vmCPU個數 |
vmCPU core |
vmCPU processor |
結論 |
| 處理器數量:1 每個處理器的內核數量:4 |
1 |
4 |
4 |
1U4核4線程 |
| 處理器數量:2 每個處理器的內核數量:2 |
2 |
2 |
4 |
2U1核2線程 |
| 處理器數量:4 每個處理器的內核數量:2 |
4 |
2 |
8 |
4U2核2線程 |
可見:VMware中的:處理器數量(P)實際代表的是虛擬機的CPU個數
每個處理器的內核數量(C)實際代表的是虛擬機CPU的core
-
VMware 設置內核數量的最佳實踐
- 虛擬機的CPU數設置應該是小於物理機的數量。處理器數量*每個處理器內核數量<物理機的processor數量
- 如果虛擬機的processor數大於物理機的processor數,虛擬機化管理系統首先按照時間片輪流調度一遍,然后如果還有剩余的物理CPU資源,就分給需要計算的虛擬CPU
-
參考資料【感謝你的努力,讓我有進步】
- http://blog.guoyb.com/2018/08/18/cpu-cores/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
- http://www.cnblogs.com/-new/p/7234332.html
- http://www.cnblogs.com/52mm/p/p2.html
- https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000
