鲲鹏服务器网络调优笔记分享

举报
Jack20 发表于 2021/01/12 19:58:29 2021/01/12
【摘要】 通用网络调优方法一、跨CPU集群绑核,内存访问同die跨CPU Cluster绑核的好处:      1.负载低的情况下可以最大的利用内存带宽。      2.CPU绑核尽量分布到多个CPU Cluster上,其L3 Cache Tag上的竞争会明显减小,内存带宽和CPU计算性能可以相应提升。按跨CPU Cluster绑核,内存访问同NUMA。      以鲲鹏920 5250处理器为例,创...

通用网络调优方法

一、跨CPU集群绑核,内存访问同die

跨CPU Cluster绑核的好处:

      1.负载低的情况下可以最大的利用内存带宽。

      2.CPU绑核尽量分布到多个CPU Cluster上,其L3 Cache Tag上的竞争会明显减小,内存带宽和CPU计算性能可以相应提升。


按跨CPU Cluster绑核,内存访问同NUMA。

      以鲲鹏920 5250处理器为例,创建容器,容器名称8u16g_02,然后分配8核,绑核3,4,8,9,12,16,20,21,NUMAO节点,内存16G,然后创建容器的镜像是centos:latest,挂载本地volume卷,将本机"/home”映射到容器"/home”。

docker run -d -it --cpus=4 --cpuset-cpus=3,4,8,9,12,16,20,21 --cpuset-mems=0 -m 16384m --name 8u16g_02 -v /home:/homecentos:latest

docker run命令详细使用指导请参见:https://docs.docker.com/engine/reference/commandline/run/


二、网卡中断绑定

1.查看所需的网卡

2.查看网卡所在的NUMA节点,可根据实际情况将网卡中断绑到NUMA所在的节点CPU核

cat /sys /class/net/enp125s0fe/device/numa_node

image.png

3.关闭irqbalance服务,通过手动绑定中断的方法优化性能。

(1)停止irqbalance服务

service irqbalance stop

(2)关闭irqbalance服务

service irqbalance disable

image.png

4.查询网卡对应的中断号

cat /proc/interrupts | grep $eth | awk -F ':' '{print $1}' 

注:其中$eth表示需要优化的业务网口名称

image.png

5.查询当前网卡中断绑核情况,手动绑定网卡中断到指定的CPU

根据中断号,将每个中断各绑定在一个核上

echo $cpunum > /proc/irq/$irq/smp_affinity_list


注:其中$cpunum表示需要绑定到的目标CPU序列号,$irq表示步骤 1执行的结果,如存在多个序列号,则需逐一执行绑定。


三、网络参数调优

   对于不同的操作系统,通过在OS层面调整一些参数配置,可以有效提升服务器性能。

参数
含义和方法 操作命令

tcp_max_syn_backlog

tcp_max_syn_backlog是指定所能接受SYN同步包的最大客户端数量。

默认值是2048,建议修改成8192。

echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog

net.core.somaxconn

服务端所能accept即处理数据的最大客户端数量,即完成连接上限。

默认值是128,建议修改成1024。

echo 1024 > /proc/sys/net/core/somaxconn

net.core.rmem_max

接收套接字缓冲区大小的最大值。

默认值是229376,建议修改成16777216。

echo 16777216 > /proc/sys/net/core/rmem_max

net.core.wmem_max

发送套接字缓冲区大小的最大值(以字节为单位)。

默认值是229376,建议修改成16777216。

echo 16777216 > /proc/sys/net/core/wmem_max

net.ipv4.tcp_rmem

配置读缓冲的大小,三个值,第一个是这个读缓冲的最小值,第三个是最大值,中间的是默认值。

默认值是"4096 87380 6291456",建议修改成"4096 87380 16777216"。

echo "4096 87380 16777216" > /proc/sys/net/ipv4/tcp_rmem

net.ipv4.tcp_wmem

配置写缓冲的大小,三个值,第一个是这个写缓冲的最小值,第三个是最大值,中间的是默认值。

默认值是"4096 16384 4194304",建议修改成"4096 65536 16777216"。

echo "4096 65536 16777216" > /proc/sys/net/ipv4/tcp_wmem

net.ipv4.max_tw_buckets

表示系统同时保持TIME_WAIT套接字的最大数量。

默认值是2048,建议修改成360000。

echo 360000 > /proc/sys/net/ipv4/tcp_max_syn_backlog
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。