默認(rèn)情況下是Intel I9,10核,每個(gè)核2個(gè)threads,共20個(gè)CPUs:
下面編譯內(nèi)核:
需要2分鐘30秒左右。
再來(lái)一遍:
這說(shuō)明make clean, drop_caches后時(shí)間也差不多。
現(xiàn)在我們關(guān)閉smt,只保留10個(gè)CPU:
具體的關(guān)閉方法就是:
sudo sh -c ‘echo off 》 /sys/devices/system/cpu/smt/control’
這樣只剩下10個(gè)CPU,下面來(lái)編譯:
時(shí)間2分51秒,相對(duì)于2分30秒,速度下降僅僅14%。
這說(shuō)明超線程SMT對(duì)性能的提升絕對(duì)沒(méi)有達(dá)到100%,甚至都沒(méi)有達(dá)到20%。
我們現(xiàn)在重新開啟超線程:
sudo sh -c ‘echo on 》 /sys/devices/system/cpu/smt/control’
看一下哪個(gè)CPU和哪個(gè)CPU是thread sibling:
看起來(lái)CPU0和CPU10是一對(duì),CPU1和CPU11是一對(duì),依次類推。
剛才我們關(guān)閉SMT是把CPU10-CPU19全關(guān)了,只留下每對(duì)里面的1個(gè)CPU,也就是留下了CPU0-CPU9。
在開啟SMT的時(shí)候(假設(shè)藍(lán)色和紅色是一個(gè)CORE里面的兩個(gè)CPU):
在關(guān)閉SMT的時(shí)候,等于每對(duì)里面只留1個(gè)CPU:
現(xiàn)在我們換一種關(guān)法,一對(duì)對(duì)關(guān),只留下五對(duì):
指令如下:
實(shí)現(xiàn)效果如下:
再重新編譯內(nèi)核:
現(xiàn)在耗時(shí)是3分10秒,想對(duì)于所有CPU全開,下降27%。相對(duì)于每個(gè)core里面只關(guān)一個(gè)線程,下降12%。
這就比較神奇了?為什么我關(guān)了5個(gè)core,性能沒(méi)有下降100%呢?這至少說(shuō)明一個(gè)問(wèn)題,從5core到10core,Intel I9編譯內(nèi)核性能并沒(méi)有線性地scale。只是從3分10秒,提升到2分30秒。
責(zé)任編輯:haq
-
處理器
+關(guān)注
關(guān)注
68文章
19404瀏覽量
230762 -
intel
+關(guān)注
關(guān)注
19文章
3483瀏覽量
186294
原文標(biāo)題:這到底是為什么?「元芳,你怎么看?」
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論