精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

超線程Smt究竟可以快多少?(斐波那契版)

商務辦公
SMT測試很有意思,但是編譯內核涉及的因素太多了,包括訪問文件系統等耗時受到存儲器性能的影響,難以估算,因此很難評判SMT對性能的提升如何。

[[430416]]

宋老師的SMT測試很有意思,但是編譯內核涉及的因素太多了,包括訪問文件系統等耗時受到存儲器性能的影響,難以估算,因此很難評判SMT對性能的提升如何。

為了探究SMT對計算密集型workload的效果,我自己寫了一個簡單的測試程序。

使用pthread開多個線程,每個線程分別計算斐波那契數列第N號元素的值。每個線程計算斐波那契數列時除線程的元數據外只分配兩個unsigned long變量,由此避免過高的內存開銷。

workload的詳細代碼和測試腳本在[https://github.com/HongweiQin/smt_test]

毫無疑問,這是一個計算密集型負載,我在自己的筆記本上運行,配置如下(省略了一些不重要的項目):

  1. $ lscpu 
  2. Architecture:                    x86_64 
  3. CPU(s):                          12 
  4. On-line CPU(s) list:             0-11 
  5. Thread(s) per core:              2 
  6. Core(s) per socket:              6 
  7. Socket(s):                       1 
  8. NUMA node(s):                    1 
  9. Vendor ID:                       GenuineIntel 
  10. Model name:                      Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 
  11. L1d cache:                       192 KiB 
  12. L1i cache:                       192 KiB 
  13. L2 cache:                        1.5 MiB 
  14. L3 cache:                        12 MiB 

可以看到筆記本有一個Intel i7的處理器,6核12線程。經查,CPU0和CPU6共用一個Core,CPU1和CPU7共用一個Core,以此類推。

以下的測試(Test 1-5)中,每個線程分別計算斐波那契數列第40億號元素的數值。

Test1:采用默認配置,開12線程進行測試。測試結果為總耗時45.003s。

  1. qhw@qhw-laptop:~/develop/smt_test$ time ./smt_test -f 4000000000 
  2. threads_num=12, fibonacci_max=4000000000, should_set_affinity=0, should_inline=1, alloc_granularity=32 
  3.   
  4. real0m45.003s 
  5. user7m12.953s 
  6. sys0m0.485s 

Test2:把smt關掉,同樣的測試方法(12線程)。總耗時為25.733s。

  1. qhw@qhw-laptop:~/develop/smt_test$ cat turnoff_smt.sh 
  2. #!/bin/bash 
  3.  
  4. echo "turn off smt" 
  5. sudo sh -c 'echo off > /sys/devices/system/cpu/smt/control' 
  6. qhw@qhw-laptop:~/develop/smt_test$ ./turnoff_smt.sh 
  7. turn off smt 
  8. qhw@qhw-laptop:~/develop/smt_test$ time ./smt_test -f 4000000000 
  9. threads_num=12, fibonacci_max=4000000000, should_set_affinity=0, should_inline=1, alloc_granularity=32 
  10.   
  11. real0m25.733s 
  12. user2m23.525s 
  13. sys0m0.116s 

對,你沒看錯。同樣的workload,如果關掉smt,總耗時還變少了。Intel誠不欺我!

Test3:再次允許smt,但是將程序限制在三個物理Core上運行,則總耗時為34.896s。

  1. qhw@qhw-laptop:~/develop/smt_test$ ./turnon_smt.sh 
  2. turn on smt 
  3. qhw@qhw-laptop:~/develop/smt_test$ time taskset -c 0-2,6-8 ./smt_test -f 4000000000 
  4. threads_num=12, fibonacci_max=4000000000, should_set_affinity=0, should_inline=1, alloc_granularity=32 
  5.   
  6. real0m34.896s 
  7. user3m17.033s 
  8. sys0m0.028s 

Test3相比于Test1用了更少的Core,反而更快了。

為什么在Test2和3會出現這樣違反直覺的結果?

猜想:Cache一致性在作怪!

圖1

測試程序的main函數會分配一個含有T(T=nr_threads)個元素的`struct thread_info`類型的數組,并分別將每個元素作為參數傳遞給每個計算線程使用。`struct thread_info`定義如下:

  1. struct thread_info { 
  2. pthread_t thread_id; 
  3. int thread_num; 
  4. unsigned long res[2]; 
  5. }; 

結構體中的res數組用于計算斐波那契數列,因此會被工作線程頻繁地寫。

注意到,sizeof(struct thread_info)為32,而我的CPU的cacheline大小為64B!這意味著什么?

圖2

如圖所示,如果Thread 0在Core 0上運行,則它會頻繁寫tinfo[0],Thread 1在Core 1上運行,則它會頻繁寫tinfo[1]。

這意味著,當Thread 0寫tinfo[0]時,它其實是寫入了Core 0上L1 Cache的Cacheline。同樣的,當Thread 1寫tinfo[1]時,它其實是寫入了Core 1上L1 Cache的Cacheline。此時,由于Core 1上的Cacheline并非最新,因此CPU需要首先將Core 0中的Cacheline寫入多核共享的L3 Cache甚至是內存中,然后再將其讀入Core 1的L1 Cache中,最后再將Thread 1的數據寫入。此時,由于Cache 0中的數據并非最新,Cacheline會被無效化。由此可見,如果程序一直這樣運行下去,這一組數據需要在Cache 0和1之間反復跳躍,占用較多時間。

這個猜想同樣可以解釋為什么使用較少的CPU可以加速程序運行。原因是當使用較少的CPU時,多線程不得不分時共用CPU,如果Thread 0和Thread 1分時共用了同一個CPU,則不需要頻繁將Cache無效化,程序運行時間也就縮短了。

驗證猜想:增加內存分配粒度!

對程序進行修改后,可以使用`-g alloc_granularity`參數設定tinfo結構體的分配粒度。使用4KB為粒度進行分配,再次進行測試:

Test4:12線程,開啟SMT,分配粒度為4096。總耗時為13.193s,性能相比于Test1的45.003s有了質的提升!

  1. qhw@qhw-laptop:~/develop/smt_test$ time ./smt_test -f 4000000000 -g 4096 
  2. threads_num=12, fibonacci_max=4000000000, should_set_affinity=0, should_inline=1, alloc_granularity=4096 
  3.   
  4. real0m13.193s 
  5. user2m31.091s 
  6. sys0m0.217s 

Test5:在Test4的基礎上限制只能使用3個物理Core。總耗時為24.841s,基本上是Test4的兩倍。這說明在這個測試下,多核性能還是線性可擴展的。

  1. qhw@qhw-laptop:~/develop/smt_test$ time taskset -c 0-2,6-8 ./smt_test -f 4000000000 -g 4096 
  2. threads_num=12, fibonacci_max=4000000000, should_set_affinity=0, should_inline=1, alloc_granularity=4096 
  3.   
  4. real0m24.841s 
  5. user2m26.253s 
  6. sys0m0.032s 

超線程SMT究竟可以快多少?

表格和結論:

 

測試名  硬件配置  運行時間(s)
Test6  “真”6核   38.562 
Test7 “假”6核  58.843
Test8 “真”3核   73.175 

測試使用的是6個工作線程。為了減少誤差,增加一點運行時間,每個線程計算斐波那契數列第200億項的值。

對比Test6和7,可以看到SMT的提升大概在52.6%左右。

測試記錄:

Test6:別名“真”6核,使用6個關閉了SMT的物理核進行計算。總耗時為38.562s。

Test7:別名“假”6核,使用3個開啟了SMT的物理核進行計算。總耗時為58.843s。

Test8:別名“真”3核,使用3個關閉了SMT的物理核進行計算。總耗時為1m13.175s。

  1. qhw@qhw-laptop:~/develop/smt_test$ cat test.sh 
  2. #!/bin/bash 
  3.  
  4. fibonacci=20000000000 
  5. sudo printf "" 
  6.   
  7. ./turnoff_smt.sh 
  8. time ./smt_test -f $fibonacci -g 4096 -t 6 
  9.   
  10. ./turnon_smt.sh 
  11. time taskset -c 0-2,6-8 ./smt_test -f $fibonacci -g 4096 -t 6 
  12.   
  13. ./turnoff_smt.sh 
  14. time taskset -c 0-2,6-8 ./smt_test -f $fibonacci -g 4096 -t 6 
  15.   
  16. ./turnon_smt.sh 
  17. qhw@qhw-laptop:~/develop/smt_test$ ./test.sh 
  18. turn off smt 
  19. threads_num=6, fibonacci_max=20000000000, should_set_affinity=0, should_inline=1, alloc_granularity=4096 
  20.   
  21. real0m38.562s 
  22. user3m50.786s 
  23. sys0m0.000s 
  24. turn on smt 
  25. threads_num=6, fibonacci_max=20000000000, should_set_affinity=0, should_inline=1, alloc_granularity=4096 
  26.   
  27. real0m58.843s 
  28. user5m53.018s 
  29. sys0m0.005s 
  30. turn off smt 
  31. threads_num=6, fibonacci_max=20000000000, should_set_affinity=0, should_inline=1, alloc_granularity=4096 
  32.   
  33. real1m13.175s 
  34. user3m39.486s 
  35. sys0m0.008s 
  36. turn on smt 

 

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2021-10-18 11:55:10

SMTCPU線程

2012-02-22 10:14:44

Java

2021-10-31 21:01:00

數列TypeScriptJava

2021-12-28 07:20:44

斐波那契數算法數字

2021-05-16 18:02:52

系統編程JavaScript

2021-03-15 06:04:47

斐波那契數列背包問題算法

2021-05-08 08:28:38

Java數據結構算法

2020-05-11 14:18:14

JavaScript斐波那契數列遞歸

2022-11-14 08:12:34

2023-06-13 06:51:15

斐波那契數算法

2017-07-10 16:23:29

線程CPU單核

2024-03-25 08:00:00

C++遞歸函數

2021-03-17 08:37:23

算法性能分析遞歸算法遞歸樹

2022-03-28 15:15:15

神經網絡編程開發

2013-04-10 10:58:19

LambdaC#

2020-04-20 11:09:18

Python開發語言

2009-04-27 12:26:45

AMD單核Nehalem

2017-03-06 14:45:27

超線程技術處理器技術服務器

2020-11-23 08:53:34

堆Heap

2022-06-27 19:19:26

算法題青蛙跳臺階
點贊
收藏

51CTO技術棧公眾號

国产精品永久免费视频| 欧美一区二区高清| 日韩.欧美.亚洲| 亚洲中文字幕在线一区| 欧美黄在线观看| 亚洲第一精品久久忘忧草社区| 18岁网站在线观看| 欧美激情视频在线播放| 成人午夜在线播放| 国产精品丝袜视频| 四虎成人精品永久免费av| 伊人成综合网yiren22| 蜜桃在线一区二区三区| 欧美成人免费网| 91精品国产自产| av在线免费网站| 久久综合九色综合97婷婷 | 黄色美女视频在线观看| 蜜臀av一级做a爰片久久| 欧美激情成人在线视频| 国产高清一区二区三区四区| www.丝袜精品| 亚洲精品菠萝久久久久久久| 久久综合精品一区| www香蕉视频| 一二三区不卡| 亚洲人成网在线播放| 亚洲麻豆一区二区三区| 2024最新电影在线免费观看| 久久久噜噜噜久久人人看| 欧美在线亚洲在线| 毛片a片免费观看| 日韩理论电影| 伊人伊人伊人久久| 公侵犯人妻一区二区三区| 超碰97成人| 日韩一区二区三区高清免费看看| 亚洲综合欧美日韩| 国产原创av在线| 99国产精品国产精品久久| 999久久久| 99re只有精品| 亚洲第一成年人网站| 911久久香蕉国产线看观看| 亚洲热线99精品视频| 中文字幕在线永久| 农村少妇一区二区三区四区五区 | 亚洲制服丝袜一区| 国产精品99久久久久久大便| av黄色在线观看| 欧美激情一区二区三区全黄| 日韩福利二区| www.成人.com| 国产精品麻豆网站| 一区二区三区的久久的视频| 自拍视频在线播放| 欧美国产一区二区| 视频在线99re| 亚洲精品一区二区二区| 亚洲欧美大片| 国产精品99久久久久久人| 国产一区二区视频免费| 日韩av一级片| 91精品久久久久久久久| 99在线观看免费| 国产成人日日夜夜| 国产精品久久久一区二区三区| 成人黄在线观看| 男人在线观看视频| 91精品在线观看国产| 久久高清视频免费| 国产精品99精品| 国产精品人人爽人人做我的可爱| 日本精品免费观看| 在线播放成人av| 国产精品亚洲视频| 国产亚洲精品自在久久| 欧美理论在线观看| 国产精品国产精品国产专区不蜜| 91午夜在线播放| 亚洲免费视频网| 久久国产生活片100| 亚洲一区二区久久久久久| 亚洲h视频在线观看| 99视频热这里只有精品免费| 欧美一区二区三区精美影视| 日本在线播放| 亚洲午夜久久久久中文字幕久| 欧美 国产 综合| 福利精品在线| 精品国产sm最大网站| 成年人免费观看视频网站| 国产精品久久久久蜜臀| 亚洲精品网站在线播放gif| 538精品视频| 午夜欧美精品久久久久久久| 欧美影院在线播放| 91丨porny丨在线中文| 在线视频国产区| 国产呦萝稀缺另类资源| 春色成人在线视频| 国产午夜在线观看| 一区二区三区国产精品| 成人性做爰aaa片免费看不忠| 成人免费观看49www在线观看| 亚洲国内精品视频| 欧美亚洲色综久久精品国产| 欧美激情精品久久久六区热门| 欧美性做爰毛片| 国产ts人妖调教重口男| 国产日韩综合av| 人妻av中文系列| 日日夜夜综合| 日本高清成人免费播放| 宇都宫紫苑在线播放| 狠狠色丁香婷婷综合影院| 欧美激情精品久久久| 亚洲专区第一页| 久久久久久**毛片大全| 日韩欧美不卡在线| 国产aⅴ精品一区二区四区| 亚洲人午夜精品免费| xxxxxx国产| 国产激情视频一区二区在线观看| 色综合666| 高清av不卡| 在线观看免费亚洲| 国产精品久久AV无码| 欧美成人69| 91久热免费在线视频| av在线收看| 在线视频你懂得一区| 人妻丰满熟妇aⅴ无码| 尤物在线精品| 国产69精品久久久久9999apgf | 欧美精品卡一卡二| 精品三级久久久| 久久精品美女视频网站 | 免费高清视频精品| 欧美国产综合视频| 国产网站在线播放| 狠狠爱在线视频一区| 久久性爱视频网站| 亚洲性人人天天夜夜摸| 成人蜜桃视频| 国产三级精品三级在线观看| av不卡高清| 欧美精品aⅴ在线视频| 四虎国产成人精品免费一女五男| 久久久亚洲一区| 欧美日韩综合网| 电影亚洲精品噜噜在线观看| 亚洲欧美日韩综合| 夜夜爽妓女8888视频免费观看| 91蝌蚪porny九色| 免费日韩中文字幕| 日韩精品水蜜桃| 91精品啪aⅴ在线观看国产| 欧美成人hd| 日韩三级视频在线观看| 久久久久久久久艹| 9i在线看片成人免费| 亚洲 高清 成人 动漫| 伊人久久大香线蕉无限次| 欧美一区二粉嫩精品国产一线天| 欧美女子与性| 欧美群妇大交群的观看方式| 亚洲最大成人在线观看| 日本久久黄色| 亚洲综合日韩在线| ririsao久久精品一区| 亚洲国产欧美一区| 波多野结衣高清视频| 亚洲欧洲三级电影| 国产伦精品一区二区三区妓女下载 | 欧美日韩中文另类| 日韩欧美国产成人精品免费| 成人综合婷婷国产精品久久| 亚洲精品无码久久久久久| 精品久久不卡| 7777奇米亚洲综合久久 | 国产精品日韩久久久久| 成人高清免费在线| 亚洲精品91美女久久久久久久| 4438国产精品一区二区| 中文字幕一区在线观看视频| 少妇极品熟妇人妻无码| 先锋影音国产一区| 亚洲第一综合网站| 欧美三级午夜理伦三级小说| 国产精品视频白浆免费视频| 青青草原av在线| 亚洲欧洲日本专区| 99在线精品视频免费观看20| 欧美日韩一区二区三区| 26uuu成人网| 久久综合九色综合久久久精品综合 | 久久精品人人做人人爽电影| 涩涩涩在线视频| 久久精品国产清自在天天线| 天堂视频中文在线| 日韩一区二区三区视频在线观看| 91玉足脚交嫩脚丫在线播放| 亚洲伦在线观看| 无码人妻aⅴ一区二区三区69岛| 国产91精品一区二区| 九九热免费精品视频| 精品成人一区| 日本丰满少妇黄大片在线观看| 蜜臀av免费一区二区三区 | 日韩精品a在线观看91| 91精品久久久久久| 视频在线日韩| 98精品在线视频| 丝袜综合欧美| 日韩在线播放视频| 狠狠色伊人亚洲综合网站l| 日韩精品一区二区三区蜜臀| 久久久免费看片| 菠萝蜜视频在线观看一区| 久久99久久99精品| 日韩欧美精品一区| 欧美成人dvd在线视频| caoporn成人免费视频在线| 成人欧美在线观看| 成人av色网站| 国产91亚洲精品| 亚洲日本天堂| 91黑丝高跟在线| av影片在线| 欧美精品电影免费在线观看| av毛片在线看| 久久香蕉国产线看观看网| a√在线中文网新版址在线| 亚洲欧美日韩成人| 色综合888| 国产婷婷成人久久av免费高清| 韩国av免费在线| 日韩精品一区二区三区中文不卡| 国产精品无码免费播放| 亚洲一区自拍偷拍| 亚洲av无码一区二区三区在线| 中文字幕亚洲一区二区av在线| 中文字幕日韩欧美在线| 中文字幕av久久爽| 在线观看视频一区| 久久久久久av无码免费看大片| 色婷婷精品大视频在线蜜桃视频| 久久精品视频1| 色爱区综合激月婷婷| 久草视频一区二区| 91久久精品一区二区三区| 欧美特级黄色片| 欧美三级视频在线播放| 亚洲一区二区天堂| 欧美一区二区网站| 成人无码一区二区三区| 精品不卡在线视频| 日产精品久久久久久久性色| 亚洲男人天堂2023| 成年人视频免费在线观看| 在线观看久久av| 婷婷在线视频观看| 欧美丰满片xxx777| 岛国av免费在线观看| 奇米成人av国产一区二区三区| 欧美韩国亚洲| 成人在线小视频| www.久久草.com| 99电影在线观看| 亚洲精品中文字幕99999| 日韩理论片在线观看| 国产精品videosex性欧美| 亚洲一区 在线播放| 日韩午夜高潮| 一本久道久久综合| 欧美精品啪啪| 18禁免费无码无遮挡不卡网站| 亚洲经典一区| 成人精品视频在线播放| 久久久久国产精品一区三寸| 亚洲国产成人va在线观看麻豆| 国产美女娇喘av呻吟久久| 欧美肉大捧一进一出免费视频| 久久丝袜美腿综合| 91精品91久久久久久| 国产在线观看精品一区| 久久人体大胆视频| 成人一级福利| 国产日韩欧美综合| 久久国产精品免费精品3p| 日韩精品一区二区三区四区五区| 亚洲v在线看| 日韩少妇内射免费播放| 美女脱光内衣内裤视频久久网站 | 18国产免费视频| 欧美成人女星排行榜| 欧美高清成人| 九九精品在线视频| 亚洲四虎影院| 国产欧美亚洲日本| 欧美xxxxx视频| 成人中文字幕在线播放| 老鸭窝一区二区久久精品| 欧美夫妇交换xxx| 亚洲欧洲色图综合| 免费污污视频在线观看| 日韩欧美国产wwwww| 国产一级在线| 91精品国产99久久久久久| 99精品女人在线观看免费视频| 蜜桃999成人看片在线观看| 综合久久一区| 久久久久久蜜桃一区二区| 91性感美女视频| 免费一级片在线观看| 欧美色手机在线观看| 国产又爽又黄网站亚洲视频123| 久久影院免费观看| 91精品国产66| 欧美久久在线| 国产欧美日韩一级| 女同性αv亚洲女同志| 最近中文字幕一区二区三区| 中文字幕免费高清网站| 日韩精品免费在线| www.综合| 国产精品视频一区二区三区经| 久久综合成人| 91精品无人成人www| 国产欧美精品一区aⅴ影院 | 亚洲欧美视频| xxxxxx黄色| 午夜精品福利一区二区三区蜜桃| 黄页网站免费观看| 欧美福利视频一区| 日本在线天堂| 国产精品一区二区三区在线播放| 亚洲宅男一区| 男人操女人免费软件| 99久久精品一区| 国产精品老女人| 亚洲精品久久久久国产| 国产在线美女| 免费成人看片网址| 玖玖在线精品| 日韩av片在线| 欧美老年两性高潮| www免费视频观看在线| 亚洲wwwav| 欧美日本亚洲韩国国产| 一级黄色电影片| 亚洲va天堂va国产va久| 天天综合网在线观看| 91精品国产色综合久久不卡98| 网曝91综合精品门事件在线| 日韩a在线播放| 国产三级久久久| 国产精品久久婷婷| 精品中文字幕在线观看| 大香伊人久久精品一区二区| 天天夜碰日日摸日日澡性色av| 91视视频在线直接观看在线看网页在线看| 日韩精品一区二区av| 日韩精品免费电影| 成人精品高清在线视频| 最新av在线免费观看| 成人精品鲁一区一区二区| 在线能看的av| 综合国产在线观看| 免费一区二区三区在线视频| 成人精品视频在线播放| 国产视频一区二区在线观看| 一区二区三区www污污污网站| 成人97在线观看视频| 欧美丝袜足交| 欧美婷婷精品激情| 亚洲综合图片区| 免费黄色片在线观看| 91精品国产自产在线观看永久| 欧美国产三级| 久久久久久亚洲中文字幕无码| 欧美巨大另类极品videosbest| 国产蜜臀在线| 亚洲成人一区二区三区| 国产91精品精华液一区二区三区 | 亚洲v国产v在线观看| 国产麻豆视频精品| 精品国产午夜福利| 美女福利精品视频| 中国av一区| 国产精品19p| 在线看日韩精品电影| 亚洲小说区图片| 日韩aⅴ视频一区二区三区| 国产宾馆实践打屁股91| 五月激情丁香网| 久久久久久国产精品| 久久国产亚洲精品| 精品黑人一区二区三区观看时间|