|
本帖最后由 xykz 于 2020-5-25 10:22 编辑
已废弃,最终版见:https://www.right.com.cn/forum/thread-4031767-1-1.html
起因:https://www.right.com.cn/forum/thread-4025644-1-1.html
我家里外网带宽100M,路由带30个终端,除了SQM以外没有打开任何附加功能,固件是荒野无灯3.4.3.9-099_20180402-0237,开了SFE
这里重新描述一下我的场景,应该和大多数家里跑PT,又要播放内网NAS视频的人差不多的。
比如我NAS(有线)在跑PT,客厅的电视(有线)在放直播(非IPTV,电视家类P2P的),房间里投影(5G无线)在放NAS上的蓝光电影,外网带宽满载。
默认情况下,此时路由负载40~50%,蓝光电影时不时卡顿;起因帖子里也有大佬说了,是MTK的U设计问题,不能充分利用CPU;最近查了一下,发现v2ex和恩山都有大佬提供了以下配置用于改善这个问题:
- echo 8 > /proc/irq/11/smp_affinity
- echo 8 > /proc/irq/12/smp_affinity
- echo 8 > /sys/class/net/eth2/queues/rx-0/rps_cpus
- echo 8 > /sys/class/net/ra0/queues/rx-0/rps_cpus
- echo 3 > /sys/class/net/eth3/queues/rx-0/rps_cpus
复制代码
昨晚试了一下,发现这个配置主要是针对大流量的公网传输,CPU0123分配了0和1处理外网,3处理无线和内网;但是在我的场景下还有内网大流量要处理,而且CPU2处于围观状态。
于是我自己调整了一下,终于让CPU0123在高负载下都处于一个均衡的状态了,配置如下(20200517更新,更新内容见12F):
- echo 3 > /proc/irq/11/smp_affinity
- echo 3 > /sys/class/net/eth2/queues/rx-0/rps_cpus
- echo 3 > /proc/irq/12/smp_affinity
- echo 3 > /sys/class/net/ra0/queues/rx-0/rps_cpus
- echo f > /sys/class/net/br0/queues/rx-0/rps_cpus
- echo 3 > /sys/class/net/eth3/queues/rx-0/rps_cpus
- echo c > /sys/class/net/ppp0/queues/rx-0/rps_cpus
复制代码
ppp0和eth3会占用大量的CPU,尤其是前者,所以把他们俩分开,eth3使用CPU0/1,ppp0使用CPU2/3
eth2和ra0用不了多少资源,让它们随eth3使用CPU0/1
br0也是个资源大户,但是CPU就那么多个,让它自己找个空闲的位置就好
测试场景如上文红字,不过把投影放电影改成了手机WIFI拉文件,速率稳定在100Mbps+,CPU使用情况见下图:
不过很奇怪的是,其实这个固件默认配置的情况下,也能这么跑,只是CPU0闲置,有一个会跑到70~80%,剩下两个40%左右;不过能跑是能跑,还是一开始说的那个问题,内网用无线看片会卡顿。
题外话:
最后,对于下PT/BT的朋友,和我同款固件的话,可以尝试一下下面的参数,可以改善大量UDP连接带来路由CPU使用率过高影响整体网络质量的问题,主要思路是快速释放掉没用的连接,避免系统浪费资源去跟踪:
- echo 32768 > /proc/sys/net/core/somaxconn
- echo 16384 > /proc/sys/net/core/netdev_max_backlog
- echo 16384 > /proc/sys/net/ipv4/tcp_max_syn_backlog
- echo 15 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close_wait
- echo 30 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_fin_wait
- echo 30 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait
- echo 300 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
- echo 30 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout
- echo 120 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
参与人数 2 | 恩山币 +3 |
收起
理由
|
拉格朗日
| + 1 |
别光喝酒啊,吃菜吃菜~~~ |
XwbCHN
| + 2 |
感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧! |
查看全部评分
|