暢談對(duì)Linux GCC 4.4的理解
這里我發(fā)表一下個(gè)人對(duì)Linux GCC 4.4理解,和大家討論討論。以社區(qū)支持的方式開發(fā)Linux發(fā)行版Fedora Core Linux,而Red Hat公司原來Red Hat Linux的開發(fā)團(tuán)隊(duì)也將繼續(xù)參與這一發(fā)行版本的開發(fā)工作。與lat_ops相比,par_ops更像是一個(gè)進(jìn)階測試。通過對(duì)前者的修改與擴(kuò)展,par_ops著力于體現(xiàn)處理器在指令層面的并行處理能力。
它使用了一些類似教科書上講述并行計(jì)算時(shí)采用的示范代碼,只要處理器與Linux GCC 4.4編譯器支持,就可以以并行方式同步執(zhí)行,其結(jié)果反應(yīng)了每指令周期不同操作達(dá)到的并行度。這部分的測試結(jié)果比較混亂,除了一些并行度相同的操作外,很難在其他項(xiàng)目中尋找一個(gè)線形的變化規(guī)律。
縱向的比較反而更容易說明問題,o32模式和針對(duì)MIPS1指令集架構(gòu)編譯的代碼并行度相對(duì)較低,n32模式下針對(duì)R4600處理器編譯的代碼則在很多操作中擁有最高的并行度。Linux GCC 4.4對(duì)龍芯2F處理器的優(yōu)化能力似乎還有提升的空間,雖然n64模式下針對(duì)龍芯2F編譯的代碼執(zhí)行并行度最高,但在o32和n32模式下,對(duì)浮點(diǎn)型變量的操作并行度與R4600還有明顯差距。
總體來說,在指令層面,使用Linux GCC 4.4針對(duì)龍芯2F進(jìn)行優(yōu)化編譯的效果還是比較明顯的,這一點(diǎn)在64位環(huán)境下尤為突出。我們還使用-O2與-O3參數(shù)分別編譯了針對(duì)龍芯2F、n32模式優(yōu)化的代碼,考察兩者之間的性能差異。也許是測試程序的代碼太過簡單,lat_ops與par_ops靠進(jìn)一步優(yōu)化獲得的性能提升與編譯增加的時(shí)間絕不成正比。
實(shí)際應(yīng)用測試
接下來進(jìn)行的實(shí)際應(yīng)用性能測試相信更讓人感興趣。Linux GCC 4.4根據(jù)現(xiàn)有測試條件,我們選取了一些比較常見的應(yīng)用作為測試項(xiàng)目,并將它們歸納為桌面與網(wǎng)絡(luò)兩大類。桌面部分包括病毒檢測、壓縮打包和音頻編碼三種應(yīng)用,考量指標(biāo)是完成任務(wù)需要的時(shí)間;網(wǎng)絡(luò)部分則通過在不同系統(tǒng)環(huán)境下構(gòu)建完整的LAMP(Linux/Apache/MySQL/PHP)服務(wù),使用思博倫通信的Avalanche 2500應(yīng)用層性能測試儀考察不同測試用例的每秒最大新建事務(wù)數(shù)。
【編輯推薦】