標籤:pcie ntb dma
多功能PCIE交換器之六:基於NTB誇節點的讀寫最佳化
1、基於NTB跨節點讀寫的應用的特點
NTB常常用在要求高效能和高可靠性的場合,用來實現跨節點資料的傳輸。比如用作虛擬網卡、跨節點資料同步通道等,這些場合都期望充分發揮NTB基於PCIE的高速傳輸特性,最大限度地提高系統效能。
2、基於NTB跨節點讀寫的兩種實現方式
實現地址轉換、建立NTB通道之後,有兩種實現NTB跨節點傳輸資料的方式:
基於CPU實現資料轉送
基於NTBDMA實現資料轉送
前者依賴CPU去搬運資料,會佔用CPU周期,但非常適合多線程應用;後者依賴獨立的DMA硬體搬運資料,幾乎不消耗CPU,但在多線程環境需要額外考慮對DMA硬體的並發訪問。而在速度方面:在不利用CPU並發處理的情況下,後者一般比前者快很多。比如在筆者的系統上,用CPU搬運資料大概只有100MB/s的頻寬,而用DMA的頻寬接近1000MB/s,這是在還沒有對DMA/PCIE進行專門最佳化設定的情況下測得的。
3、兩種實現方式的共同特點
不管是用CPU還是DMA跨節點搬運資料,底層都是基於PCIE事務實現。從本地往遠端節點寫資料,底層依賴於PCIEpost write 事務;從遠端節點往本地節點寫資料,底層是由PCIEnon-post read實現。根據PCIEpost事務和non-post事務的特性可以知道,post操作一般都比non-post操作速度快。在筆者的系統上的測試資料應證了這一理論:CPU往對方節點寫比CPU從對方節點讀快,DMA往對方節點寫也比DMA從對方節點讀快。
4、總結
不管是用哪種方式實現跨節點傳輸,需要透過不同的PCIE應用看到底層PCIE事務傳輸和處理的本質,這樣才能從整體上理解不同的應用表現出的效能差異,從而根據需要進行取捨、最佳化。
本文出自 “儲存之廚” 部落格,請務必保留此出處http://xiamachao.blog.51cto.com/10580956/1882433
多功能PCIE交換器之六:基於NTB誇節點的讀寫