在上一期連載中,我們介紹了與北京市某學(xué)校信息中心合作進(jìn)行的一次硬件平臺(tái)選型測(cè)試,并以此為依據(jù),證實(shí)了x86平臺(tái)在網(wǎng)絡(luò)業(yè)務(wù)處理方面的潛力。隨后一段時(shí)間內(nèi),我們收到了許多來自廠商、用戶的咨詢;個(gè)別用戶甚至愿意提供更完善的環(huán)境,希望我們將這一系列測(cè)試長期進(jìn)行下去,持續(xù)公開更詳細(xì)的測(cè)試結(jié)果。對(duì)于來自讀者的熱情關(guān)注,我們表示感謝,并將在后續(xù)連載中安排更多平臺(tái)的測(cè)試分析。同時(shí),我們也在這里介紹一款經(jīng)常使用的網(wǎng)絡(luò)通信平臺(tái)評(píng)估軟件NCPBench,供讀者進(jìn)行獨(dú)立的性能評(píng)估。
以互聯(lián)網(wǎng)的名義
NCPBench是近期興起的一款測(cè)試軟件,用于評(píng)估x86硬件平臺(tái)做網(wǎng)絡(luò)業(yè)務(wù)處理時(shí)的性能。在我們看來,該軟件融入了大量的互聯(lián)網(wǎng)基因,與日常使用的諸多軟硬件評(píng)估產(chǎn)品有著明顯的不同。眾所周知,用戶參與是互聯(lián)網(wǎng)產(chǎn)品成功的基本要素,NCPBench顯然抓住了這個(gè)要點(diǎn),在產(chǎn)品發(fā)展的方向性上與用戶需求保持著高度一致。該軟件采用了十分開放的構(gòu)建模式,版本升級(jí)比較迅速。與之對(duì)應(yīng)的,在主要功能保持穩(wěn)定的情況下,再根據(jù)用戶反饋需求的迫切性,逐步完善產(chǎn)品的細(xì)節(jié)功能。而互動(dòng)的效果則取決于用戶數(shù)量與質(zhì)量,所以NCPBench本著“讓更多人使用”的理念,采用了免費(fèi)的許可授權(quán)模式,允許甚至鼓勵(lì)被用于包括商業(yè)在內(nèi)的各類評(píng)估環(huán)境。
NCPBench與其他軟硬件評(píng)估產(chǎn)品的第二個(gè)不同,體現(xiàn)在操作的便捷性方面。一般來說,網(wǎng)絡(luò)通信、信息安全等領(lǐng)域的測(cè)試解決方案都比較復(fù)雜,使用時(shí)需要較高的專業(yè)素養(yǎng),配置過程也相對(duì)麻煩。NCPBench則很好地簡(jiǎn)化了用戶端的工作,使用時(shí)只需對(duì)網(wǎng)絡(luò)接口、業(yè)務(wù)模式等幾個(gè)必要環(huán)節(jié)進(jìn)行設(shè)置,即可進(jìn)行性能測(cè)試。一鍵式安裝也是非常實(shí)用的功能,我們拿到新的硬件平臺(tái),用幾分鐘時(shí)間就可以將NCPBench安裝到本地或USB存儲(chǔ)設(shè)備上,而不必經(jīng)歷從磁盤分區(qū)到編譯的諸多步驟。該軟件還內(nèi)置了常見的硬件驅(qū)動(dòng),在多數(shù)平臺(tái)上可以直接發(fā)揮出硬件的所有潛力。
利用NCPBench,我們可以評(píng)估任何x86平臺(tái)的網(wǎng)絡(luò)業(yè)務(wù)處理能力。現(xiàn)階段該軟件提供了“轉(zhuǎn)發(fā)”與“業(yè)務(wù)”兩種應(yīng)用模型,前者不對(duì)數(shù)據(jù)包進(jìn)行任何處理,考察的是硬件平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)極限;后者將建立數(shù)據(jù)流的概念,其業(yè)務(wù)復(fù)雜度與NAT、狀態(tài)檢測(cè)引擎類似。通常,我們會(huì)測(cè)試x86硬件平臺(tái)在兩種模型下的吞吐量與延遲,當(dāng)然這些結(jié)果都是理論值,僅供評(píng)估參考。根據(jù)經(jīng)驗(yàn)來看,設(shè)備在真實(shí)流量下的綜合效能,如果能達(dá)到模擬測(cè)試環(huán)境中的50%,就已經(jīng)相當(dāng)難得了。不過“轉(zhuǎn)發(fā)”模型下的性能還是很重要的,畢竟對(duì)于沒有任何加速邏輯的x86平臺(tái)來說,數(shù)據(jù)包純轉(zhuǎn)發(fā)的性能是一個(gè)極限標(biāo)桿。沒有高性能轉(zhuǎn)發(fā)做支撐,任何上層業(yè)務(wù)都將是紙上談兵。
高性能的誘惑
眾所周知,目前x86平臺(tái)用做網(wǎng)絡(luò)業(yè)務(wù)處理時(shí),首先要解決的就是多個(gè)處理器內(nèi)核間的調(diào)度與資源分配問題。如果使用傳統(tǒng)的處理模型,很可能導(dǎo)致資源使用的不平衡,無法發(fā)揮出硬件平臺(tái)的整體性能;而多核并行處理的模式,雖然在理論上可以提升性能,實(shí)際使用時(shí)的效果卻大多令人難以滿意。NCPBench在這方面就顯得非常靈活,用戶可以人為設(shè)定用做轉(zhuǎn)發(fā)及業(yè)務(wù)處理的內(nèi)核數(shù)量,并且轉(zhuǎn)發(fā)與業(yè)務(wù)在每個(gè)獨(dú)立內(nèi)核上也都是并行處理,系統(tǒng)呈純SMP形態(tài)。該軟件也不像某些同類產(chǎn)品那樣必須人為地將網(wǎng)絡(luò)接口與處理器內(nèi)核進(jìn)行綁定,而是根據(jù)硬件平臺(tái)配備的接口種類及數(shù)量,自動(dòng)建立關(guān)聯(lián)關(guān)系。
經(jīng)過多次測(cè)試,我們已經(jīng)確認(rèn)NCPBench在x86平臺(tái)上可以做到非常強(qiáng)悍的數(shù)據(jù)包轉(zhuǎn)發(fā)性能。現(xiàn)有測(cè)試數(shù)據(jù)中,64byte UDP數(shù)據(jù)包的最大轉(zhuǎn)發(fā)速率接近30Mpps,是在英特爾Sandy Bridge搭配i82599萬兆網(wǎng)卡的平臺(tái)下測(cè)得,此時(shí)使用RFC 2544規(guī)定的7種幀長的數(shù)據(jù)包測(cè)試轉(zhuǎn)發(fā)延遲,時(shí)間也均在10微秒以內(nèi)。這意味著,x86平臺(tái)用做20G/40G環(huán)境中的業(yè)務(wù)處理,并非是遙不可及的目標(biāo)。需要注意的是,x86平臺(tái)所能達(dá)到的數(shù)據(jù)包轉(zhuǎn)發(fā)能力與處理器、橋片、網(wǎng)卡芯片等都有很大關(guān)系,如果在硬件規(guī)格上無法很好地匹配,性能瓶頸就會(huì)過早地出現(xiàn)。我們發(fā)現(xiàn),網(wǎng)絡(luò)通信硬件平臺(tái)大多經(jīng)過有針對(duì)性的定制,硬件搭配相對(duì)合理;服務(wù)器的配置則大多是計(jì)算遠(yuǎn)強(qiáng)于網(wǎng)絡(luò),很可能要另行采用高性能網(wǎng)卡以達(dá)到更快的轉(zhuǎn)發(fā)速度。
為了讓用戶更方便地了解x86硬件平臺(tái)的網(wǎng)絡(luò)處理性能,NCPBench還內(nèi)置了一個(gè)自評(píng)估工具。該工具的使用極其簡(jiǎn)單,只需用網(wǎng)線將要測(cè)試的接口兩兩互聯(lián),就可以在環(huán)路內(nèi)生成指定幀長、方向、強(qiáng)度的UDP測(cè)試流量,對(duì)硬件平臺(tái)自身進(jìn)行測(cè)試(因?yàn)闇y(cè)試流量的生成本身需要消耗一定的資源)。我們注意到在多數(shù)情況下,使用自評(píng)估工具得到的性能值都較測(cè)試儀得到的略低,但觀察到的最大一次誤差也僅在3%以內(nèi),還是具有比較強(qiáng)的參考價(jià)值。