Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28487
  • 博文数量: 8
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-25 11:21
文章分类
文章存档

2017年(8)

我的朋友

分类: 系统运维

2017-08-31 18:46:17

原文地址:一些关于 LVS 的优化 作者:xinyv

 Lvs 的配置文章挺多的了,优化的也不少,从淘宝普天的文章学习了很多东西,做个记录

多网卡 bonding 绑定

modprobe.conf 
alias bond0 bonding

ifcfg-bond0
DEVICE="bond0"
ONBOOT="yes"
USERCTL="no"
BOOTPROTO="static"
IPADDR="192.168.1.1"
NETMASK="255.255.255.0"
BONDING_OPTS="mode=balance-rr miimon=100"

ifcfg-eth0
DEVICE="eth0"
USERCTL="no"
ONBOOT="yes"
BOOTPROTO="none"
TYPE="Ethernet"
SLAVE="yes"
MASTER="bond0"


开启网卡多队列

 lspci -vvv 可以查看网卡是否支持多队列
如果有 MSI-X && Enable+ && TabSize > 1 关键字支持多队列网卡

intel igb 网卡可以通过参数开启多duilie
alias eth0 igb
alias eth1 igb
options igb RSS=8,8
不同网卡用 ,分割


irq 中断绑定

awk '$NF~/eth/{print $1,$NF}' /proc/interrupts

120: eth0-0
121: eth0-1
122: eth0-2
123: eth0-3
124: eth0-4
125: eth1-0
126: eth1-1
127: eth1-2
128: eth1-3
129: eth1-4

分别绑定不同中断给 cpu
echo  1   >/proc/irq/120/smp_affinity
echo  2   >/proc/irq/121/smp_affinity
... ...

broadcom 的网卡有时需要关掉 msi (我这里不需要)
options bnx2 disable_msi=1 如果需要关闭 msi

/etc/init.d/irqbalance 如果这个服务存在,绑定以后要停止
service irqbalance stop
chkconfig --level 345 irqbalance off

在系统启动的时候kernel参数 isolcpus=cpu-list 让某些 cpu 只给网卡中断使用 (比较极端的玩法)


内核参数调整
下面那个优化的参数都是 张文嵩大神亲自写的 patch

kernel /net/netfilter/ipvs/ip_vs_conn.c
define CONFIG_IP_VS_TAB_BITS 12   =>  20
#define CT_LOCKARRAY_BITS  5      =>  8


网上的文章对 RPS 的解释
RPS/RFS主要是针对单队列网卡多CPU环境。虽然有这些虚拟队列的支撑,但是毕竟是软件模拟的。 强烈推荐用支持多队列的网卡。
多队列多重中断的网卡在使用了smp affinity之后也可以再使用该RFS RPS的功能,在这里他更像是个接收方的调解员,最大程度的提高cpu cache。
centos 6.1 以后就应该有支持
开启 RPS

echo ffff > /sys/class/net//queues/rx-/rps_cpus
echo 4096 > /sys/class/net//queues/rx-/rps_flow_cnt
echo 30976 > /proc/sys/net/core/rps_sock_flow_entries

rps_sock_flow_entries的数值是根据你的网卡多少个通道,计算得出的数据,例如你是8通道的网卡,那么1个网卡,每个通道设置4096的数值,8*4096就是/proc/sys/net/core/rps_sock_flow_entries的数值
rps_flow_cnt 根据内存可以设置的稍大一点

其他的一些东西



# 关闭网卡LRO和GRO
ethtool -K em1 gro off
ethtool -K em1 lro off
# 禁用ARP,增大backlog并发数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.core.netdev_max_backlog = 500000
# 调整内核的时钟机制
kernel nohz=off
关闭 acpi 绿色节能功能等
使用 DR 模式
尽量用简单的算法如 rr wrr lc wlc
尽量不用 iptables mark 标记 关闭 conntrack 表



这么多方法总结一下,一般情况 300M 以下带宽不需优化,如果需要优化  多队列网卡 + IRQ affinity + RPS/RFS + bond 应该可以满足绝大多数需要了。喜欢编内核玩的,可以改改参数,但我的带宽恐怕用不到优化那两个参数了
http://wwdhks.blog.51cto.com/839773/1218785
参考文章
阅读(1314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~