多核服務器吞吐性能提升大測試
多核服務器吞吐性能提升是非常重要的,因為服務器不同于臺式機和工作站,它與外界打交道的通道就是網絡,無論處理器進行了哪些復雜的計算,其結果都要通過網卡返回給請求對象。從某種意義上講,網卡就是服務器對外聯絡和通信的"咽喉"組件,它在某種程度上決定了服務器的整體性能。我們進行的多核服務器吞吐性能提升測試,就是圍繞網卡的吞吐能力進行的。
其實很多用戶對于多核服務器吞吐性能提升都有疑問-服務器的網卡真的那么重要么?我的筆記本電腦也配置千兆網卡啦!沒錯,目前主流服務器所配置的都是千兆以太網卡,從指標來看,這兩種網卡在性能上沒有什么區別,但是面對大數據流的時候,你就會發現服務器的網卡功力之深厚,遠非桌面級網卡所能比擬的。
計算機世界實驗室的多核服務器吞吐性能提升測試腳本中有兩類應用與服務器網卡的性能直接相關,一類是靜態Web頁面,另一類是基于ASP的Web應用。這兩類應用都有同一個特點,即單位時間內并發請求高,而通過專用測試設備可直接向服務器發出海量數據包,服務器吞吐能力的高低即刻就能呈現出來。
在常規的Windows Server 2008系統的測試中,我們發現在默認設置下,即便是表現最好的至強5500服務器平臺,靜態響應指標都很難超越28000TPS,而此時處理器性能還遠未發揮出來。表面上服務器的吞吐性能似乎是被VCPU限制了,其實瓶頸在于網卡,因為網卡在默認狀態下只能和一個VCPU打交道,而服務器網卡顯然不應該只有這點實力。
從各家服務器網卡芯片的資料和驅動中,我們發現,在新一代服務器網卡配置中,都提供了TOE(TCP Offload Engine)功能。此功能可以將網絡層面的一部分工作移至硬件完成,以節約CPU的資源,在高級選項中可以設置是否對Rx/Tx有效。在開啟此選項后,可以明顯看到VCPU資源得到了相當程度的釋放,整機訪問性能也上升到了41000TPS,即使面對這樣強的數據流,至強5500平臺整體CPU占有率依然未超過70%,而且表現還相當平穩。如此成績令我們興奮之余,也讓我們意識到,處理器還有余力,看來網卡端還有潛力可挖。
沒錯,下面就開始介紹本次測試的重點-RSS(Receive-Side Scaling),擁有RSS功能的網卡不少,但是能在RSS基礎上提供隊列支持的就太少了,我們最終在英特爾i82576網卡上看到了最多支持8條隊列的特性,而它同時支持1/2/4/8條隊列的功能也讓我們更深入地了解了不同隊列數量對于新一代多核服務器吞吐性能的意義。
RSS隊列的精華功能是將網卡的數據分流到運行在不同VCPU的并行協議棧上,因此在實際測試中,我們發現,在設置兩條隊列時,服務器的性能就獲得了極大的提升,53000TPS的性能遠遠超出了最初的預想,而此時服務器整體CPU占有率也超過了90%。而隨著4條隊列的引入,即便是雙路至強 5500平臺的16顆VCPU,也都能調動起95%以上的計算能力,而此時性能幾乎達到峰值-57600TPS,再引入8條隊列,也基本如此了。因此我們初步判斷,要提升服務器的Web接入、數據庫訪問、網絡游戲前端等強調TPS指標的應用模型時,RSS隊列是一個必須要關注的設置點。它配合TOE,可以充分發揮多核時代服務器的吞吐性能。
【編輯推薦】