亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux 線程庫(kù)性能測(cè)試與分析

系統(tǒng) 2172 0

簡(jiǎn)介: NPTL 成為 glibc "正選"線程庫(kù)后,它的性能如何受到很多人的關(guān)注。本文就針對(duì)NPTL 與 LinuxThreads 的性能比較,以及超線程、內(nèi)核可搶占等特性對(duì)線程性能的影響進(jìn)行了全面評(píng)測(cè)。

一、 前言

在 Linux 2.6.x 內(nèi)核中,調(diào)度性能的改進(jìn)是其中最引人注目的一部分[1]。NPTL(Native Posix Thread Library)[2]使用內(nèi)核的新特性重寫了 Linux 的線程庫(kù),取代歷史悠久而備受爭(zhēng)議的 LinuxThreads[3] 成為 glibc 的首選線程庫(kù)。

NPTL 的性能究竟如何?相對(duì) LinuxThreads 又有哪些明顯的改進(jìn)?在對(duì)NPTL進(jìn)行全面分析之前,本文針對(duì)這兩種線程庫(kù),以及內(nèi)核中"內(nèi)核可搶占"(Preemptible)和超線程(HyperThreading)[4]等特性進(jìn)行了全面的性能評(píng)測(cè),結(jié)果表明NPTL絕對(duì)值得廣大服務(wù)器系統(tǒng)期待和使用。


二、 Benchmark

1. 測(cè)試平臺(tái)

進(jìn)行本測(cè)試的硬件平臺(tái)為浪潮NF420R服務(wù)器[7],4個(gè)Hyperthreading-enabled Intel Xeon 2.2G處理器,4G內(nèi)存。Linux選擇了Slackware 9.0發(fā)行版[8],所使用的內(nèi)核源碼來(lái)自 www.kernel.org

2. 針對(duì)測(cè)試:LMBench

lmbench是一個(gè)用于評(píng)價(jià)系統(tǒng)綜合性能的多平臺(tái)開源benchmark[5],但其中沒有對(duì)線程的支持。其中有兩個(gè)測(cè)試進(jìn)程性能的benchmark:lat_proc用于評(píng)測(cè)進(jìn)程創(chuàng)建和終止的性能,lat_ctx用于評(píng)測(cè)進(jìn)程切換的開銷。lmbench擁有良好的benchmark結(jié)構(gòu),只需要修改具體的Target程序(如lat_proc.c和lat_ctx.c),就可以借用lmbench的計(jì)時(shí)、統(tǒng)計(jì)系統(tǒng)得到我們關(guān)心的線程庫(kù)性能的數(shù)據(jù)。

基于lat_proc和lat_ctx的算法,本文實(shí)現(xiàn)了lat_thread和lat_thread_ctx兩個(gè)benchmark。在lat_thread中,lat_proc被改造成使用線程,用pthread_create()替代了fork(),用pthread_join()替代wait();在lat_thread_ctx中,沿用lat_ctx的評(píng)測(cè)算法(見lat_ctx手冊(cè)頁(yè)),將創(chuàng)建進(jìn)程的過程改寫為創(chuàng)建線程,仍然使用管道進(jìn)行通信和同步。

lat_thread null

null參數(shù)表示線程不進(jìn)行任何實(shí)際操作,創(chuàng)建后即刻返回。

lat_thread_ctx -s<size> #threads

size參數(shù)與lat_ctx定義相同,可表示線程的大小(實(shí)際編程時(shí)為分配<size>K數(shù)據(jù);#threads參數(shù)為線程數(shù),即參與令牌傳遞的線程總數(shù),相當(dāng)于程序負(fù)載情況。

3. 綜合測(cè)試:Volanomark

volanomark是一個(gè)純java的benchmark,專門用于測(cè)試系統(tǒng)調(diào)度器和線程環(huán)境的綜合性能[6],它建立一個(gè)模擬Client/Server方式的Java聊天室,通過獲取每秒平均發(fā)送的消息數(shù)來(lái)評(píng)測(cè)宿主機(jī)綜合性能(數(shù)值越大性能越好)。Volanomark測(cè)試與Java虛擬機(jī)平臺(tái)相關(guān),本文使用Sun Java SDK 1.4.2作為測(cè)試用Java平臺(tái),Volanomark版本2.5.0.9。


三、 測(cè)試結(jié)果

測(cè)試計(jì)劃中將內(nèi)核分為2.4.26、2.6.6/支持內(nèi)核搶占和2.6.6/不支持內(nèi)核搶占三類;通過配置內(nèi)核以及NF420R的BIOS實(shí)現(xiàn)三類SMP規(guī)模:?jiǎn)翁幚頇C(jī)(UP)、4CPU的SMP(SMP4)和打開超線程支持的虛擬8CPU SMP(SMP8*)。內(nèi)核配置和SMP規(guī)模的每一種組合都針對(duì)LinuxThreads和NPTL使用lat_thread、lat_thread_ctx和volanomark獲取一組數(shù)據(jù)。由于NPTL無(wú)法在2.4.x內(nèi)核上使用,該項(xiàng)數(shù)據(jù)空缺。



四、 結(jié)果分析

1. LinuxThreads vs NPTL:線程創(chuàng)建/銷毀開銷

使用2.6.6/preemptible內(nèi)核配置下UP和SMP4的測(cè)試數(shù)據(jù)獲得下圖:


圖1

在線程創(chuàng)建/銷毀開銷方面,NPTL的改進(jìn)相當(dāng)明顯(降低約600%)。實(shí)際上,NPTL不再像LinuxThreads那樣需要使用用戶級(jí)的管理線程來(lái)維護(hù)線程的創(chuàng)建和銷毀[9],因此,很容易理解它在這方面的開銷能夠大幅度降低。

同時(shí),由圖可見,單CPU下創(chuàng)建線程總是比多CPU下迅速。

2. LinuxThreads vs NPTL:線程切換開銷

同樣使用2.6.6/preemptible內(nèi)核配置下UP和SMP4的數(shù)據(jù):


圖2

隨著lat_thread_ctx的參與線程增多,不管是哪個(gè)線程庫(kù),單處理機(jī)條件下的線程切換開銷都陡峭上升,而SMP條件下則上升比較平緩。在這方面,LinuxThreads和NPTL表現(xiàn)基本相同。

3. 內(nèi)核影響


圖3


圖4


圖5


圖6

從上面四張圖中我們可以得出兩點(diǎn)結(jié)論:

  • "內(nèi)核可搶占"是Linux對(duì)實(shí)時(shí)應(yīng)用提供更好支持的有力保障,但對(duì)線程性能影響很小,甚至有一點(diǎn)損失,畢竟搶占鎖的開銷不可忽略;
  • 升級(jí)內(nèi)核并不會(huì)對(duì)LinuxThreads線程庫(kù)性能帶來(lái)多少變化,因此,對(duì)于服務(wù)器系統(tǒng)而言,不能指望僅僅編譯使用新內(nèi)核就能提高性能。


圖7


圖8

從圖3、圖4我們已經(jīng)知道,打開超線程支持對(duì)線程創(chuàng)建/銷毀性能幾乎沒有影響,而這兩張圖表也進(jìn)一步說明,超線程技術(shù)對(duì)于線程切換開銷也沒有明顯的影響。超線程技術(shù)是CPU內(nèi)部的優(yōu)化技術(shù),和真正的雙CPU完全不同。大量研究表明,如果沒有內(nèi)核與用戶應(yīng)用相結(jié)合的專門優(yōu)化措施,超線程并不會(huì)帶來(lái)很大的性能變化。除非是高負(fù)載綜合服務(wù)器系統(tǒng)(例如繁忙的數(shù)據(jù)庫(kù)系統(tǒng)),購(gòu)買超線支持的CPU并不能帶來(lái)多少好處。

4. 綜合性能


圖9

圖9

前面幾節(jié)分析讓我們了解了線程庫(kù)性能改進(jìn)的細(xì)節(jié),通過volanomark測(cè)試,我們可以近似得到在綜合應(yīng)用環(huán)境下,特別是網(wǎng)絡(luò)服務(wù)需求中線程庫(kù)以及內(nèi)核對(duì)系統(tǒng)整體性能的影響程度。

圖9綜合了不同內(nèi)核、不同處理機(jī)數(shù)條件下,兩種線程庫(kù)的volanomark結(jié)果。從圖中可以觀察到以下三點(diǎn):

  • NPTL能極大提高SMP環(huán)境下服務(wù)器系統(tǒng)的整體性能(超過65%),相對(duì)而言,對(duì)單處理機(jī)系統(tǒng)影響較小(10%左右);
  • 2.6內(nèi)核的搶占特性對(duì)系統(tǒng)性能影響很小(不超過±1%),某些情況下甚至有所下降;
  • 超線程技術(shù)在LinuxThreads中的影響是負(fù)面的,在NPTL中是正面的,但影響幅度都很小(5%-6%)。

以上結(jié)論中前兩點(diǎn)與LMBench針對(duì)性測(cè)試結(jié)果完全吻合,第三點(diǎn)的偏差實(shí)際上反映了超線程技術(shù)對(duì)于綜合服務(wù)器環(huán)境還是有一定加速的。


五、 總結(jié)

我們的評(píng)測(cè)為廣大Linux用戶,特別是服務(wù)器用戶提供了一點(diǎn)有價(jià)值的參考:

  • 如果你的是多處理機(jī)系統(tǒng),那么毫不猶豫地升級(jí)你的內(nèi)核,并記住,一定要同時(shí)升級(jí)你的線程庫(kù),它通常與glibc緊密耦合;
  • 如果你的系統(tǒng)并沒有實(shí)時(shí)應(yīng)用,不要打開"內(nèi)核可搶占"開關(guān),它只會(huì)讓你的系統(tǒng)更慢;
  • 慎重考慮是否使用超線程技術(shù),即使你已經(jīng)購(gòu)買了支持超線程的CPU,有時(shí)關(guān)閉它可能更適合你的需求。

<!-- CMA ID: 21779 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->

參考資料

  1. [pubb@163.net,2004] Linux 2.6調(diào)度系統(tǒng)分析,IBM DeveloperWorks, www.ibm.com/developerworks/cn/linux/kernel/l-kn26sch/index.shtml
  2. [Ulrich Drepper,2002] Native Posix Threading Library, people.redhat.com/drepper/nptl-design.pdf
  3. [Xavier.Leroy@inria.fr,1996] LinuxThreads線程庫(kù), pauillac.inria.fr/~xleroy/linuxthreads/
  4. [Intel Co.,2002]HyperThreading超線程技術(shù), www.intel.com/technology/hyperthread/
  5. [Larry McVoy,lm@bitmover.com,1998]LMbench, www.bitmover.com/lmbench/
  6. [volano LLC,2004] Volanomark Benchmark, http://www.volano.com/benchmarks.html
  7. [Slackware,1993]Slackware Linux Distribution, www.slackware.com
  8. [pubb@163.net,2003] Linux 線程實(shí)現(xiàn)機(jī)制分析, www.ibm.com/developerworks/cn/linux/kernel/l-thread/index.shtml
  9. [jim@2cpu.com,2004] Exploring Hyper-Threading Performance , http://www.2cpu.com/articles/42_1.html

Linux 線程庫(kù)性能測(cè)試與分析


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久91精品国产91久久 | 久久国产精品只做精品 | 欧美在线观看高清一二三区 | 天天干免费视频 | 一本到在线观看视频不卡 | 精品国产人成亚洲区 | 国产亚洲一区二区麻豆 | 久久午夜青青草原影院 | 亚洲 欧美 成人日韩 | 国产毛片一区二区三区精品 | 日本中文字幕高清 | 色妞bbbb女女女女 | 在线观看国产精品入口 | 国产精品女在线观看 | 亚洲 自拍 另类 制服在线 | www.伊人久久| 人人夜| 成年女人视频免费免费看 | 手机看片国产免费久久网 | 97国内免费久久久久久久久久 | 中文字幕视频在线免费观看 | 91在线免费看 | 精品国产人成在线 | 免费一级毛片 | 欧美性猛交xx乱大交 | 关婷哪一级毛片高清免费看 | 国内久久久久影院精品 | 欧美19综合中文字幕 | 久久综合激情 | 免费看美女隐私的网站 | 欧美色视频超清在线观看 | 国产精品久久久久久一级毛片 | 亚洲欧美日韩精品中文乱码 | 国产一区二区三区四区在线观看 | 九九精品视频在线免费观看 | 午夜欧美精品久久久久久久 | 一区二区三区免费在线 | 久久这里只有精品免费播放 | 免费精品美女久久久久久久久久 | 天天天天| 国产亚洲综合精品一区二区三区 |