文档开发者中心
我的
|

弹性云服务器 ECS

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

通用网络调优方法

一、跨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

cke_698.png

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

(1)停止irqbalance服务

service irqbalance stop

(2)关闭irqbalance服务

service irqbalance disable

cke_699.jpeg

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

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

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

cke_700.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

点赞
3
收藏
2
回复
3
分享
举报
浏览2956 发布于2022-02-07 03:40未知归属地
全部评论
最多点赞
最新发布
最早发布

看完好像就会了,感谢分享

3楼回复于2022-02-22 12:50 未知归属地
好文章哦,学习了
2楼回复于2022-02-10 15:11 未知归属地

膜拜大佬,给大佬点个赞。

1楼回复于2022-02-10 13:51 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。