LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

LEP(LINUX EASY PROFILING) 是Barry Song,Mac Xu,陈松等以及陈莉君老师团队正在致力于打造的一个开源项目,其宗旨在于便利Linux的程序员,以最快最直接的方式,定位到系统里面一些bug的源头,以及一些性能瓶颈的原因。


这篇文章的内容涉及用LEP(LINUX EASY PROFILING)监控PCDUINO 3nano电路板网络流量,观察负载均衡IDLE、IRQ和SoftIRQ,以及用RPS/RFS提高高网络负载情况的网络带宽。


LEP项目组欢迎开源爱好者加入和参与。关于项目的最新演讲与文章:

【终南山.内核问道】Linux性能剖析的可视化

宋宝华:LEP(Linux易用剖析器) 是什么,为什么以及怎么办(1)






点击“二维码”关注

Linuxer

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽


本案例演示LEP观察到负载不均衡情况下,PCDUINO电路板iperf测试网络带宽发挥不出来,并实施负载均衡后,看到PCDUINO网络带宽重大提高。

怎么烧录PCDUINO镜像

在https://github.com/linuxep/images.git项目下载pcduino-sd.img.gz,用gunzip解压后得到pcduino-sd.img,写入PCDUINO的SD卡(SD卡拔出后,以读卡器插入Linux电脑)。

sudo dd if=pcduino-sd.img of=/dev/sdx (x是你的SD卡在你电脑的路径)

实验方法

开机后PCDUINO电路板的IP地址自动已经配置为192.168.100.100,将电脑与PCDUIBO电路板网线直连,保证本机可以访问PCDUINO的IP地址。登陆电路板可以用ssh命令:

ssh [email protected]

无密码。

电路板上也集成了ARM版本的LEPD,位于/usr/bin/lepd,运行方法:

lepd --debug

LEPV浏览器端设置方法:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

PCDUINO运行iperf服务器:

iperf -s

电脑运行iperf客户端(每10秒报一次网络带宽):

iperf -c 192.168.100.100 -P 40 -t 2000 -i 10 -l 1K | grep SUM

均衡前

此时top里面监控到严重的负载不均衡现象:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

如果不做任何工作,均衡前电脑上iperf上的周期report:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

LEPV浏览器的显示(其中CPU1在严重地看热闹):

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

均衡后

在电路板运行负载均衡脚本:

[email protected]:/# balance.sh

该负载均衡脚本内容如下,是关于IRQ和SoftIRQ的配置:

echo 2 > /proc/irq/40/smp_affinity

echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus

echo 4096 >/proc/sys/net/core/rps_sock_flow_entries

echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt

此时电脑上iperf带宽报告:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

此时top命令状态:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

此时LEPV端浏览器显示

我们看到CPU1的IDLE线迅速下跳(不再看热闹了):

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

CPU1开始处理包:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

稳定观察一段时间后(两个CPU在均衡处理网络):

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

再次恢复恶劣状态

在电路板运行负载不均衡脚本(就是默认状态):

[email protected]:/# no-balance.sh

电脑上iperf上的带宽再次严重下降:

LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽

均衡前后对比


IDLE

IRQ+SoftIRQ

iperf带宽

均衡前

CPU0 忙 CPU1闲

CPU0 忙 CPU1闲

30M

均衡后

CPU0 忙 CPU1忙

CPU0 忙 CPU1忙

90M

本文未完待续 >>> 


iphone用户打赏


LEP与负载均衡—— 以PCDUINO实际案例来使用LEP提高网络带宽


Android用户打赏