1 进入到 spkd/dpdk 的根目录中
2 执行 sudo ./usertools/dpdk-hugepages.py
3 再执行 hello_world 程序 可以看到结果
TELEMETRY: No legacy callbacks, legacy socket not created
Initializing NVMe Controllers
Attaching to 0000:00:0e.0
Attached to 0000:00:0e.0
Namespace ID: 1 size: 1GB
Initialization complete.
INFO: using host memory buffer for IO
Hello world!
如果还是不行,就需要配置 hugepage 大页内存
我的系统是ubuntu 18.04,需要安装以下库
sudo apt-get install libhugetlbfs libhugetlbfs-dev
打开grub,添加 GRUB_CMDLINE_LINUX 参数
sudo vim /etc/default/grub
大页内存每页大小为2M,一共设置1024页面,即2GB, 如果内存多的,CPU又支持1GB的大页内存,可以每页设置1GB的大页内存
GRUB_CMDLINE_LINUX="transparent_hugepage=never default_hugepagesz=2M hugepagesz=2M hugepages=1024 "
重新生成grub.cfg
sudo grub-mkconfig -o /boot/grub/grub.cfg
reboot
重启后查看
cat /proc/meminfo |grep -i Huge
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 1021
HugePages_Rsvd: 61
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 2097152 kB
大页内存设置完成,需要挂载
sudo mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
可以修改 fstab文件,每次启动自动挂载 增加一行信息
sudo vim /etc/fstab
nodev /mnt/huge hugetlbfs defaults 0 0
reboot
然后再次测试SPDK hello world, 可能会出现以下错误
no NVMe controllers found
这时只要从新运行 spdk的 setup.sh就可以了
sudo ./script/setup.sh
然后再次测试 hello_world
TELEMETRY: No legacy callbacks, legacy socket not created
Initializing NVMe Controllers
Attaching to 0000:00:0e.0
Attached to 0000:00:0e.0
Namespace ID: 1 size: 1GB
Initialization complete.
INFO: using host memory buffer for IO
Hello world!