官术网_书友最值得收藏!

1.4 底層軟硬件挑戰

硬件永遠面臨軟件的挑戰:無論硬件性能多強勁,都無法滿足軟件持續快速上升的性能需求。在云計算應用場景中,大規模、多租戶、復雜網絡等多種需求疊加,這使得底層硬件及相關的底層軟件(如驅動程序、固件等)面臨更復雜的挑戰。

1.4.1 業務異構加速

業務從無到有,再到大規模發展,對云計算主機的需求一直在變化。

·最初的業務特征可能不明顯,在這種情況下,宜選用以CPU為計算核心的通用云計算主機。

·隨著業務的進一步開展,業務場景逐漸穩定,當用戶對自己的業務非常熟悉之后,用戶可能會傾向于針對不同的業務選擇不同類型的主機。例如,針對HPC選擇計算優化型主機,針對大型數據集處理選擇內存優化型主機等。

·隨著業務的深入開展,業務場景逐漸固定,當云計算資源的規模足夠大時,就有了通過硬件進一步加速來提升性能并降低成本的訴求。

隨著人工智能技術的蓬勃發展,基于GPU加速的機器學習訓練及推理得到大規模應用。GPU加速主要應用于機器/深度學習、高性能計算、計算流體動力學、計算金融學、地震分析、語音識別、無人駕駛汽車、藥物發現、推薦引擎、預測、圖像和視頻分析、高級文本分析、文檔分析、語音、對話式代理、翻譯、轉錄和欺詐檢測等領域。

FPGA能夠為特定應用場景定制加速器,相比GPU,FPGA加速效率更高,缺點在于硬件編程的技術難度和工作量大。因此,基于FPGA的加速主要是以FaaS(FPGA as a Service,FPGA即服務)平臺的模式出現,由Xilinx、英特爾或其他供應商提供底層的FPGA軟硬件支持,把FPGA封裝成標準的加速平臺。一些第三方ISV可以基于標準平臺開發一些針對主流應用場景的特定加速器。在云計算數據中心大規模服務的支持下,FaaS既具備了硬件加速的高效,也具備了云計算的彈性特征,在一些特定領域得到了廣泛的應用。

異構加速的實現架構通常是CPU+GPU/FPGA,主要由CPU完成不可加速部分的計算及整個系統的控制調度,由GPU/FPGA完成特定任務的加速,這種架構面臨如下挑戰。

·可加速部分占整個系統的比例有限。

·受到數據在CPU和加速器之間來回搬運的影響,有些應用場景綜合加速效率不明顯。

·額外的CPU/FPGA加速卡導致成本增加。

·異構加速引入了新的實體,使得由一個實體完成的計算變成了由兩個或多個實體協作完成,增加了整個系統的復雜度。

·GPU、FPGA 都有多種平臺。例如,NVIDIA GPU 的 CUDA(Compute Unified Device Architecture,統一計算架構)、Xilinx FPGA的SDAccel、Intel的Accelerator Stack等。每種平臺都需要考慮各自的硬件加速器型號和規格,這給云計算的硬件成本及運維管理帶來了挑戰。

·雖然底層軟硬件供應商已經為自己的硬件平臺封裝了非常強大且對用戶友好的開發和應用框架,但當面對一個新領域的時候,異構加速平臺距離業務級的開發者還是太遠,用戶自己開發底層軟硬件的難度依然很大。

1.4.2 工作任務卸載

在虛擬化的架構里,系統可以簡單地分為兩層:Guest層和Host層。Guest層是用戶業務層,Host層是后臺管理層。Host層的工作任務主要是虛擬化管理、I/O后臺處理,以及相關的監控、操作和管理等。

Host層的多種工作任務中最消耗CPU資源的是I/O后臺處理,如網絡VPC、分布式存儲等。Intel在Xeon CPU上做過網絡OVS的性能測試:64B數據包流消耗4個CPU內核,通過DPDK加速的OVS最佳性能是9Mpps的吞吐量4.6Gbit/s的帶寬。隨著網絡帶寬的不斷升級。如果仍然通過DPDK加速OVS那么CPU開銷將無法承受。將10~15個甚至更多的CPU核專門用于數據包處理,意味著沒有多少剩余的CPU核可以用于用戶業務。在服務器上運行的VM或容器越多,云計算服務商賺到的錢就越多。如果為DPDK-OVS分配大量CPU核,那么在服務器上啟動的VM數量將減少,從而減少云計算服務商的收入。

Host層的其他工作任務也都會占用一定的CPU資源,并且存在跟用戶業務爭搶CPU資源的問題,最好都能夠卸載到硬件設備。云計算服務商總希望把盡可能多的CPU資源出售給用戶業務,以此來賺取更多的收入。虛擬化的功能非常復雜,包括vCPU的調度、虛擬設備模擬、熱遷移、虛擬機管理等。相比虛擬化的功能,虛擬化的卸載更加復雜,除了Hypervisor的功能,還涉及整個云計算體系結構的重構。

工作任務卸載跟業務異構加速有很多異同點,相同點在于兩者本質上都通過硬件加速來提升性能,并且都需要軟件的協同工作;區別主要有如下幾點。

·工作任務卸載不是局部算法加速而是整體卸載,所有的處理都放在硬件中實現(數據面會完全卸載,控制面可能依然在主機側)。

·業務異構加速是單個工作任務內部的協作,工作任務卸載是卸載的任務和主機側其他任務的協作。

·工作任務卸載對用戶來說是透明無感知的,業務異構加速平臺則需要暴露給用戶。

工作任務卸載一般不改變現有云計算軟件系統,而是做到與其兼容。工作任務卸載的挑戰在于如何做好軟硬件劃分,以及更好地把軟硬件接口劃分清楚,以實現在不修改硬件數據面處理的情況下,軟件能夠快速迭代升級。工作任務卸載的目標是由硬件負責數據面,由軟件負責控制面,實現硬件的高效和軟件的靈活統一。

1.4.3 軟硬件接口的標準化和靈活性

狹義的軟硬件接口即I/O接口,我們通常把CPU和I/O設備之間的接口擴展到CPU與其他硬件之間的數據交互接口。我們通過I/O接口在軟件和硬件之間傳輸數據,這些數據即在軟件中處理,也在硬件中處理,而I/O接口就承擔了軟件和硬件之間數據通信接口的角色,我們稱之為軟硬件(數據)接口。

1.軟硬件接口的標準化

為了降低數據中心大規模管理及業務遷移的復雜度,同時提高二者的穩定性,需求云計算基于無差別、的硬件平臺。通常通過虛擬化技術把底層有差別的硬件特性抹平,為虛擬機提供一個無差別的虛擬硬件服務器。

完全硬件虛擬化技術很難實現無差別的虛擬硬件服務器。我們通過硬件虛擬化技術把CPU里的處理器和內存訪問直接暴露給虛擬機,因為主流的服務器架構都是x86,所以我們依然可以認為這些服務器的CPU處理器和內存是無差別的。但是,在通過直通模式和SR-IOV等技術把硬件設備完全暴露給虛擬機的時候,出現了一些問題:不同供應商生產的同一類設備的接口完全不同,需要加載不同的驅動程序;同一個供應商的現代同類產品也可能因為產品升級換代的原因而無法保證二者之間的接口完全兼容。

當前云計算場景的I/O虛擬化技術仍然以類虛擬化技術為主,這不可避免地會影響I/O的性能。隨著網絡、存儲向著大帶寬、高性能的方向發展,類虛擬化技術越來越成為影響I/O性能的主要因素。

為了實現在支持標準化接口的同時保證完全硬件虛擬化I/O設備的性能,云計算廠家更傾向于選用公開、高效、標準、廣泛使用的I/O接口。例如,AWS的網絡設備接口為ENA,存儲接口為NVMe。

2.軟硬件接口的靈活性

I/O硬件虛擬化雖然可以呈現出很多虛擬設備,但實際上是將物理設備進行了共享,這些物理設備既可以是同類型的,也可以是不同類型的。物理的硬件接口可以根據實際需求進行靈活配置,配置的靈活性體現在如下幾方面。

·接口的類型可配置。我們可以根據不同的應用場景,配置每個物理接口上需要虛擬的多個不同類型的接口。例如,網絡類型的接口、存儲類型的接口、網絡類型和存儲類型共存的接口,以及其他不同接口類型或接口類型集合。

·接口的可擴展性。每一種類型的虛擬接口還可以靈活地配置同類型虛擬設備的數量。

·接口的性能彈性。如果是網絡接口,我們可以靈活配置不同網絡虛擬接口的最大帶寬、網絡包處理的最大PPS值等;如果是存儲接口,我們可以靈活配置不同的最大存儲吞吐量和IOPS等。

1.4.4 硬件處理的虛擬化和個性化

云計算場景面臨的一大挑戰是多租戶,當我們把Host層的工作任務從軟件轉移到硬件處理時,硬件就需要實現虛擬化功能來支持多租戶。云計算通過PCIe SR-IOV及多隊列(Multi-Queue)技術實現了更細粒度的接口完全硬件虛擬化,硬件內部同樣需要支持完全硬件虛擬化的多隊列,以實現邏輯分離的硬件處理引擎,使每一個隊列的處理一一對應。

很多硬件內部支持多通道(Multi-Channel)技術,硬件處理的虛擬化跟多通道類似,但又不完全相同。就像服務器虛擬化可以虛擬出各種不同資源配置、用于不同工作處理的虛擬機一樣,硬件處理的虛擬化同樣需要在隊列粒度的層級上實現不同隊列的個性化處理。例如,塊存儲場景有數據壓縮、加密、備份等需求,網絡場景有IPSec、新的網絡轉發協議的需求,但并不是所有用戶都有同樣的需求,不同用戶的需求可能千差萬別,甚至同一個用戶的不同實例需求也不一樣。這就需要實現隊列粒度、有狀態、虛擬化、個性化的硬件處理。

1.4.5 業務和管理物理分離

后臺管理層的工作任務卸載一般只卸載部分后臺任務,或者主要卸載工作任務數據面,以此來減少絕大部分的CPU資源消耗,控制面的處理仍然要運行在Host層。而業務和管理物理的分離更加徹底,把后臺管理完全轉移到了新的硬件設備,把CPU完全交付給用戶業務使用。業務和物理管理分離的訴求一是來自后端管理和用戶業務之間的相互影響;二是來自安全管理;三是來自用戶獨占物理服務器。

在云計算基于虛擬化的多租戶環境下,用戶業務和后臺的管理共存于一個服務器軟件系統里,用戶之間會因為資源搶占而相互影響,后端管理和用戶業務之間也會相互影響。

·虛擬化管理可能會對共存于同一個硬件服務器的業務實例造成影響。例如,如果我們不想讓熱遷移影響業務實例的性能,那么就需要增加整體遷移持續的時間,但這樣會降低熱遷移的效率,并且影響業務實例高可用的體驗;如果盡可能地減少整體遷移持續的時間,那么就會對其他業務實例性能產生影響。

·后臺工作負載會占用CPU資源。例如,當某個業務有突發大流量網絡訪問的時候,由于后臺網絡VPC工作負載主要進行數據面的處理,因此會等比例地增加CPU資源消耗,這也會對業務實例性能造成影響。

云計算多租戶運行于同一個環境里,勢必會增加安全風險:一方面,操作系統或虛擬化管理潛在的漏洞可能會被別有用心之人利用;另一方面,云計算運維管理存在人為失誤的可能,從而影響用戶實例。

一些用戶會有物理機實例的需求。例如,一些HPC的場景性能敏感,即使非常少量的性能損耗也不可接受。又如,一些企業用戶已經有一套自己的企業級虛擬化環境,大量的虛擬機運行在這些企業級的虛擬化環境中,當用戶遷移到云的時候,需要考慮更多的兼容性問題,因此這些企業用戶希望服務器是物理機,從而可以不改動底層的虛擬化環境,整體遷移到云計算環境。物理機實例的需求給云計算運行環境帶來了非常大的挑戰,例如:

·我們很難把網絡VPC、分布式存儲等后臺I/O工作負載添加到用戶的業務實例中。

·無法實現物理機實例的高可用(物理機無法遷移)。

·面臨很多I/O接口不一致的問題。

1.4.6 硬件的功能擴展

在處理某個任務時,軟件處理比硬件處理的靈活性更好;而硬件處理比軟件處理的處理性能更好。硬件處理一旦確定就很難更改,也意味著很難再加入新的功能。

傳統的SoC芯片上通常會集成有參與數據面處理的高性能處理器,可以通過加入軟件處理的方式實現功能擴展,但這種方式存在性能瓶頸問題。云計算場景對處理的帶寬、延遲、OPS(Operations Per Second)等非常敏感,基于軟件的功能擴展并不是很好的解決辦法。PCIe等芯片間總線互連的性能遠低于片內總線互連的性能。例如,CPU+GPU等異構加速架構通過片間總線互連,同時加入軟件的任務處理,數據要頻繁地在兩者之間交互,性能很差。

由于硬件處理加入的延遲非常有限,幾乎可以忽略,因此帶寬、OPS能夠保持一致。加入獨立的硬件處理來進行功能的擴展會是一種比較好的辦法,但硬件功能擴展面臨如下幾方面的挑戰。

·硬件部分可編程。利用FPGA可以支持硬件可編程,但如果完全基于FPGA實現所有的硬件處理,那么又會得不償失。因為對于同樣的硬件邏輯,基于FPGA的實現比基于ASIC的實現性能更差、成本更高。通常我們將ASIC和FPGA配合使用,比如,把80%的硬件功能用ASIC實現,把20%的硬件功能用FPGA實現。

·接口標準化。固定的硬件處理需要為擴展的硬件處理提供標準的數據I/O接口,擴展的硬件處理需要具有標準的配置接口等。

·功能擴展平臺化。與基于FPGA實現的硬件加速平臺類似,基于FPGA實現的硬件處理需要把支持擴展的整個架構平臺化,這樣才能比較高效地加入擴展的功能。

1.4.7 讓硬件快速迭代

嘀嗒(Tick-Tock)模式是英特爾芯片技術發展的戰略模式:在Tick年,設計的微架構不變,通過改進制造工藝來提升CPU的性能;在Tock年,制造工藝不變,通過設計全新的微架構來提升CPU的性能。采用嘀嗒模式,既能穩妥地讓制造工藝和微架構設計相互印證,又能夠把2年迭代一次CPU變成1年迭代一次CPU。

網絡協議棧,通常用硬件實現比較穩定的物理層和數據鏈路層,用內核態實現通用的TCP/IP層,用用戶態實現變化多樣的應用層。

上述這些案例為我們提供了一些思路:我們可以把系統實現分為硬件ASIC、可編程FPGA、底層系統棧、上層應用4種類型。我們用硬件ASIC實現一些基礎架構和路徑,ASIC可以2年左右周期迭代;FPGA可以半年左右周期迭代,這樣在以ASIC為基礎的硬件整個生命周期,我們大概可以迭代4版硬件。快速的硬件迭代可以最大限度地發揮硬件的價值,并且在新版本ASIC的迭代過程中,我們可以把一些成熟的硬件邏輯從FPGA轉移到ASIC,實現硬件到硬件的“卸載”。

硬件快速迭代最大的挑戰在于如何像軟件系統分層那樣,構建分層的硬件體系結構,設計好各個分層的功能,并定義好標準、清晰、簡潔的層間接口。

1.4.8 硬件高可用

對于云計算服務來說,可用性是非常重要的指標。例如,AWS的SLA(Service-Level Agreement,服務等級協議)可以保證一個區域內的EC2和EBS月度正常運行時間百分比至少達到99.99%。雖然單點的故障概率很低,但大規模的數據中心每天仍會發生數百起故障。主流的互聯網系統都是基于大規模服務器集群構建的,單點的故障會導致非常嚴重的問題。軟件層面通過非常復雜的技術來保證云計算服務的高可用,如采用虛擬機Live Migration、主備切換、負載均衡、分布式存儲等技術。更穩妥的做法還是在硬件層面實現高可用。

·提升硬件穩定性。ASIC芯片的初始成本很高,芯片公司只有大規模提升單款ASIC芯片的銷售數量才能最大限度地實現銷售收入。為了提升單款ASIC芯片的銷售數量,就需要讓芯片產品適應盡可能多的場景,這增加了ASIC芯片的復雜度。即使ASIC芯片經過充分的驗證測試,卻仍然很難完全適應各種應用場景。很多互聯網公司自己做硬件,并可針對特定應用場景定制,不但不需要應付各種各樣的應用場景,還能夠用實際業務環境的灰度機制來做好壓力測試,效果會好很多。

·多路獨立硬件資源。我們可以采用一定的機制把多路獨立硬件資源當作一個整體,使它們共同服務于上層軟件,當其中部分資源出現故障的時候,仍然可以為上層軟件提供一定程度的服務。

·快速故障檢測和自重啟恢復。受到多租戶的影響,云計算服務需要構建基于硬件虛擬化粒度的故障檢測和恢復機制。

·硬件可在線可升級。我們可以利用FPGA的可現場編程特性不斷地優化硬件設計,提高硬件的穩定性。

主站蜘蛛池模板: 安阳市| 辽宁省| 比如县| 福海县| 句容市| 龙门县| 会理县| 百色市| 依安县| 伊宁县| 株洲市| 新疆| 包头市| 隆子县| 夏津县| 新乐市| 乌兰浩特市| 句容市| 郸城县| 东海县| 麻江县| 仙居县| 叙永县| 北京市| 阿拉善左旗| 龙州县| 麟游县| 英吉沙县| 通化县| 三亚市| 北流市| 腾冲县| 太原市| 巴彦淖尔市| 青龙| 林西县| 乌兰县| 商都县| 体育| 开远市| 夏邑县|