硬件異構性,定價和易管理性: Alas,在云上具有主宰地的x86微處理器,近年來在性能上幾乎沒有任何提升。2017年,單個程序的運行性能僅僅上升了3%。假設這個趨勢繼續下去,即便20年后性能也不會翻倍。類似的,單個芯片的DRAM能力也已經接近極限,16G的DRAM在市面上很常見,但32G的造起來就不太可行了。
盡管通用目的微處理器出現了性能上的問題,但對更快算力的要求卻沒有停止過。要向前進,只有兩條路可行了:一是對于用高級腳本比如js和python編寫的函數,使用專門優化過的硬件-軟件設計,定制對應的處理器,這可以把特定語言的執行速度提升1到3個數量級。二是使用領域特定的體系架構(Domain Specific Architectures),比如使用GPU,這在圖像加速和機器學習領域已經是很常見的事情了,相信在未來會有更多針對領域定制的處理器出現。
我們在4.1節中曾經提到過,serverless計算要支持即將到來的硬件異構問題有兩種方案:
serverless可以包含不同的實例類型,并為它們制定不同的單位使用價格。
云供應商可以支持自動切換基于語言的加速器或者領域特定體系架構。這種自動化能力可以基于cloud functions中所使用的語言或軟件庫隱式地完成,比如自動使用GPU來運行CUDA代碼、用TPU來運行TensorFlow代碼。云供應商還可以監控cloud functions的實際運行性能,根據歷史數據來為它們選擇最適合運行的硬件。
serverless計算目前面臨的異構性問題,只是x86的SIMD指令集上面很小的一部分。AMD和Intel都在通過增加單時鐘周期內運行指令數和增加新指令的方式來快速改進x86指令集。對于使用SIMD指令集的程序而言,運行在最新的Intel Skylake微處理器上要比在舊的Broadwell上快得多。今天這兩種微處理器在AWS Lambda上都有應用,但它們的收費是相同的,用戶也沒辦法選擇自己的實例到底運行在哪一種處理器上。
由于加速器在云上越來越流行,serverless的云供應商可能沒辦法再繼續忽略硬件的異構性問題,特別是在已經存在合理補救措施的情況下。