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