一些关于 LVS 的优化
来源:互联网 发布:汽车维修检测软件 编辑:程序博客网 时间:2024/05/25 08:12
多网卡 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/<interface>/queues/rx-<number>/rps_cpus
echo 4096 > /sys/class/net/<interface>/queues/rx-<number>/rps_flow_cnt
echo 30976 > /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
参考文章
- 一些关于 LVS 的优化
- 关于uboot的一些优化
- 关于uboot的一些优化
- 关于一些性能的优化
- 关于Bitmap的一些优化
- 关于Unity3D的一些优化
- 关于服务器的一些优化
- 关于Hbase的一些优化
- 看到的一些关于优化的建议
- 关于数据库SQL优化的一些笔记
- 关于SQL优化的一些知识
- 关于网站页面优化的一些建议
- 关于Eclipse的一些设置和优化
- Android-一些关于代码优化的事儿
- 关于URL优化的一些经验
- 关于URL优化的一些经验
- 关于SSD优化的一些小结
- 关于凸优化的一些简单概念
- 各版本IIS中CGI超时的设置方法
- 打卡17-perl 子函数
- Matlab并行编程函数<cellfun & arrayfun>
- LCD屏幕,IPS屏幕,TFT屏幕,SLCD屏幕和AMOLED手机屏幕介
- Guava介绍
- 一些关于 LVS 的优化
- JS中4种数学函数:ceil, floor, round; random
- HDU 2639 Bone Collector II (求第K大的背包)
- 2013-07-01&&2014-06-30
- MQTT的学习研究 【汇总贴】
- Java学习之多态
- 分析代理模式
- IOS性能实现水平自动无缝循环LoopView(ScrollView)
- CodeForces 19B Checkout Assistant dp