騰訊云首次公開:第二代云服務器的獨門秘籍
騰訊云基礎產品團隊:繼承騰訊內部沉淀十多年的虛擬化、計算、網絡、存儲等基礎能力,深度開發KVM和SDN網絡虛擬化等底層技術,開發高可用塊存儲和容器服務,為業界打造一系列高可用高性能的彈性云產品,以及覆蓋互聯網和傳統行業的綜合解決方案。
近日,騰訊云在業內率先發布第二代云服務器CVM2.0,內測一發布,就引來多家大企業爭相申請,第二代云服務器的強大之處是什么?究竟為何獲得企業的青睞?應大家的要求,騰訊云基礎產品團隊首次公開亮相騰訊云第二代云服務器的獨門秘籍。
首先談談第二代云服務器的優勢,為了解決用戶對計算網絡能力的強需求,騰訊云第二代云服務器軟硬件全面升級,第二代云服務器采用最新一代Intel v4 CPU,CPU性能最高可提升40%;搭配DDR4 內存,內存性能提升30%;其中搭配網絡增強版的高 IO 型/計算型實例,包轉發率(PPS)翻倍最高可達40w。
相比于前一代機型使用的Intel v3系列,第二代云服務器采用Intel v4的CPU架構,整體性能大幅提升。同時更有高主頻的計算型,CPU主頻高達3.2GHz,搭配網絡增強型,顯著降低機器負載,提升計算和網絡性能,提高業務的流暢度。
接下來談談第二代云服務器具體的4項軟硬件配備:
一、3.2GHz超高主頻計算型
第二代云服務器推出CPU主頻為3.2GHz的超高主頻的計算型云服務器,是行業中推出的最高主頻服務器,滿足了眾多行業如游戲、移動等高計算性能要求,計算能力爆表,游戲玩家永不掉線。
二、CPU、內存硬件能力齊提升
二代機型采用Intel v4的CPU架構,而一代機型使用的是Intel v3的CPU架構,Intel官網發布,v4架構相對于v3架構整體性能較大提升。二代機型對內存4通道的特性做了相應適配后,相對于一代機型實測內存帶寬,提升約50%。
如此大的性能提升,價格提升卻不到10%,在同類型云服務器中性能最高,具有極優性價比。
CPU性能數據:
內存性能數據:
三、網卡多隊列優化,包轉發率爆表
隨著網絡IO帶寬的不斷提升,單核CPU不能完全滿足網卡的需求,通過多隊列網卡驅動的支持,將各個隊列通過中斷綁定到不同的核上,以滿足網絡帶寬的需求。同時,也可以降低單個CPU的負載,提升系統的計算能力。
單隊列的瓶頸在哪?下面我們先分析下單隊列和多隊列的基本原理。
kernel從內核版本2.6.21之前不支持多隊列特性,一個網卡只能申請一個中斷號,因此同一個時刻只有一個核在處理網卡收到的包,如圖1所示,協議棧通過NAPI輪詢收取各個硬件queue中的報文到圖2的net_device數據結構中,通過QDisc隊列將報文發送到網卡。
圖1 2.6.21之前內核協議棧
圖2 2.6.21之前net_device
內核版本2.6.21開始支持多隊列特性,當網卡驅動加載時,通過獲取的網卡型號,得到網卡的硬件queue的數量,并結合CPU核的數量,最終通過Sum=Min(網卡queue,CPU core)得出所要激活的網卡queue數量(Sum),并申請Sum個中斷號,分配給激活的各個queue。
如圖3,當某個queue收到報文時,觸發相應的中斷,收到中斷的核,將該任務加入到協議棧負責收包的該核的NET_RX_SOFTIRQ隊列中(NET_RX_SOFTIRQ在每個核上都有一個實例),在NET_RX_SOFTIRQ中,調用NAPI的收包接口,將報文收到CPU中如圖4的有多個netdev_queue的net_device數據結構中。
這樣,CPU的各個核可以并發的收包,就不會應為一個核不能滿足需求,導致網絡IO性能下降。
圖3 2.6.21之后內核協議棧
圖4 2.6.21之后net_device
當采用單隊列模式進行網絡處理時,不能實現并行處理,網絡帶寬無法上去。當應用多隊列技術后,在網卡和驅動層均是多隊列,每個隊列對應不同的網卡中斷,這樣多個cpu能并發的處理網絡報文,提升性能。
二代機型不但將多隊列技術應用在宿主機上,而且成功的將該技術應用到了客戶機上,實測(1000M網卡、宿主機48core、客戶機12core)最高可以達到40w pps(256B)的網絡流量,超高的包轉發率,滿足更多客戶同時在線。
四、高精度時鐘源性能優化 優化業務流暢度
騰訊云提供業內最優秀的游戲解決方案。游戲服務器典型特征是大量網絡流量和大量CPU運算。為提供更加優質的游戲解決方案,我們在細節之處作足優化以提升客戶業務流暢度。
在實時類的游戲中,游戲服務器會進行大量時間度量以實現更好的游戲效果。這類服務器大部分使用 Windows Server。在Windows下,進行精確時間度量首選API 是 QueryPerformanceCounter ,這個在游戲編程中非常普遍。另外,系統自身也到處使用這個API,以進行性能相關的統計,所以提升虛擬化環境下對該API的支持,會整體提升虛擬主機的性能。
主流的虛擬化平臺,比如KVM 和 XEN, 對這個API 的傳統處理流程如下圖所示:
虛擬化實現對API 的支持,需要從子機 VM_EXIT 到母機,母機填充數據后再VM_ENTRY 回到子機。這樣增加了虛擬機退出的流程,而虛擬機退出是虛擬化要極力避免的事情。退出越多,性能越差。
騰訊云的Windows主機針對上述問題,進行了專門的優化,獲取效率非常高。改進后API 完全在子機內部完成,不需要退出到母機,性能大幅提高,優化效果顯著。
調用QueryPerformanceCounter API 的速度提升約20倍,網絡高負載下,CPU 利用率降低約 30% 。為這個優化非常適合游戲服務器,可以顯著降低機器負載,提升性能,提高游戲流暢度。
調用 QueryPerformanceCounter 1000萬次,耗時僅需要1985ms,屬業界領先 。
綜上,第二代云服務器在軟硬件上的技術創新,從根本上加速了企業應用云計算的和效率,將全行業的運算性能提升到了一個全新的臺階。