官档翻译-安装dpdk前的准备工作

翻译地址:http://doc.dpdk.org/guides/linux_gsg/sys_reqs.html

编译DPDK所需系统要求

1.GUN make
2.coreutils: cmp,sed,grep,archetc
3.gcc:版本 4.9+
4.需要安装kernel - devel.x86_64或者 kernel - devel.ppc64
5.针对32和64位的系统需要考虑不同的安装包

  • glibc.i686, libgcc.i686, libstdc++.i686 and glibc-devel.i686 for Intel i686/x86_64;
  • glibc.ppc64, libgcc.ppc64, libstdc++.ppc64 and glibc-devel.ppc64 for IBM ppc_64;
    6.libnuma-devel 处理NUMA的库,(Non Uniform Memory Access)
    7.python2.7+或者python3.2+。用于处理dpdk包中的各种辅助脚本

可选工具

1.Intel C++ 编译器(icc)。针对一些额外需要安装的包可能需要icc库来进行编译。安装该编译器之前可以查看icc的安装文档来获取更多帮助。
2.针对powerlinux,可能需要安装IBM Advance ToolChain。这是一组开源工具,允许客户在IBM最新的POWER硬件上使用runtime时间库(机器需要安装了linux操作系统)
3.libpcap头和libraries(libpcap-devel)包。为的是可以编译加载libpcap-based pool-mod。这个驱动在初始化的时候默认关闭的,可以通过编译安装来使用该驱动。
4.libarchive头和对应的库,该工具可以适用于一些单元测试,使用tar来获取单元测试中的资源。

系统软件要求

1.Kernel版本 >=3.2

DPDK还在设计开发的时候,基于当时可用的kernel稳定版本。你的操作系统kernel版本可以使用如下命令检查:

uname -r

2.glibc >=2.7 (针对有关cpuset的特性)

glibc的版本检查可以基于ldd --version来查看,这种方式不一定正确,可以通过strings /lib64/libc.so.6 | grep GLIBC命令查看
这里如果要升级的话可以使用源码升级

内核配置要求

在Fedora OS操作系统和其他大部分发行版的linux操作系统,例如Ubuntu或者redhat。这些发行版的操作系统内核配置都可以支持DPDK运行大部分的测试用例。

针对其他内核build,应该为dpdk开启的选项包括:
HUGETLBFS

支持PROC_PAGE_MONITOR

扫描二维码关注公众号,回复: 4590043 查看本文章

如果需要开启HPET,则相应的需要开启HPET和HPET_MMAP配置。

使用大页内存

Hugepage支持大内存池,内存用于处理数据缓冲区。(HUGETLBFS选项在运行内核时必须开启)。使用大页内存分配技术,只需要分配少量的大页给DPDK,性能便会大大提高,因此会使Translation lookaside Buffers缓冲区交换报文减少。(TLBs,高速交换缓存区)用于减少虚拟页地址寻址物理页地址的时间。没有大页之前,TLB会在4k页上下交换时出现未命中的情况,这样会导致信性能降低。

保留大页内存给DPDK使用

大页内存的分配应该在启动时,或者在系统启动之后尽快从物理内存中取出内存保留。在开机启动时保留大页内存,通过控制内核的命令将参数传递给linux内核。大页内存大大小默认为2M,如果设置2M的大页内存,只需要将大页内存的参数传递给内核。例如:需要保留1024页2M大小的大页内存。

hugepages=1024

针对其他大小的大页,例如设置1G大小的大页,大页的规格也需要被特殊注明,当然也可以设置系统默认的大页内存大小。例如,为了保留4G大小的大页内存,每个大页的内存大小设置为1G,则传入内核的参数设置应该为:

default_hugepagesz=1G hugepagesz=1G hugepages=4

注意:选取为单颗CPU设置的大页内存的大小取决于CPU支持的标识符,这也就取决于CPU的架构。如果pse标识符存在,则支持2M的大页内存,如果pdpe 1gb标识符存在,则支持1G大页内存。在IBM Power架构下,支持的大页内存的大小是16MB和16GB。

注意:针对64位的应用,如果平台能够支持1GB大小的大页内存,建议使用1GB的大页内存。

在双单元NUMA系统中,被分配的大页内存在开机的时候会平均的分配给每一侧的numa节点上。假设每个numa节点都能足够分配到应有的内存。
http://doc.dpdk.org/guides/linux_gsg/sys_reqs.html

可选项:
针对2MB的大页内存,在系统已经启动之后仍然可以分配大页内存。使用echo命令将你所需要的大页写入到大页内存文件中,该文件在/sys/devices文件夹中。针对单CPU节点,可以使用如下的命令来加入大页内存(以写入1024页为一个实验)
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

针对一个NUMA机器,需要单独为每个NUMA节点使用命令下时的分配大页。
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

注意:
针对1G的大页内存分配,如果在系统启动之后是不能通过命令的形式来动态的分配该大页内存。

在IBM POWER的系统中,设置nr_overcommit_hugepages的值应该与nr_hugepages的值一样。例如,如果需要将大页的数设置为128,则需要使用如下的命令:
echo 128 > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_hugepages
echo 128 > /sys/kernel/mm/hugepages/hugepages-16384kB/nr_overcommit_hugepages

在DPDK中使用大页内存

一旦大页内存被分配,要让DPDK使用分配出来的大页内存则需要执行以下命令:
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

如果要是挂载点在重启之后仍然可用则需要将挂载点写入到fstab文件中。
nodev /mnt/huge hugetlbfs defaults 0 0

针对1GB大页,大页的大小最好作为挂载点名写入到配置文件中。
nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0

猜你喜欢

转载自blog.csdn.net/minxihou/article/details/85158650