修改Gazelle配置文件
为了后续操作过程中可以顺利使能Gazelle,需要修改Gazelle配置文件lstack.conf的配置参数。lstack.conf用于指定lstack的启动参数。
- 打开Gazelle的配置文件lstack.conf。
1
vi /etc/gazelle/lstack.conf
- 按“i”进入编辑模式,按照如下内容修改配置文件中的配置项。
dpdk_args=["--socket-mem", "0,2048,0,0", "--huge-dir", "/data/hugepages", "--proc-type", "primary"] use_ltran=0 flow_bifurcation=0 kni_switch=0 low_power_mode=0 mbuf_count_per_conn=170 listen_shadow=1 num_cpus="23,47,71,95" num_wakeup="22,46,70,94" host_addr="192.168.200.8" mask_addr="255.255.255.0" gateway_addr="192.168.200.1" devices="08:4f:0a:01:ec:d3" app_bind_numa=1 stack_interrupt=0
其中,如表1所示参数请根据实际情况修改。
表1 参数说明 名称
配置范围
缺省值
说明
dpdk_args
-
-
用来设置DPDK的初始化参数。
如果为CX4网卡,还需要增加-d和librte_net_mlx5.so参数,即配置为:dpdk_args=["--socket-mem", "0,2048,0,0", "--huge-dir", "/data/hugepages", "--proc-type", "primary", "-d", "librte_net_mlx5.so"]
--socket-mem
-
-
配置为从内存大页分配的存储空间。当前配置为0,2048,0,0表示为NUMA Node1分配2048MB即2G内存大小,即在7配置的内存大页大小。
说明:建议将Gazelle配置在网卡所在的NUMA Node运行。Gazelle仅支持4个NUMA Node的场景,若服务器NUMA Node超过4个,则应为Gazelle分配在前4个NUMA Node上。
需要的内存大小与tcp_conn_count、mbuf_count_per_conn、rpc_msg_max等其他参数的配置有关。
- 在MySQL业务中,内存计算方法如下:当rpc_msg_max配置为32时,固定占用的内存约为90M,每500个连接需要增加20M,每4000个mbuf需要的内存约为10M,另外建议多配置100M提高容错。mbuf个数 = tcp_conn_count * mbuf_count_per_conn。
因此,最高100连接建议配置的内存大小为90M + 4M + 10M + 100M = 204M;最高500连接建议配置的内存大小为90M + 20M + 50M + 100M = 260M;最高1000连接建议配置的内存大小为90M + 40M + 100M + 100M = 330M。
- 在Redis业务中,内存计算方法如下:固定占用的内存约为90M,每10000个连接需要增加350M,每4000个mbuf需要的内存约为10M,另外建议多配置100M提高容错。mbuf个数 = tcp_conn_count * mbuf_count_per_conn。
因此,最高10000连接建议配置的内存大小为90M + 350M + 1000M + 100M = 1540M;最高20000连接建议配置的内存大小为90M + 700M + 2000M + 100M = 2890M。
--huge-dir
-
-
配置为5中创建的大页目录。
flow_bifurcation
0,1
0
用于开启或关闭网卡归一功能,此功能仅支持Docker、KVM场景。默认值为0,表示关闭。配置值为1时,表示开启。
说明:在Gazelle 1.0.2-56及之后版本支持此参数。
tcp_conn_count
1-20000
1500
表示连接数量,默认是1500。配置值应不小于最大连接数+10。如最大连接数为1000时,该值应配置为大于等于1010的值。
说明:该值最大可配值为20000,如最大连接数量超过20000,则将该值配置为20000,mbuf_count_per_conn值配置为更大的值,使tcp_conn_count*mbuf_count_per_conn>=最大连接数*40即可。
mbuf_count_per_conn
1-INT32_MAX
170
- 表示每个连接中使用的mbuf数量,默认是170,根据具体业务资源使用情况调整。num_cpus配置1个线程时,在MySQL业务和Redis业务中配置为40。
- num_cpus配置多个线程时,可将该值配置为80或更大的值。此时,“--socket-mem”配置的内存大小需要相应进行增加。
nic_rxqueue_size
512-8192
4096
表示网卡接收队列深度,仅支持配置为2的幂次方。
nic_txqueue_size
512-8192
2048
表示网卡发送队列深度,仅支持配置为2的幂次方。
num_cpus
-
-
lstack线程绑定的cpu cores编号,编号的数量为lstack线程个数(小于等于网卡多队列数量)。根据具体业务的网络压力进行配置。建议配置为网卡亲和的numa node上的最后一个core的编号。
说明:可使用如下命令查询网卡亲和的numa node:"cat /sys/class/net/网卡名称/device/numa_node"。
num_wakeup
-
-
建议配置为网卡亲和的numa node上倒数第二个core的编号。Gazelle-1.0.1-53及以后版本取消此参数的使用。
host_addr
-
-
配置为业务IP地址。
mask_addr
-
-
配置为业务网段掩码。
gateway_addr
-
-
配置为业务网关。
devices
-
-
配置为对应业务网口的MAC地址,即6中记录的MAC地址。
app_bind_numa
0,1
0
可配置为0或1。1为默认值,表示应用的epoll和poll线程绑定到协议栈所在的NUMA,若应用需要使用numactl绑核启动,应配置为0。
stack_interrupt
0,1
0
可配置为0或1。0为默认值,表示Gazelle将独占核。配置为1表示开启中断模式,在没有数据包处理时,Gazelle协议栈线程将会释放CPU资源,从而进入休眠状态;当有数据包到达时,硬件会触发中断信号唤醒协议栈线程,通知协议栈线程立即响应和处理新数据。这一设置可显著降低在空闲状态下不必要的CPU占用。此参数在Gazelle-1.0.2-67及以后版本中新增。
说明:在Gazelle 1.0.2-67及之后版本支持此参数。
listen_shadow
0,1
0
控制侦听的TCP端口,0代表用1个lstack线程侦听端口,1代表多个lstack线程侦听端口。与num_cpus配置的个数对应,num_cpus配置的个数超过1时,此项需配置为1。
rpc_msg_max
1-8192
4096
rpc内存池中元素(即rte_mbuf结构体)的数量,默认为4096。启动redis应用时,最高10000连接可使用默认配置,最高20000连接该值可调整为8192。启动MySQL应用时,配置为32即可。
Gazelle版本可通过如下命令查询。
1
rpm -qa | grep gazelle
- 在MySQL业务中,内存计算方法如下:当rpc_msg_max配置为32时,固定占用的内存约为90M,每500个连接需要增加20M,每4000个mbuf需要的内存约为10M,另外建议多配置100M提高容错。mbuf个数 = tcp_conn_count * mbuf_count_per_conn。
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。