国产精品奶水无码视频免费|激情五月天深爱网|精品国产女主播一区在线观看|国产黄网一区二区

騰訊云黃炳琪:騰訊云如何通過F-Stack項目解決內核擁堵

2017-04-13 10:03:25 熱度:
2017年4月12-13日,2017亞太CDN峰會在北京隆重召開。在13日上午的視頻云論壇上,騰訊云研發(fā)總監(jiān)黃炳琪作了題為《騰訊云CDN全用戶態(tài)Server實踐》主題報告。
 

圖為:騰訊云研發(fā)總監(jiān)黃炳琪
 
“長胖的Linux”:騰訊云操作短板
 
演講開頭,黃炳琪總監(jiān)向我們普及了一個“J型曲線”的概念。他認為盡管最近幾年帶寬、流量型業(yè)務的翻番式的增長和如影隨形、愈演愈烈的DDOS攻擊和CC攻擊對CDN的技術體系提出來越來越多的挑戰(zhàn),但是面對這些挑戰(zhàn),騰訊云手里也有不少重武器來應對,比如網卡和交換機容量的不斷提升、CPU核心數也水漲船高、NVMe和NVDIMM的應用也越來越廣。
 
從硬件層面來看,黃炳琪認為騰訊云有足夠的裝備來打贏這場戰(zhàn)爭,截至目前,騰訊云的網卡容量從25GbE升級到40GbE再到100GbE;CPU核數也從24Core升級到48Core,直至56Core。騰訊云還擁有“NVDIMM NVMe”。不過在實操過程中騰訊云發(fā)現現有的體系中有一個特別大的短板,黃炳琪將這個短板(Linux太臃腫)生動的形容為“Linux太胖了”,任何一個數據包從網絡上過來到達用戶層,都會經過上下文切換,內存分配和拷貝,鎖,局部性失效的問題。黃炳琪認為,其實這些機制本身并沒有錯,這是幾十年來軟件工程領域的精華,只不過是linux是通用操作系統(tǒng)。他說“一個通用操作遇到這么特定的、極端的業(yè)務要求,的確是老干部遇到了新問題。”
 
問題是什么呢?黃炳琪說是“內核擁堵”。一個數據從包網絡上過來,通過硬中斷、軟中斷或是NAPI把數據收到內核里,然后經歷內存cp、各種各樣的鎖、線程喚醒、內核通知鏈,然后到用戶空間線程來讀取,這個時候的線程還指不定在哪個CPU上跑。一套機制如若很復雜,做內核開發(fā)的時候常常拿其中內核鎖一項就問倒一大片面試者。因為這個問題的存在,業(yè)界逐漸出現了業(yè)務數據繞過內核的呼聲,就是所謂的kernel bypass。
 
業(yè)界解決內核擁堵:kernel bypass
 
黃炳琪從四個方面解釋了kernel bypass:
 
其一:kernel bypass重新定義的內核空間和用戶空間的分工。內核主要做高優(yōu)先級,高權限的控制信令的操作。而用戶空間主要關注于大流量,高并發(fā)的數據流收發(fā)。在實踐上,一般kernel bypass是一個網卡隊列對應一個用戶空間進程,對應一個綁定的CPU,形成一個邏輯單元。所有的數據和計算都在這個單元里面閉環(huán),每個邏輯單元之間不共享任何數據。
 
其二:這個架構如何解決4個問題。由于全部是用戶空間,自然不存在硬中斷,軟中斷,用戶態(tài)和內核態(tài)的切換,由于線程綁定在特定的CPU上,全異步執(zhí)行,所以沒有進程的上下文切換。從設備DMA出來的內存一直可以用到死,不需要內核空間和用戶空間拷來拷去。
 
內核中大量鎖的出現,是因為linux作為搶占式的內核,會在代碼不受控制的情況下在多個上下文中來回串,還會共享很多數據。比如說同一個端口號,google也出了一個補丁muti port來降低端口鎖的影響,DNS端口分發(fā)。
 
其三:kernel bypass的難度。業(yè)界要一直大規(guī)模的用起來,主要在二層、三層做網關路由轉發(fā)等工作,最多玩玩簡單的UDP協(xié)議。因為本來沉淀在操作系統(tǒng)內的功能和機制已經發(fā)展了幾十年,外圍的軟件生態(tài)也是圍繞其建設的。要重新在用戶空間復制一套的難度和工作量其實都不是一般得大。
 
其四:為什么要投入kernel bypass。黃炳琪解釋,業(yè)務的壓力其實并不是一天兩天的事情了,從web2.0開始,互聯網的爆發(fā)式增長,迫使業(yè)界必須從這條路上趟一趟。所以從幾年前騰訊云在從簡到易的實踐by kernel的方案,時至今日,已經形成完整的、成熟的、易用的一個開發(fā)工具棧。
 
F-Stack項目——騰訊云如何解決內核擁堵
 
F-Stack是基于kernel bypass的理念的完整的、成熟的、易用的、高性能server技術?!,F代的操作系統(tǒng)和軟件架構是幾十年來人類智慧的結晶,騰訊云的實現理念是:把這個星球最優(yōu)秀的軟件和代碼粘合起來。在此之前,騰訊云也走過彎路,開發(fā)了一個能用的TCP/IP協(xié)議棧,發(fā)現走不通以后就放棄了。
 
F-Stack的特點:1、全用戶態(tài)。用戶態(tài)開發(fā)簡單、安全;拒絕四個上下文切換;拒絕內存拷貝;拒絕中斷和中斷風暴。2、網卡隊列每CPU每進程。線性能力擴展;拒絕調度;拒絕鎖;拒絕破壞局部性。黃炳琪解釋道:由于全部是用戶空間,自然不存在硬中斷,軟中斷,用戶態(tài)和內核態(tài)的切換,由于線程綁定在特定的CPU上,全異步執(zhí)行,所以沒有進程 的上下文切換。從設備DMA出來的內存一直可以用到死,不需要內核空間和用戶空間考來考去。
 
F-Stack在騰訊云CDN的應用:1、直播異常不斷流;2、CDN安全防攻擊;3、CDN TCP協(xié)議加速;4、CDN性能提升。
 
演講最后一部分,黃炳琪向我們展示了F-Stack性能測試,由于他的團隊做了大量的努力大量的優(yōu)化,F-Stack的性能測試從短連接測試到長連接測試再到混合連接測試,F-Stack都表現完美。

責任編輯:方珍