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