最近從老闆那裡拿到乙個將intel dpdk移植到龍芯平台的任務,上網查了下資料關於它的資料真是少之又少,看來是個大坑啊,於是就自己摸索著來吧,這裡感謝下朝陽_tony,他那裡提供了許多許多關於dpdk詳實的資料和心得。
首先由於手頭沒有多網絡卡的linux x86的機器,所以很自然的想到了使用虛擬機器安裝dpdk。我給虛擬機器分配了4gb的記憶體,4個處理器核,3塊虛擬網絡卡,每個網絡卡都採用nat模式。我這裡用vmware直接新增的網絡卡就是intel的82545em晶元,網路上有人說會新增amd晶元,這裡我比較幸運。如果手動新增intel網絡卡方法是:
先找到虛擬機器的配置檔案,字尾為.vmx,在後面新增兩行:
ethernet2.virtualdev=」e1000」ethernet2.present=true
git clone設定環境變數;
載入uio模組,並繫結網絡卡到uio;
分配巨頁記憶體;
執行應用程式;
#! /bin/bash
make
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo
1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kb/nr_hugepages
modprobe uio
insmod build/kmod/igb_uio.ko
ifconfig eth1 down
ifconfig eth2 down
./tools/dpdk_nic_bind.py --bind=igb_uio 02:02.0
./tools/dpdk_nic_bind.py --bind=igb_uio 02:03.0
這一切都執行完後,就可以執行一些dpdk自帶的應用程式了,但是我這個dpdk版本如果直接執行testpmd會報input/output error,具體錯誤的已經找不著了,經過一番搜尋發現是需要打乙個補丁:
index d1ca26e..c46a00f 100644
@@ -505,14 +505,11 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
}/* fall back to intx */
case rte_intr_mode_legacy:
-if (pci_intx_mask_supported(dev))
-dev_notice(&dev->dev, "pci intx mask not supported\n");
+ dev_dbg(&dev->dev, "using intx");
+ udev->info.irq_flags = irqf_shared;
+ udev->info.irq = dev->irq;
+ udev->mode = rte_intr_mode_legacy;
+ break;
/* fall back to no irq */
case rte_intr_mode_none:
udev->mode = rte_intr_mode_none;
然後再執行testpmd,就可以正常的得到結果了,結果如下:
linux在虛擬機上安裝
file new virtual machine next e 開發工具 linux linuxrh4 as4 1.iso next 隨便填 next next 關閉執行 edit virtual machine settings 將用不上的刪除 cd ide floppy 軟盤 usb contr...
DPDK pktgen在虛擬機上安裝
正文 環境 虛擬機器vmware12 pro dpdk 16.04 pktgen 3.3.0 準備工作 1.本人之前已經編譯安裝過dpdk,基本環境具備 步驟 ps 以下操作在root下執行。有些操作需要root許可權,便於操作所以建議直接切換到root 2.開啟命令列,進入dpdk目錄,執行.to...
在虛擬機上安裝RabbitMQ
4.使用者角色 5.使用者許可權 使用vmware安裝映象 設定系統為可連線網際網路 我使用介面卡橋接模式 可選 設定允許root遠端登入sudo vim etc ssh sshd config,找到permitrootlogin without password 修改為permitrootlogi...