使能Gazelle
简介
Gazelle是一款高性能
Gazelle优势有:
安装
- 配置openEuler的Yum源,在“/etc/yum.repos.d”目录下openEuler.repo yum源文件中打开update源,即修改[update]源中enabled字段为1,如下所示:
[update] name=update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/update/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler
- 清除Yum缓存。
yum clean all yum makecache
- 直接使用Yum命令安装Gazelle。
yum install dpdk yum install libconfig yum install numactl yum install libboundscheck yum install libpcap yum install gazelle
环境配置
- 打开“lstack.conf”文件。
vim /etc/gazelle/lstack.conf
- 配置DPDK参数。
dpdk_args=["reinit-ok", "-l", "1", "--log-level", "lib.eal:6", "--log-level", "lib.cryptodev:5", "--log-level", "user1:6", "--match-allocations", "--file-prefix", "spdk_gazelle"]
- Gazelle依赖DPDK,因此Gazelle的配置文件中的DPDK的配置决定SPDK的配置。在使能Gazelle的情况下,需要通过修改上述配置文件中的dpdk_args参数来调整SPDK的参数。
- 上述配置第三个参数表示的是绑核位置,"1"表示当前SPDK绑了一个核,位置为cpu1。
- 在文件中修改或添加如下选项。
use_ltran=0 kni_switch=1 listen_shadow=1 mbuf_pool_size = 1024000 num_cpus="2,3" app_bind_numa=0 main_thread_affinity=1
- 配置Gazelle需要接管的端口信息。
host_addr="192.168.1.148" mask_addr="255.255.255.0" gateway_addr="192.168.1.1" devices="aa:bb:cc:dd:ee:ff"
请根据实际环境所使用的业务网口信息填写端口信息。
- 按“Esc”键退出编辑模式,输入“:wq!”并按“Enter”键保存退出文件。
使能Gazelle
- 使用Gazelle接管网口(以业务网口为enp3s0为例)。
modprobe vfio enable_unsafe_noiommu_mode=1 modprobe vfio-pci ip link set enp3s0 down dpdk-devbind -b vfio-pci enp3s0
- 查看接管网口是否已经成功。
dpdk-devbind -s
如果想取消Gazelle对网口的接管,请执行如下命令:
dpdk-devbind -b hinic 0000:07:00.0
- 在应用进程上使能Gazelle。
在执行启动SPDK的命令时通过LD_PRELOAD的方式,加载Gazelle功能库。
LD_PRELOAD=/usr/lib64/liblstack.so" GAZELLE_BIND_PROCNAME=vhost build/bin/vhost -S /var/tmp -m 0x2
- Gazelle优化的使能方式和TCMalloc比较相似,综合之后,可使用如下命令启动SPDK。
TCMALLOC_MEMFS_MALLOC_PATH=/dev/hugepages/tcmalloc LD_PRELOAD="/usr/lib64/libtcmalloc_minimal.so.4 /usr/lib64/liblstack.so" GAZELLE_BIND_PROCNAME=vhost build/bin/vhost -S /var/tmp/ -m 0x02
- 性能测试请采用该命令启动SPDK。
- Gazelle优化的使能方式和TCMalloc比较相似,综合之后,可使用如下命令启动SPDK。
- Gazelle场景进行绑核。
Gazelle运行需要单独占CPU,使能Gazelle功能后的vhost进程启动后,绑核方式需要根据实际情况进行调整。
请参考线程绑核将Ceph Client绑核范围修改为:
taskset -pc 4-12 $pid
父主题: 优化使能