文章目录
-
- 一.工具集安装
- 1.GCC
- 2.pip3安装ninja
- 3.安装numa依赖
- 4.在linux中使用大页面
- 5.内核版本>=3.16
- 6.glibc>=2.7
- 二.安装DPDK及源码
- 三.在系统范围内编译和安装DPDK
- 1.dpdk配置
- 四.Linux驱动程序
- 1.音频输出
- 3.UIO
- 4.与内核模块之间的网络端口绑定和解绑定
- 4.1问题:绑定失败
- 4.2问题:dpdk是否支持该网卡
- 4.3安装igb_uio驱动
- 5.最后以成功的截图纪念一下我为之努力的两天
- 五.第一个实例helloworld
- 1.make
- 2.执行./helloworld
- 3.结果
- 1.问题1:make时找不到pkg_config
- 2.问题2:执行时出现如下错误
- 3.问题3:EAL: Error enabling interrupts for fd 19 (输入/输出错误)
一.工具集安装
1.GCC
sudo apt install build-essential
// 检验gcc版本
gcc --version
gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2.pip3安装ninja
pip3 install meson ninja
3.安装numa依赖
apt-get install libnuma-dev
4.在linux中使用大页面
1.查看宿主机中内存页的大小
通常情况下,内存页大小为4KB。
getconf PAGESIZE
4096
2.查看宿主机中透明大页是否开启
cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
3.开启透明大页
echo always > /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
4.查看宿主机中HugePage的大小
cat /proc/meminfo |grep -i HugePages
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total: Hugepage的页面数量
HugePages_Free: 剩余的页面数量
HugePages_Rsvd: 被分配预留但是还没有使用的page数目
HugePages_Surp:HugePages_Total减去/proc/sys/vm/nr_hugepages中的值
5.挂载大页
内存只有被挂载了之后,才能被应用程序使用。到刚创建的huge目录下,挂载hugetlbfs文件系统。
sudo mount -t hugetlbfs nodev /mnt/huge
mount |tail -1
//nodev on /mnt/huge type hugetlbfs (rw,relatime,pagesize=2M)
6.使用sysctl(sysctl命令用于设置和显示在/proc/sys目录中的内核参数)命令设置vm.nr_hugepages,将大页个数设置为200(200 * 2M=400M,需要确保宿主机有足够可以分配的内存)。
sudo sysctl vm.nr_hugepages=200
//vm.nr_hugepages = 200
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 200
HugePages_Free: 200
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
7.大页内存挂载
mkdir /mnt/huge
sudo mount -t hugetlbfs pagesize=1GB /mnt/huge
通过在/etc/fstab文件中添加以下行,可以使挂载点在重新引导期间永久存在:
sudo vim /etc/fstab
//大页大小为1GB
nodev /mnt/huge hugetlbfs pagesize=1GB 0 0
//大页大小为2MB
nodev /mnt