DPDK
DPDK網(wǎng)絡層:
硬件中斷->放棄中斷流程浪蹂;
用戶層通過設備映射取包->進入用戶層協(xié)議棧->邏輯層->業(yè)務層犁功;
核心技術:
1)將協(xié)議棧上移到用戶態(tài),利用UIO技術直接將設備數(shù)據(jù)映射拷貝到用戶態(tài)
2)利用大頁技術读规,降低TLB cache miss衬横,提高TLB訪問命中率
3)通過CPU親和性,綁定網(wǎng)卡和線程到固定的core膳犹,減少cpu任務切換
4)通過無鎖隊列恬吕,減少資源的競爭
優(yōu)勢:
1)減少中斷次數(shù);
2)減少內存拷貝次數(shù)
3)繞過linux的協(xié)議棧须床,用戶獲得協(xié)議棧的控制權铐料,能夠定制化協(xié)議棧以降低復雜度;
劣勢:
1)內核棧轉移至用戶層增加了開發(fā)成本
2)低負荷服務器不實用,會造成cpu空轉
RDMA
網(wǎng)卡硬件收發(fā)包并進行協(xié)議棧封裝/解析钠惩,然后將數(shù)據(jù)存放到指定內存地址柒凉,而不需要CPU干預。
核心技術:
協(xié)議棧硬件offload
優(yōu)勢:
1)協(xié)議棧offload妻柒,解放cpu
2)減少了中斷和內存拷貝扛拨,降低時延
3)高帶寬
劣勢:
1)特定網(wǎng)卡才支持,成本開銷相對較大举塔;
2)RDMA提供了完全不同于傳統(tǒng)網(wǎng)絡編程的API绑警,一般需要對現(xiàn)有APP進行改造,引入額外開發(fā)成本
總結
相同點:
1)兩者均為kernel bypass技術央渣,可以減少中斷次數(shù)计盒,消除內核態(tài)到用戶態(tài)的內存拷貝;
相異點:
1)DPDK是將協(xié)議棧上移到用戶態(tài)芽丹,而RDMA是將協(xié)議棧下沉到網(wǎng)卡硬件北启,DPDK仍然會消耗CPU資源;
2)DPDK的并發(fā)度取決于CPU核數(shù)拔第,而RDMA的收包速率完全取決于網(wǎng)卡的硬件轉發(fā)能力
3)DPDK在低負荷場景下會造成CPU的無謂空轉咕村,RDMA不存在此問題
4)DPDK用戶可獲得協(xié)議棧的控制權,可自主定制協(xié)議棧蚊俺;RDMA則無法定制協(xié)議棧