零拷貝

零拷貝(zero-copy)是實現主機或路由器等設備高速網路接口的主要技術。零拷貝技術通過減少或消除關鍵通信路徑影響速率的操作,降低數據傳輸的作業系統開銷和協定處理開銷,從而有效提高通信性能,實現高速數據傳輸。

技術簡介

零拷貝技術可以減少數據拷貝和共享匯流排操作的次數,消除通信數據在存儲器之間不必要的中間拷貝過程,有效地提高通信效率,是設計高速接口通道、實現高速伺服器和路由器的關鍵技術之一。數據拷貝受制於傳統的作業系統或通信協定,限制了通信性能。採用零拷貝技術,通過減少數據拷貝次數,簡化協定處理的層次,在套用和網路間提供更快的數據通路,可以有效地降低通信延遲,增加網路吞吐率。

研究方面

零拷貝技術的研究主要針對以下兩個方面:(1) 創建有效的用戶級通信接口,即應用程式直接將數據從通信接口傳送出去或接收進來,消除系統核心中不必要的拷貝過程;(2) 路由器的入端到出端的直接數據傳輸,即接收的報文只經過一次存儲器緩衝,而緩衝佇列中的報文經過必要的控制信息處理後,直接傳送到輸出連線埠傳送出去,實現報文快速轉發。

一般來說, 認為從網卡到用戶空間的系統調用會經歷兩次或者兩次半的copy過程.

zero copy就是要消除這些copy過程.

從網卡的ring-buffer到software packets的copy可以通過直接DMA數據到software packet完成.

所謂半次copy可以有hardware checksum offload來解決.

最後的核心空間到用戶空間的copy還存在問題, 最近提出的比較好的方案是IOAT2技術, 可以直接做Host memeory對Host memroy的DMA.

也看到有人使用把DMA的buffer直接map到用戶空間的解決方案, 但這個對用戶空間的程式不是透明的, 不具備普遍意義.

相關詞條

熱門詞條

聯絡我們