線程數與多核CPU的關系,VMware中核數的設置


  • CPU數,核數,processor數的概念
    • CPU
      • 獨立的中央處理單元,體現在主板上就是有多少個CPU槽位
    • CPU cores
      • 在每一個CPU上,都可能有多核(core,每個核中都有獨立的ALUFPUCache等組件,可以理解為CPU的物理核數。(我們常說48線程中的核)
    • processor
      • 每一個物理核可以模擬出多個邏輯核,"超線程"技術就是通過采用特殊的指令,把邏輯內核模擬為物理超線程,這樣的核就是processor.是一個處理數據的通道,流水線。可以理解為邏輯核(比如我們常說的48線程中的線程)
    • 查看計算機的 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。比如HadoopMR
      • 因為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

1U44線程

處理器數量:2

每個處理器的內核數量:2

2

2

4

2U12線程

處理器數量:4

每個處理器的內核數量:2

4

2

8

4U22線程

可見:VMware中的:處理器數量(P實際代表的是虛擬機的CPU個數

每個處理器的內核數量(C實際代表的是虛擬機CPUcore

  • VMware 設置內核數量的最佳實踐
    • 虛擬機的CPU數設置應該是小於物理機的數量。處理器數量*每個處理器內核數量<物理機的processor數量
    • 如果虛擬機的processor數大於物理機的processor數,虛擬機化管理系統首先按照時間片輪流調度一遍,然后如果還有剩余的物理CPU資源,就分給需要計算的虛擬CPU

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM