4
在Wikipedia's introduction to splice,我發現:爲什麼在沒有DMA的情況下使用套接字拼接不能提高性能?
當使用帶插座接頭(),網絡控制器(NIC)必須支持 DMA。
當NIC不支持DMA時,splice()將不會提供任何 性能改進。其原因是 管道的每個頁面將只填滿幀大小(每頁可用4096個 字節的1460個字節)。
據我瞭解,接頭提高性能,因爲:
- 有背景不太切換
- 它最大限度地減少副本的(至少兩個DMA副本)
如果數量網卡不支持DMA副本,我們使用CPU副本。這比正常的拷貝還要好,因爲它們必須進入用戶空間。
所以,我不明白爲什麼維基百科說沒有DMA支持的網卡沒有性能改進。