设置大页内存
查看CPU支持的巨页类型
cat /proc/cpuinfo | grep flags
# pse: 2M巨页
# pse36: 支持36位,即4M巨页
# page1gb: 支持1GB巨页
修改内核参数
sudo vim /etc/default/grub
在GRUB_CMDLINE_LINUX后追加如下内容
default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2
xxx@ubuntu:~$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US default_hugepages=1G hugepagesz=2M hugepages=1024 isolcpus=0-2"
重新生成引导配置
update-gurb
# 或者执行下面的命令
# sudo grub-mkconfig -o /boot/grub/grub.cfg
#DPDK 编译安装
DPDK在20版本以后需要使用meson和ninja编译安装。
(1)安装pip3环境
yum install python3 python3-pip
pip3 install --upgrade pip
(2) 安装meson
pip3 install meson
(3)安装ninja
pip3 install ninja
编译安装
tar xzf dpdk-stable-21.11.2-new.tar.gz
cd dpdk-stable-21.11.2/
meson build
ninja -C build
ninja -C build install
编译加载igb_uio
cd kernel/linux/igb_uio
make
sudo modprobe uio
sudo insmod igb_uio.ko
关闭要绑定的网卡
sudo ifconfig ens160 down
查看DPDK绑定状态
./dpdk-devbind.py -s
绑定DPDK网卡
./usertools/dpdk-devbind.py -b igb_uio 0000:03:00.0
解绑DPDK网卡
./dpdk-devbind.py -u 0000:03:00.0
扩展
NUMA
NUMA(Non-Uniform Memory Access,非一致性内存访问)和SMP(Symmetric Multi- Processor,对称多处理器系统)是两种不同的CPU硬
件体系架构。
SMP的主要特征是共享,所有的CPU共享使用全部资源,例如内存、总线和I/O,多个CPU对称工作,彼此之间没有主次之分,平等地访问共享
的资源,这样势必引入资源的竞争问题,从而导致它的扩展内力非常有限;NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,
在系统延迟方面表现也都很优秀。
在NUMA架构下,CPU的概念从大到小依次是:Socket、Core、Processor。随着多核技术的发展,我们将多个CPU封装在一起,这个封装一
般被称为Socket(插槽),而Socket中的每个核心被称为Core,为了进一步提升CPU的处理能力,Intel又引入了HT(Hyper-Threading,超线
程)的技术,一个Core打开HT之后,在OS看来就是两个核,当然这个核是逻辑上的概念,所以也被称为Logical Processor,本文简称为
Processor。
node
NUMA体系结构中多了node的概念,主要用于解决core分组问题,在目前常见的分组中,一个socket里有一个node,每个node有自己的内部
CPU、总线和内存,同时还可以访问其他node内的内存,NUMA最大的优势是可以方便增加CPU数量。
lscpu
[root@E01 node1]# lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 46 bits physical, 48 bits virtual
CPU: 24
在线 CPU 列表: 0-11
离线 CPU 列表: 12-23
每个核的线程数: 1
每个座的核数: 6
座: 2
NUMA 节点: 2
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 63
型号名称: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
步进: 2
CPU MHz: 2394.458
CPU 最大 MHz: 2400.0000
CPU 最小 MHz: 1200.0000
BogoMIPS: 4788.52
虚拟化: VT-x
L1d 缓存: 384 KiB
L1i 缓存: 384 KiB
L2 缓存: 3 MiB
L3 缓存: 30 MiB
NUMA 节点0 CPU: 0-5
NUMA 节点1 CPU: 6-11
备注:
ls /sys/devices/system/node/node0
[root@E01 node1]# ls /sys/devices/system/node/node0
compact cpu12 cpu15 cpu2 cpu5 distance memory0 memory12 memory15 memory3 memory6 memory9 subsystem
cpu0 cpu13 cpu16 cpu3 cpulist hugepages memory10 memory13 memory16 memory4 memory7 numastat uevent
cpu1 cpu14 cpu17 cpu4 cpumap meminfo memory11 memory14 memory2 memory5 memory8 power vmstat
备注: