鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

修改Gazelle配置文件

为了后续操作过程中可以顺利使能Gazelle,需要修改Gazelle配置文件lstack.conf的配置参数。lstack.conf用于指定lstack的启动参数。

  1. 打开Gazelle的配置文件lstack.conf。
    1
    vi /etc/gazelle/lstack.conf
    
  2. 按“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网卡,还需要增加-dlibrte_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
    
  3. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。