【進程調度】關於CPU的sockets、dies、cores、threads含義理解


1. 先以 qemu 的配置參數為例來分析一下,

qemu 可以通過 -smp 參數指定 cpu 相關的配置,如核心的個數等,其中 SMP 是指 Symmetrical Multi-processing 對稱多處理器結構,

-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,dies=dies][,sockets=sockets]   set the number of CPUs to 'n' [default=1]   maxcpus= maximum number of total cpus, including   offline CPUs for hotplug, etc   cores= number of CPU cores on one socket (for PC, it's on one die)
  threads= number of threads on one CPU core   dies= number of CPU dies on one socket (for PC only)

筆者配置  -smp sockets=2,dies=2,cores=2,threads=2  參數啟動 linux 虛擬機,
再通過指令 cat /proc/cpuinfo 分析當前的 CPU 架構,

/ # cat /proc/cpuinfo | grep "physical id" | sort -u physical id : 0 physical id : 1

可以得到物理 CPU 個數為 2,即 sockets=2 的體現,

/ # cat /proc/cpuinfo | grep "cpu cores" | sort -u cpu cores : 4

每個 CPU 有4個核心,即 dies=2,cores=2 的體現,

/ # cat /proc/cpuinfo | grep "siblings" | sort -u siblings : 8 

每個 CPU 有8個處理線程,即 dies=2,cores=2,threads=2 的體現,

/ # cat /proc/cpuinfo | grep "processor" processor : 0 processor : 1 processor : 2 processor : 3 processor : 4 processor : 5 processor : 6 processor : 7 processor : 8 processor : 9 processor : 10 processor : 11 processor : 12 processor : 13 processor : 14 processor : 15

再看一下,當前計算機擁有的處理器個數總共為 16 個,
所以得出  processors = sockets*dies*cores*threads 

 

2. 再以筆者所認為的結構層次構造出一個示意圖,其中 DIE 只包含 CORES 並沒有一些外設的控制器等,通過圖可以更加容易理解:

 


免責聲明!

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



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