如何評價Arrakis?

OSDI 2014 best paper

Arrakis: The Operating System is the Control Plane

Abstract:

Recent device hardware trends enable a new approach to the design of network server operating systems. In a traditional operating system, the kernel mediates access to device hardware by server applications, to enforce process isolation as well as network and disk security.We have designed and implemented a new operating system, Arrakis, that splits the traditional role of the kernel in two. Applications have direct access to virtualized I/O devices, allowing most I/O operations to skip the kernel entirely, while the kernel is re-engineered to provide network and disk protection without kernel mediation of every operation.We describe the hardware and software changes needed to take advantage of this new abstraction, and we illustrate its power by showing improvements of 2-5 in latency and 9 in throughput for a popular persistent NoSQL store relative to a well-tuned Linux implementation.


最近因為一些事情正好看了一下相關的topic,說說我自己的理解。

------------------------------------------------------------------------------------------

在高速網路方面,控制平面(control plane)和數據平面(data plane)分離其實是很自然的事,以linux內核為例,最初linux內核協議棧的設計存在一些問題,如:

1、通常控制的功能是通過系統調用來實現的,將數據平面和控制平面混在一起導致一些不必要的系統調用開銷。

2、協議棧設計的複雜性以及內存分配、userland與kernelspace之間的內存拷貝等問題。

3、並沒有考慮到並發等問題,無法很好地利用網卡多隊列以及處理器多核心。

4、其他問題,如中斷平衡、緩存失效、內存頁過小

盜個圖:

------------------------------------------------------------------------------------------

鑒於存在以上問題,那麼怎麼解決?

1、要讓數據流的快,自然地要減少控制層對其造成的延遲,把一些kernel提供的控制層功能提取出來,只在必要的時候比如配置、初始化等起作用,讓data plane專心傳輸數據。

在這一塊有除了Arrakis,其實還有一個叫IX的,是和Arrakis一塊在OSDI 14上獲得best award paper。

Arrakis是使用內核本身提供的控制功能,而IX是在userland抽象一層來保證數據通道不會對內核空間造成問題。

至於data plane怎麼搭建?可以使用vfio與uio等手段,關於這一塊可以看下linux 內核文檔Linux/Documentation/vfio.txt,簡單理解,就是讓userland能DMA,這是從userland到網卡能硬體設備,跟磁碟與主存的DMA還是有點差別的:).

2、內存分配與拷貝等的開銷

內存分配的問題,可以採取內存池等手段,拷貝的問題使用上面uio等手段直接映射到userland來bypass kernel實現零拷貝。

3、利用多隊列多核心

這塊通常是kernel space一個poll線程對應userland一個consume線程,並設置CPU親和性

4、中斷平衡、緩存失效等問題

中斷平衡可以設置相應的中斷策略

緩存失效的問題:設置中斷策略以及CPU親和性,還有可以使用linux內核提供的hugetlb(巨頁)的功能,減少Translation Lookaside Buffer的失效。

5、其他還有如用戶態協議棧 mTCP等的解決方案

---------------------------------------------------------------------------------------

最後,以上只是簡單的了解,具體可以參考下面的一些關鍵詞,都能google到,就不貼鏈接了:

Arrakis、IX、mTCP、netmap、DPDK、pfring...

也期待大家補充相關概念:)


Exokernel?看介紹有些類似。


本來想聽, 結果聽了兩分鐘不知道為啥這人說話聲音變得巨尖銳, 自帶噪音... 就停了... (逃


推薦閱讀:

將驅動程序運行在ring1層上會提升系統本身的穩定性嗎?
操作系統內核具體實現中比較巧妙的思想有哪些?
從程序員的角度看,Windows 有哪些先進的地方?
windows 32位 為什麼實際可用最大內存只有3G?

TAG:操作系統 | 操作系統內核 | networking |