SOSP:計算機系統研究的風向標

微軟研究院AI頭條發表於2017-11-23

SOSP(作業系統原理大會)自1967年創辦以來,兩年一屆,已經有50個年頭了。從1969年的UNIX系統到21世紀初的MapReduce、BigTable、GFS,系統領域一系列最有影響的工作都是發表在SOSP以及與它隔年舉行的兄弟會議OSDI上。如果把SOSP和OSDI歷年最具影響力(Hall of Fame Award)的論文彙整合冊,就是大半本作業系統和分散式系統的教科書。作為系統領域的最高學術會議,SOSP和OSDI每年只收錄30至40篇高質量論文,因而能夠在SOSP上發表論文是系統研究者的榮譽。

SOSP:計算機系統研究的風向標

SOSP’17開幕式(圖片來源:陳海波教授)

今年,SOSP首次走出北美和歐洲來到中國上海,微軟亞洲研究院副院長周禮棟博士和上海交通大學陳海波教授擔任本屆大會組委會主席,康奈爾大學Lorenzo Alvisi教授和密歇根大學Peter Chen教授擔任程式委員會主席。本屆SOSP會議創下了多項記錄和第一:最多的註冊參會者(850位);最多的贊助商數量和金額;首次提供會議直播和線上提問;首次設立了AI Systems Workshop,共商AI系統這個新生的重要應用;由微軟研究院贊助,首次舉辦了ACM學生研究競賽(SRC),吸引到40多篇投稿。

SOSP:計算機系統研究的風向標

Ada Workshop參會人員合影

特別值得一提的是,本屆SOSP大會首次在美國以外舉辦了Ada Workshop。微軟亞洲研究院聯合SOSP'17,邀請了國內外多位女性研究員,共同探討計算機系統領域的未來。1987年,美國電腦科學家Anita Borg參加SOSP’87大會,驚訝地發現自己是唯一的女性科學家,由此三十年如一日地推動提升女性在計算機科研中的地位。如今,女性研究者在系統研究領域的聲音已經舉足輕重。本屆SOSP唯一兩次上臺演講的論文作者Kay Ousterhout就是UC Berkeley的女性博士畢業生,她的導師Sylvia Ratnasamy也是著名的女性科學家。我們希望Ada Workshop能助力系統研究領域的女性快速成長,激勵更多心懷夢想的女性投身系統研究領域。

SOSP:計算機系統研究的風向標

微軟在SOSP’17大會上的展臺

本屆SOSP會議吸引了來自五大洲23個國家和地區的232篇投稿,錄用論文39篇,投稿數量比上屆增加了30%,錄用率保持不變。微軟不僅是SOSP’17的金牌贊助商,還發表了8篇主會論文(其中第一作者論文4篇),是發表論文最多的機構(第二名為麻省理工學院,發表論文6篇)。SOSP的55位審稿人都是學術上的泰山北斗,對審稿工作極其嚴肅認真,每篇投稿平均收到4.9個審稿意見,每個審稿意見平均長達6.5 KB。審稿結束後,程式委員會選出76篇論文,由23位主要審稿人經過兩天的會議,選出最終錄用的39篇論文。

SOSP:計算機系統研究的風向標

北京航空航天大學與微軟亞洲研究院聯合培養的博士生肖文聰在AI Systems Workshop上展示研究成果。AI系統是微軟亞洲研究院系統組的主要研究方向之一。

SOSP:計算機系統研究的風向標

微軟亞洲研究院實習生左格非在SOSP學生研究競賽(SRC)上向SIGOPS主席Robbert van Renesse教授展示研究成果,該成果獲得本科生組銀牌。

39篇主會論文采用single track形式滿滿地排在三天的13個session裡,每篇論文都有25分鐘的口頭報告和提問,涵蓋了尋找bug、可擴放性、網路計算、資源管理、作業系統核心、驗證、系統修復、隱私、儲存系統、安全、故障診斷、資料分析等多個領域。

下面我們將從讓系統更高效、更可靠兩個方面,與大家分享SOSP上的系統研究最新進展。


更高效的資料中心


SOSP:計算機系統研究的風向標

摩爾定律對CPU而言基本上終結了,但對GPU、FPGA、TPU等定製化硬體而言仍在繼續

如今的資料中心越來越像一個倉庫規模的大型計算機,而不再是傳統意義上鬆散的分散式系統。一方面,硬體的計算與互聯效能越來越高,例如網路的速度與PCIe匯流排、DRAM匯流排的速度已經相差不遠了,RDMA也可以把延遲從幾百微秒降到幾微秒;NVMe SSD的延遲在100微秒量級,比機械硬碟延遲低了兩個數量級,NVM(非易失性記憶體)更是把延遲進一步降低了兩個數量級;GPU、FPGA、TPU等加速裝置的能效在很多場景下比CPU高兩個數量級。然而傳統作業系統訪問外設、任務切換和多核同步的機制不能充分利用日新月異的硬體效能。

SOSP:計算機系統研究的風向標

可程式設計的資料中心硬體,微軟使用搭載了FPGA的可程式設計網路卡作為資料中心加速平面

另一方面,資料中心硬體的可程式設計性越來越強。例如可程式設計交換機和可程式設計網路卡使得網路除了轉發資料包以外還可以做快取、聚合和排程。CPU支援的硬體虛擬化、PCIe裝置支援的SR-IOV虛擬化、CPU支援的SGX安全容器和TSX事務記憶體,提供了很多軟體難以高效實現的隔離性,對多租戶的雲環境至關重要。RDMA/RoCE網路卡、GPU-Direct、NVMe Over Fabrics等技術使裝置間可以繞過CPU直接互聯。如何在系統設計中充分利用這些可程式設計性成為了系統研究領域新的挑戰。

分散式協調的效能瓶頸

本次SOSP上約有半數的論文致力於提高系統的效能。其中的一個常見效能瓶頸在於分散式協調,且節點數量越多瓶頸越嚴重。

分散式協調的第一個問題是多個節點(伺服器或者CPU核)負載不均衡,熱點節點的最壞情況延遲(tail latency)較高。一種解決方案是用集中分配取代分佈協調。在鍵值儲存(key-value store)系統中,NetCache用可程式設計交換機作為快取,實現了同一機櫃內不同伺服器間的負載均衡;KV-Direct用可程式設計網路卡作為快取,可以實現同一伺服器內不同CPU核間的負載均衡;另一種解決方案是重新分配任務。在網路處理系統中,ZygOS在IX基礎上構建(讓網路卡把任務分配到多個CPU核對應的不同佇列),為了負載均衡,空閒的CPU核從其他核的佇列裡“竊取”任務(work stealing),並利用核間中斷(IPI)降低響應包的處理延遲。

SOSP:計算機系統研究的風向標

Linux檔案系統的系統呼叫介面之間有很多共享記憶體衝突,ScaleFS消除了絕大部分衝突情況(圖片來源:Scaling a file system to many cores using an operation log, SOSP’17)

分散式協調的第二個問題是通訊佔用的頻寬和延遲較高。一種辦法是在語義上減少衝突,使各個節點互不干擾。在檔案系統裡,ScaleFS基於可交換的檔案系統API(sv6)來改進語義衝突較多的LinuxAPI,在記憶體裡構建了一個核間無衝突的檔案系統抽象,把各個核的檔案系統操作記錄到日誌裡,需要寫盤的時候再合併不同核的日誌;在數字貨幣系統中,為了高效實現互不信任的大量節點間的拜占庭共識,現有系統往往需要競爭“挖礦”來選出代表,而Algorand利用可驗證隨機函式(VRF),無需通訊和大量計算就可選出公認的代表;在匿名通訊系統中,Atom系統通過對使用者隨機分組,無需全網所有節點互相通訊,就能實現匿名廣播,並以很高概率發現不誠實的節點。另一種減少分散式協調中通訊開銷的方法是引入中心節點。Eris利用網路上天然的中心(可程式設計交換機)來充當“順序發號器”,用很低的開銷實現了嚴格按序廣播訊息,進而大大簡化分散式事務中的併發控制。為實現多核共享記憶體的併發控制,ffwd把往常用原子操作實現的“搶鎖”操作委託給一個CPU核來做協調,實現了更高的吞吐量。

系統介面抽象

系統領域有句名言,”電腦科學的任何問題都可以通過增加一箇中間層來解決”。過於底層的介面會導致上層應用程式設計複雜,併發訪問時還面臨一致性問題。例如,LITE和KV-Direct兩篇論文都指出,RDMA的抽象並不完全適合資料中心應用。首先,RDMA把緩衝區管理等底層資訊暴露給使用者,使得RDMA程式設計比TCP socket複雜很多,而且在連線較多的情況下,記憶體地址虛實對映表很容易導致網路卡快取溢位。為此,LITE提出了一套更靈活易用的API,並把虛實對映的工作從網路卡轉移到CPU。其次,對於需要多次記憶體訪問才能完成一次操作的資料結構,為了保證資料結構操作的原子性,多個客戶端的併發寫操作有較高的同步開銷。為此KV-Direct把RDMA記憶體訪問語義擴充到了鍵值操作的更高層語義,在伺服器端的可程式設計網路卡中實現了併發原子操作的亂序執行。

SOSP:計算機系統研究的風向標

百度提出的USS,把socket語義翻譯到RDMA。學術界也有多個類似工作。

然而抽象的層次不是越多越好。抽象層次過多時,兩個中間層可能做了重複的事情,反而不能充分利用底層硬體的效能。例如,在虛擬化環境中,每個虛擬機器往往只做一件小事,此時虛擬機器作業系統的排程、資源管理等抽象就顯得多餘。

Unikernel的設計應運而生,把應用程式、執行庫和核心中的驅動程式編譯到一起,成為一個不分使用者態和核心態的輕量級虛擬機器;對於系統呼叫較為複雜或者需要多程式的應用,也可以用Tinyx為應用定製精簡的Linux“發行版”,仍然使用Linux核心,但啟動速度快了很多。再如,SSD上的鍵值儲存可能組織成日誌樹(log-structured tree)的形式,而SSD底層的FTL也是類似的結構,NVMKV就把兩者合併,降低了寫操作的開銷。

SOSP:計算機系統研究的風向標

為應用定製的Unikernel (右) 與Linux (左) 的比較(圖片來源:Unikernels: The Rise of the Virtual Library Operating System, ACMQueue, Jan. 2014)

經典的抽象背後可能藏著很多不必要的功能和不適合現代硬體架構的設計。眾所周知,新生的使用者態網路協議棧和檔案系統比Linux核心的實現高效得多。ScaleFS及其研究組之前的工作表明,Linux的系統呼叫介面存在很多不利於多核擴放的設計。一篇在64 KB的嵌入式計算機(如Yubikey這樣的USB令牌)上用Rust實現多程式、隔離和記憶體共享的論文說明現代作業系統的核心機制並不複雜。NVMM(非易失性記憶體)的低訪問延遲意味著應用需要mmap直接訪問NVMM(無需經典檔案系統中的實體記憶體快取),然而持久化儲存的一致性又要求有快照和糾錯功能,NOVA-Fortis檔案系統就是為此設計。在論文Strata: A Cross Media File System中,作者也指出,傳統檔案系統把一個小的寫操作放大成一整塊的寫操作,本是為機械硬碟和SSD設計的,但是對能高效執行小的隨機寫的NVM就浪費了。

即使CPU提供的抽象缺少某些功能,系統設計者也往往能夠用軟體來實現,而無需等待千呼萬喚始出來的下一代硬體。例如,ARM v8.0不支援巢狀虛擬化,NEVE系統就採用半虛擬化(para-virtualization)的方法,修改內層虛擬機器(guest hypervisor)的軟體,模擬呼叫外層虛擬機器的陷門(trap)。再如,Intel SGX不支援動態分配記憶體,也存在作業系統通過缺頁異常來偵測受保護程式碼行為的安全漏洞,Komodo就用經過驗證的軟體取代CPU硬體實現的特權指令,實現更快和更靈活的演進。因此,高效能系統不意味著把軟體裡儘可能多的功能放進硬體,而是找到軟硬體之間合理的邊界和介面。

“萬金油”系統

SOSP:計算機系統研究的風向標

傳統流式處理與資料庫系統(左)與Wukong+S(右)的比較  (圖片來源:Stateful Stream Querying over Fast-evolving Linked Data, SOSP’17)

除了解決現有系統的瓶頸,另一個系統研究的方向是構建多種應用場景下都能高效工作的系統。例如,流處理系統往往假定流計算函式是持續執行且無狀態的,而資料庫系統假定資料在查詢執行過程中是不變的,這就很難在一個系統裡同時做持續執行的流式查詢和一次性的簡單快照查詢。Wukong+S系統在去年OSDI的Wukong系統基礎上更進一步,把不隨時間改變的狀態和隨時間改變的狀態分開儲存,使流式和一次性查詢都可以高效完成。類似地,在OLAP與OLTP共存的資料庫系統中,如果OLAP查詢在一個快照上執行,獲得的統計資訊是陳舊的。獲得SOSP學生研究競賽研究生組金牌的Xylem系統把OLAP查詢看成一個檢視,OLTP修改資料時增量更新檢視,這樣OLAP的結果就能反映資料庫的最新狀態。再如,流處理系統延遲低但恢復時間長,批處理系統能快速恢復但延遲高。Drizzle系統把資料處理週期和故障恢復週期解耦合,實現了低延遲、快速恢復的流處理。

更可靠的系統

SOSP:計算機系統研究的風向標

SOSP開幕式上,會議主席對OSDI 2018關鍵詞的建議

在生產環境中,相比效能,可靠性往往是更重要的考慮因素。今年SOSP開幕式上,會議主席列舉了若干希望在明年OSDI上看到的詞,其中包括了enclave、specification、crash、bug、verification和testing。提高軟體可靠性有幾個途徑:找bug、形式化驗證、故障診斷與恢復、虛擬化與隔離。

SOSP:計算機系統研究的風向標

最佳論文DeepXplore自動生成的測試用例,第一行是原圖,第二行改變光照條件;第三行是另一組原圖,第四行增加干擾方塊(圖片來源:DeepXplore: Automated Whitebox Testing of Deep Learning Systems, SOSP’17)

今年SOSP的兩篇最佳論文都在可靠性領域,一篇提出了深度神經網路的自動白盒測試問題,一篇提出了高效Web伺服器審計問題,兩篇論文提出的問題新穎且重要,並給出了漂亮的解法。DeepXplore指出,之前深度對抗網路生成的測試用例既不現實也不全面。類比軟體測試程式碼覆蓋率,提出了神經網路測試覆蓋率的概念,一個神經網路輸入如果使得某個神經元處於啟用狀態,就認為覆蓋到了這個神經元。DeepXplore還提出了一種優化方法來生成測試用例最大化神經元覆蓋率,在自動駕駛、惡意軟體識別等神經網路中發現了很多被錯誤識別的邊界情況。

另一篇最佳論文旨在通過記錄Web伺服器的執行過程,發現異常的Web伺服器行為(如程式被篡改,或不可信的服務提供商)。Web伺服器對共享物件的訪問和網路互動都被記錄下來,這樣一個請求的處理過程就是純函式式的。用類似符號執行的方法把多個請求的處理過程合併起來推導,使得驗證器的時間開銷比重複執行每個請求大大降低。微軟的另一篇論文CrystalNet也致力於高效模擬問題。傳統網路模擬器在模擬大規模網路時速度緩慢,且很難模擬控制平面的軟體,然而大多數網路故障的原因在於控制平面而非資料平面。為此微軟使用虛擬機器或容器來模擬交換機韌體和網路控制器,模擬控制平面的行為,並模擬廣域網上其他運營商的行為,使得資料中心規模的網路模擬成為可能。

SOSP:計算機系統研究的風向標

CPR系統自動修復錯誤的網路配置(圖片來源:Automatically Repairing Network Control Planes Using an Abstract Representation, SOSP’17)

當系統出現故障時,需要做兩件事情。一方面,應當能夠自動修復到一個可用的狀態,保證服務的可用性。微軟研究院參與的CPR系統能夠在網路控制平面發生故障時自動調整路由來滿足一些事先指定的網路可達性約束。MittOS則是當佇列過長、有超過最高允許延遲的風險時主動拒絕請求,讓應用去其他的副本(replica)處理。另一方面,應該留下足夠的日誌,以便運維人員詳細調查、徹底解決。由於系統狀態的複雜性和執行過程中的不確定性,即使有了日誌,復現bug也是眾所周知的難題。Pensieve系統模仿人類分析bug的方法,使用靜態分析的方法從最可能的幾個錯誤發生位置開始,根據控制流和資料流倒推,跳過跟錯誤很可能無關的大部分程式碼,直到外部輸入(API呼叫),由此生成測試用例。

自動生成測試用例找bug固然不錯,但經過形式化驗證的系統才能保證不存在特定型別的bug。然而形式化驗證往往需要比開發程式碼多一個數量級以上的人力來寫證明,大大限制了其在工業界的應用。HyperKernel通過對核心程式設計進行限制來實現自動化證明,其中最重要的限制是不能有無限的迴圈和遞迴,這也是P4和ClickNP這兩個給交換機和網路卡程式設計的高階語言的要求。一些系統呼叫介面需要修改,把不定次數迴圈轉移到使用者態。此時,核心的控制和資料流圖就是有向無環圖,對HyperKernel而言可以遍歷所有執行路徑來自動驗證程式設計師指定的規約,對硬體加速而言也可以對映到交換機查詢表或FPGA邏輯電路。

小結

SOSP:計算機系統研究的風向標

中國科學技術大學師生在SOSP的合影,其中包括微軟亞洲研究院系統組發表的KV-Direct共同第一作者李博傑(後排右三)、阮震元(後排右一),以及來參加SOSP學生研究競賽的微軟亞洲研究院系統組實習生陸元偉(前排右二)、崔天一(前排左二)、左格非(後排左七)。

首次在中國召開的第26屆SOSP會議吸引了眾多平日難得一見的學術界大佬,也給了很多中國師生一次體驗頂級學術會議的機會。重要的問題、創新的設計和紮實的實現是能在頂級系統會議上發表的三個要素。當然,論文發表只是一小步,一個系統要產生影響力,還是需要找到真實的應用場景,這也是筆者未來努力的方向。點選閱讀原文,瞭解更多大會論文。

原文連結:https://mp.weixin.qq.com/s/J-rebW9ceA_IuR0818sNvg

相關文章