精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲ⅴ国产v天堂a无码二区| 9999在线观看| 无码免费一区二区三区| 欧美色图国产精品| 欧美一区二区三区思思人| 男女激烈动态图| 亚洲人妻一区二区| 毛片av一区二区三区| 欧美第一淫aaasss性| aaaaa级少妇高潮大片免费看| 国产综合色在线观看| 亚洲免费观看高清完整版在线观看熊 | 91传媒理伦片在线观看| 电影天堂国产精品| 亚洲国产成人精品视频| 五月天久久狠狠| 成人毛片视频免费看| 日本免费新一区视频| 欧美激情在线一区| 99久久久无码国产精品不卡| 国产一区二区三区亚洲| 欧美日本国产视频| 99re在线视频免费观看| 污污在线观看| 国产精品网站在线| 蜜桃av久久久亚洲精品| 黄色激情在线观看| 阿v天堂2014| 电影一区中文字幕| 在线观看日韩精品| 免费 成 人 黄 色| 激情网站在线| 亚洲天堂久久久久久久| 日韩国产精品一区二区| 亚洲av片在线观看| 国产99久久久久| 91gao视频| 一级片免费观看视频| 日韩影院免费视频| 奇米四色中文综合久久| 国产精品6666| 精品二区久久| 精品自拍视频在线观看| 日韩精品123区| 久久精品高清| 中文字幕日韩欧美| 国产人妻大战黑人20p| 亚洲区小说区| 日韩毛片中文字幕| 99久久久久久久久久| 嫩草国产精品入口| 亚洲精品二三区| 亚洲熟女一区二区| 日本人亚洲人jjzzjjz| 激情在线视频播放| 亚洲综合免费观看高清在线观看| 欧洲金发美女大战黑人| 182tv在线播放| 亚洲永久精品大片| 极品粉嫩国产18尤物| 好久没做在线观看| 午夜在线成人av| 91九色丨porny丨国产jk| 国产精品高颜值在线观看| 天天av天天翘天天综合网色鬼国产| 国产亚洲黄色片| 三级在线观看视频| 色8久久人人97超碰香蕉987| 久久综合久久色| 69堂精品视频在线播放| 欧美日韩综合在线| 北条麻妃亚洲一区| 91精品丝袜国产高跟在线| 精品福利av导航| 亚洲AV无码片久久精品| 欧美日韩伦理| 久久电影一区二区| 国产成年人免费视频| 每日更新成人在线视频| 国产美女久久久| 亚洲精品无遮挡| 久久免费午夜影院| 亚洲综合首页| 岛国毛片av在线| 日本韩国一区二区| 亚洲天堂伊人网| 林ゆな中文字幕一区二区| 亚洲无线码在线一区观看| 韩国一级黄色录像| 一区二区三区福利| 成人xvideos免费视频| 国产91免费在线观看| 国产校园另类小说区| 看全色黄大色大片| 蜜臀国产一区| 欧美一级高清片| 成人午夜剧场视频网站| 欧美激情无毛| 国产精品com| 噜噜噜久久,亚洲精品国产品| 国产女主播在线一区二区| wwwwww欧美| 99re久久| 日韩精品一区二区视频| 日韩成人短视频| 久久精品导航| www 成人av com| 丁香婷婷在线| 香蕉av福利精品导航| 亚洲精品性视频| 久久综合影院| 久久噜噜噜精品国产亚洲综合 | 午夜激情在线观看| 香蕉影视欧美成人| 欧美特黄aaa| 国产一区二区精品福利地址| 欧美精品电影在线| 国产美女免费看| 国产欧美一区二区精品性色| 日本国产在线播放| 精品国产亚洲一区二区三区| 亚洲一级一级97网| 久久久久久久久久久久久av| 国产成人精品综合在线观看| 一区二区三区欧美成人| 高潮一区二区| 精品性高朝久久久久久久| 精品午夜福利视频| 国产在线精品一区在线观看麻豆| 日韩av影视| 都市激情亚洲一区| 亚洲精品影视在线观看| 五月婷婷中文字幕| 成人18视频日本| 欧美性潮喷xxxxx免费视频看| 日韩成人综合网| 国产一区二区三区网站| 麻豆精品久久久久久久99蜜桃| 成人性生交大合| 欧美图片激情小说| 2023国产精华国产精品| 久久激情五月丁香伊人| 国产一区二区三区三州| 国产精品久久久久久久久图文区| 日本老熟妇毛茸茸| 国产一区二区精品久| 国产成人97精品免费看片| 撸视在线观看免费视频| 在线观看中文字幕不卡| 国产精品天天干| 日本不卡视频一二三区| 亚洲黄色成人久久久| 国产国产一区| www.美女亚洲精品| 国产夫绿帽单男3p精品视频| 一区二区三区在线免费视频| 台湾佬美性中文| 黄色成人av网站| 精品在线观看一区二区| 制服丝袜专区在线| 尤物精品国产第一福利三区| 亚洲天堂中文在线| 亚洲免费观看高清完整版在线观看| 4438x全国最大成人| 尤物在线精品| 欧美一区二区综合| 日韩av免费| 欧美久久久精品| 人人妻人人澡人人爽精品日本| 精品久久久久久久久中文字幕| 性欧美丰满熟妇xxxx性仙踪林| 日韩av中文在线观看| 国产精品99久久久久久大便| 香蕉免费一区二区三区在线观看 | 久久久人成影片一区二区三区在哪下载| 国产一区二区三区网站| 国产美女永久免费| 亚洲va国产天堂va久久en| 国产美女免费网站| 国产精品综合av一区二区国产馆| 免费超爽大片黄| 欧美老女人另类| 高清不卡日本v二区在线| 午夜激情在线播放| 色综合伊人色综合网站| 成人免费公开视频| 91国内精品野花午夜精品| 日韩激情综合网| 91在线免费播放| 三年中文在线观看免费大全中国| 在线欧美亚洲| 一区二区精品在线| 人妖一区二区三区| 91久久精品久久国产性色也91| segui88久久综合9999| 中文国产亚洲喷潮| 黄色一级大片在线免费看国产一| 日本道免费精品一区二区三区| www.av视频| 欧美国产成人精品| 欧产日产国产精品98| 久久国内精品自在自线400部| 欧美日韩不卡在线视频| 91一区二区| 日本一区二区三区精品视频| 98视频精品全部国产| 国产精品日韩一区| 中文字幕高清在线播放| 欧美激情视频网| 在线观看免费版| 亚洲美女自拍视频| 免费观看黄色一级视频| 欧美丰满少妇xxxxx高潮对白| www.国产com| 午夜精品视频一区| 久草视频免费在线播放| 国产精品美女www爽爽爽| 蜜桃传媒一区二区亚洲av| 成人免费观看av| 天天爽夜夜爽视频| 麻豆精品国产传媒mv男同| 久久无码高潮喷水| 日韩一级不卡| 免费超爽大片黄| 亚洲承认在线| 欧美乱做爰xxxⅹ久久久| 性欧美欧美巨大69| 亚洲在线色站| 天天久久综合| 亚洲精品久久久久久一区二区| 亚洲欧洲美洲国产香蕉| 精品国产综合区久久久久久| 1204国产成人精品视频| 91九色对白| 日本高清精品| 91精品天堂| silk一区二区三区精品视频| 91在线观看免费| 久久免费精品| 亚洲最大av在线| 欧美一区一区| 超碰97在线人人| 9l视频自拍蝌蚪9l视频成人| 成人蜜桃视频| 高清一区二区三区| 久久精品欧美| 欧美精品momsxxx| 日本成人黄色免费看| 视频一区在线观看| 五月天色一区| 香蕉久久网站| 欧美一级爱爱视频| 亚洲经典自拍| 亚洲 高清 成人 动漫| 亚洲一区二区三区四区五区午夜| 亚洲自偷自拍熟女另类| 久久久亚洲人| 制服丝袜综合网| 极品少妇xxxx偷拍精品少妇| 日韩av影视大全| 粉嫩av亚洲一区二区图片| 国产高清成人久久| 久久久综合精品| 任你操精品视频| √…a在线天堂一区| 麻豆亚洲av成人无码久久精品| 亚洲国产成人va在线观看天堂| 中文字幕在线字幕中文| 色一情一乱一乱一91av| 在线免费a视频| 日韩欧美国产一区在线观看| 全国男人的天堂网| 亚洲少妇激情视频| 色大18成网站www在线观看| 九九九久久久久久| 蜜桃视频m3u8在线观看| 国产精品无码专区在线观看| 视频一区中文字幕精品| 精品乱色一区二区中文字幕| 国产探花在线精品| 超碰10000| 奶水喷射视频一区| 天天久久综合网| 成人av网站在线观看| jizz中文字幕| 亚洲综合一二区| 销魂美女一区二区| 日韩视频在线永久播放| 黄色av网站在线| 欧美另类在线播放| 97久久香蕉国产线看观看| 91精品在线影院| 九九热精品视频在线观看| 少妇高潮流白浆| 亚洲一区欧美二区| 国产精品igao网网址不卡| 久久精品视频在线看| 欧美成人片在线观看| 在线视频欧美精品| 欧美一级特黄aaaaaa| 色阁综合伊人av| 牛牛精品一区二区| 96久久精品| 视频在线不卡免费观看| 亚洲熟妇av日韩熟妇在线| 久久精品国产999大香线蕉| 醉酒壮男gay强迫野外xx| 一区二区三区精品久久久| 中文字幕在线观看1| 国产视频欧美视频| 国产白丝在线观看| 亚洲影院高清在线| 日韩精品免费| 亚洲一二三区av| 91日韩精品一区| 国产在线视频在线观看| 制服丝袜日韩国产| 1区2区3区在线观看| 茄子视频成人在线| avtt综合网| 日本a在线天堂| 黄页网站大全一区二区| 香蕉久久久久久久| 欧美自拍偷拍一区| 麻豆国产在线播放| 日韩女在线观看| 西野翔中文久久精品字幕| 成人免费毛片在线观看| 国产经典欧美精品| 免费在线视频观看| 欧美v日韩v国产v| 日韩三级电影视频| 999热视频| 欧美日韩hd| 国产无套精品一区二区三区| 亚洲色图欧洲色图婷婷| 在线观看国产黄| 最近2019年手机中文字幕| 黄色成人在线观看网站| 亚洲图色在线| 精油按摩中文字幕久久| 人人干在线观看| 欧美二区乱c少妇| 超碰超碰在线| 成人xxxxx色| 亚洲三级色网| 日本黄色特级片| 欧美自拍丝袜亚洲| 免费黄网站在线| 91九色蝌蚪嫩草| 国模吧视频一区| 亚洲精品在线视频免费观看| 精品福利视频导航| 精品视频二区| 国产精品视频区1| 国产精品99久久久久久动医院| 国产精品探花在线播放| 一区二区三区蜜桃| 三级网站在线看| 国产精品99免视看9| 天天做天天爱天天综合网| 免费在线观看日韩av| 欧美视频在线视频| 成年在线电影| 91在线高清视频| 夜久久久久久| 青青青手机在线视频| 欧美一卡在线观看| 日本在线播放一二三区| 亚州欧美一区三区三区在线| 精品亚洲成av人在线观看| 青青草原在线免费观看视频| 亚洲大胆人体在线| 午夜av成人| 黄色一级大片免费| www国产成人| 国产精品欧美激情在线| 性欧美视频videos6一9| 欧美一区二区性| 美女网站视频在线观看| 91福利精品第一导航| 成人在线视频亚洲| 欧美亚洲另类久久综合| 国产一区二区三区黄视频| 日韩精品第一页| 日韩成人一区| 久久久久久久午夜| 中文字幕一区不卡| 色鬼7777久久| 成人在线中文字幕| 亚洲视频成人| 国产传媒免费在线观看| 精品一区二区电影| 欧美9999| 别急慢慢来1978如如2| 夜夜嗨av一区二区三区四季av| 国产视频第一页在线观看| 超碰在线97av| 狠狠色丁香久久婷婷综合_中| 欧美黑人猛猛猛|