VFIO
- VFIO是一個可以安全地把設備I/O、中斷、DMA等暴露到用戶空間(userspace),從而可以在用戶空間完成設備驅動的框架。用戶空間直接設備訪問,虛擬機設備分配可以獲得更高的IO性能。
- 依賴於IOMMU. vfio-pci.
- 相比於UIO,VFIO更為強健和安全
要求
- 本機使用版本為ubuntu18.04
內核版本
- Linix kernel version>=3.6.0
$ uname -r
支持VT-x、VT-d
- 需要主板、內核、BIOS支持VT-x、VT-d。
主板支持Intel® VT-x、VT-d。
- 顯示是否支持VT-d或VT-d是否成功打開
$ dmesg | grep -e DMAR -e IOMMU
- 若出現:IOMMU not found 或 不知如何在BIOS中enable00 VX-d,可參考博客:http://www.cnblogs.com/vancasola/p/9360837.html
內核支持Intel® VT-x、VT-d。
- 檢查 VT-d 在kernel中是否enabled, 運行:
$ cat /proc/cmdline | grep iommu=pt
$ cat /proc/cmdline | grep intel_iommu=on
如果沒有顯示,需要進行如下配置:
- 此步修改系統文件,容易誤操作導致系統錯誤,修改前注意備份!
- 進入配置文件:
nano /etc/default/grub
- 添加配置信息:添加iommu=pt intel_iommu=on到文件中的GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"行
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"//原文件的配置信息
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt intel_iommu=on"//添加配置信息
- 更新配置信息並重啟
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot
加載模塊以及綁定網卡
腳本配置
- 使用dpdk/usertools/dpdk-setup.sh配置
- Insert VFIO module
- 配置hugepages
- Bind NIC to VFIO
命令配置
- 配置大頁
- 插入模塊以及綁定NIC
$ modprobe vfio-pci
$ /usr/bin/chmod a+x /dev/vfio
$ /usr/bin/chmod 0666 /dev/vfio/*
$ $DPDK_DIR/usertools/dpdk-devbind.py --bind=vfio-pci eth1
$ $DPDK_DIR/usertools/dpdk-devbind.py --status