天天看點

龍芯處理器應用于伺服器的性能初探

作者:新鐵流

自從今年龍芯3C5000+7A2000面世以來,在伺服器市場已經具備初步的競争力。在11月16日南京的會議中,龍芯釋出了幾十款伺服器與桌上型電腦産品。一直以下,伺服器CPU給人的感覺比較高端,價格也要貴好幾倍,一個INTEL的新一代伺服器(例如8380)處理器要9000美元。占領伺服器市場可以獲得更高的利潤,也有助于豎立更好的品牌形象。

龍芯處理器應用于伺服器的性能初探

伺服器市場目前還是H、海光比較曆害。H是全棧的産品,你買H雲平台,主要端得用鲲鵬處理器,買H的存儲,也是鲲鵬處理器,H有高斯資料庫(有MPP版本,也有DBMS版本),捎帶着也用鲲鵬,買H産品,H不讓用别家的CPU搞信創。海光就沒什麼可說的,是intel的平替,基本上不要适配,海光單核強,核數多,在信創市場上,基本是性能天花闆。靠山吃山,鲲鵬背靠H,飛騰背靠中國電子,海光兆芯靠X86帝國。龍芯主要是背後沒有大樹,也是不容易,但手裡有槍!

但龍芯未必不能脫圍,伺服器CPU是跑什麼的?實際上伺服器的生态比桌面單純的多。絕大多數行業伺服器的任務比較單純,一般就是WEB伺服器,應用器(JAVA最多),資料庫伺服器。這就意味着一款伺服器,隻要能跑apache,niginx等WEB伺服器,能運作JVM,能跑起來資料庫,基本上就滿足的要求,不需要ADOBE 全家桶,不需要新版本的QQ,不需要AUTOCAD之類的工業軟體,适配要容易的多。加上目前的伺服器軟體多數是開源軟體,有GCC,JVM就能編譯出來。伺服器的CPU頻率也相對低,2-3GHZ的情況比較多。龍芯如果能夠深耕一下,把幾款軟體調的比較好、加上3C6000性能上再有一點優勢、再搞一點“可信計算(TPM)”之類的花活,應該能夠吃下一些伺服器的市場。

我有一塊3A5000+7A2000的闆子,做了幾個小小的測試,試圖反映了這一代龍芯處理器在伺服器市場的潛力。這次主要主要是三個方面。(1)SPECJvm2008(JAVA性能) (2) nginx(WEB伺服器性能) (3) mariaDB (資料庫性能)。這三方面性能,分别對應普通企業應用的三項核心角色(WEB伺服器,應用伺服器,資料庫伺服器),不願看完的先說下結論,龍芯的底子不錯,在這幾個場景可以與同頻的intel 三代酷睿核心相比,部分項目亮眼,達到當代處理器水準。主要問題上,由于架構比較新,很多軟體需要把精力調一下。

在開始前,先強調一下,計算機系統的性能評價是很複雜的,一個最終得分是不夠的。常常兩個處理器一個得分,裡面的子項差别也很大,還是要針對自己的應用作評估,拿自已目标應用去測更好,其次,當代企業應用的瓶頸一般不在CPU,常常在IO,企業不算題目,就增删改查資料,是以我下面的mariaDB的成績更多的是反應了這個平台的性能,可能那塊M2盤作用比關鍵。以下測試算是不嚴謹的,完全沒有調參(不調參可能更貼近使用者),各平台之前對比也沒有在版本、系統方面調成一緻,大家有個大概映像就行。

龍芯電腦組態 3A5000(2.5G)/2*8G (光威ddr3200)/M2 256G(PICE3.0 铨興)

(1)SPECJvm2008 也是SPEC公司的産品,雖然不上cpu2006,cpu2017名氣大,但好像在同類當中,又有最有名氣的。有編譯,加密,計算,資料庫等項目。雖然是2008版本,但其實也合适,大量的企業都在使用jdk1.8,剛好用這麼老的測試軟體。要不是oralce上趕着,大家都沒有動力換新的JDK。這個玩意跑一遍也好幾個小時,用jdk.18測SPECJVM2008,要稍改一下代碼,否則可能hang住,網上有解決方案(SPECjvm2008測試過程出現startup.compiler.sunflow堵塞一直卡住問題解決方法 (yunfuhelp.com))。

測試很簡單: java -jar SPECjvm2008.jar -ikv

如果測單線程,可以加個參數 :java -jar SPECjvm2008.jar -ikv -bt 1

單線程測試,3A5000(42.15 分),我在一台三代酷睿的平台(E5-2640V2/4*16G DDR1600/M2 1T PCIE3.0/win10),這個酷睿最高運作到2.5G,頻率與龍芯一樣,單線程得分(42.33),這兩個基本打平了。

龍芯處理器應用于伺服器的性能初探

龍芯3A5000單核 SPECJVM

E5 2640V2(三代酷睿)單線程SPECJVM

不加單線程參數,測四個核心的,3A5000的分數是122 Ops/m。這大概是什麼水準?

我們找一個參照機,找一台i5四平台(I5 4590/8G/SanDisk SSD 128G/win10)。這個測試其實與記憶體與硬碟關系不大,隻能将就找一台機器。将這個i5的腿打折,運作在2.5GHz 得分136,看來龍芯還是比不上同頻Haswell i5,繼續降頻,把i5降到2.3G,126 Ops/m,降到2.2G,為120 Ops/m。這樣看來,3A5000運作SPECJVM的工作負載,大約相當于2.2-2.3GHZ的 四代i5。這個性能其實還可以,對信創應用應該是夠了。我今年6月才換的12代的筆電,之前一直使四代1.7G的i3筆電,也沒覺得多慢。

龍芯處理器應用于伺服器的性能初探

龍芯3A5000四核心

龍芯處理器應用于伺服器的性能初探

i5 4590(2.5GHz)

龍芯處理器應用于伺服器的性能初探

i5 4590(2.2Ghz)

曾經在B站上看過一個視訊,一全UP主用3A3000測試SPECJVM,與一個i5三代的筆記本U對比,好像最高也是2.5G,一對比,當時i5比3A3000很多項目快五六倍,UP主嘟嘟嚷嚷的,情緒低落。鬥轉星移,歲月更替,三年之後,3A5000能平i5三代了,令人感慨,真是雄關漫道,滄海桑田。

(2) 下面測試Nginx: nginx是主流的WEB伺服器。測試nginx使用的是phoronix_test_suite。phoronix_test_suite 是一個開放的測試工具,有很多測試集,主要是可以與上傳的不同平台相比(openbenchmarking.org/),可玩性很強。

測試指令是phoronix_test_suite benchmark nginx,如果是X86,直接就可以完成。龍芯由于新架構,要自行下載下傳一個LuaJIT替代安裝包裡wrk的LuaJIT,此外,make 的時候,還有一個dirent.h相關的報錯,網上查,編譯nginx報這個正常,修改install.sh,讓它跳過這個錯,最終是能測了,如果大家有興趣,專門開貼說怎麼鼓搗。回到測試,這個測試是用一個wrk的工具去并發通路nginx。

測了一下,結果居然比較給力,3A5000在20個連接配接(43953 request per second)、100個連接配接(53780),200個連接配接(52554)的情況下,都很兇猛,居然比APPLE M1,i7-10700T(29078 ,34473,34446)都要高。是否是3A5000适合做nginx服務?後面再考證一下,看上去資料很好。

龍芯處理器應用于伺服器的性能初探

nginx 測試100、200個連接配接

nginx得分天梯圖(20 Connections)

(3) mariaDB就是mysql的後繼者,MySQL讓oralce收購後,作者又建立了mariaDB,現在Linux中新版本就裝這個為主了,用法上基本與mysql一樣。Msqlslap是一個自帶的benchmark程式。這個編譯也有點問題,下載下傳config.sub,config.guess的最新版本後通過。分别測試了8個用戶端(987),32個用戶端(644),256個用戶端(137 qps)。在網站上找了類似的處理器相比,一個是i3-9100f平台,(openbenchmarking.org/re),這個平台也是4核心skyflake/8GB/M2 PCIE 3.0 成績分别是8個用戶端(948),32個用戶端(497),256個用戶端(76). 成績還不如3A5000。當然,也有高的,例如,一套i5-12600K openbenchmarking.org/re 成績是2879,2122,801

龍芯處理器應用于伺服器的性能初探

3A5000 (8 Clients)

最後總結一下。

(1)性能比我想像的要好,SPECJVM 單核心打平了同頻的三代酷睿,這個性能已經可以用了,3A5000對龍芯确實是重要的産品,跨過了“性能可用”的門檻。nginx性能亮眼,需要進一步分析。mariaDB超過了i3十代,這也令人驚訝。

(2)我測試一些别的項目,有好有壞。這不希奇,對通用CPU,當然有的成績好,有的成績壞。有的是編譯選項問題,有的是指令集問題。現階段,畢竟國産處理器現在要解決信創過程中的各項問題,各個軟體的支援還是比不了intel多年經營。

(3)測試時,很多項目因為架構不支援,需要trouble Shooting,但目前GCC支援LongArch了,這些問題都不難解決,過一段時間應該可以緩解。