線程數與多核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"
    • 對比

設置html

vmCPU個數linux

vmCPU core瀏覽器

vmCPU processor微信

結論網絡

處理器數量:1多線程

每一個處理器的內核數量:4機器學習

1oop

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

       

相關文章
相關標籤/搜索