-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CPU & MEM & BPS #111
Comments
蓝色的unlink流量是本地收到的UDP流量,不是服务器发出来的UDP流量。 我运行kill -SIGUSR1没有任何输出,进程也不会被kill掉。系统是ARM平台的Ubuntu 16.04.1 LTS 3.4.112-sun8i root@orangepione:~# uname -a |
你吞掉日志了吧。 |
真的吞掉了,呵呵。 2016/08/11 11:25:18 KCP SNMP:&{BytesSent:163668 BytesReceived:49589511 MaxConn:1 ActiveOpens:1 PassiveOpens:0 CurrEstab:1 InErrs:0 InCsumErrors:10 InSegs:87295 OutSegs:5707 OutBytes:3025739 RetransSegs:369 FastRetransSegs:0 EarlyRetransSegs:0 LostSegs:369 RepeatSegs:124 FECRecovered:22 FECErrs:0 FECSegs:20143} |
两端都要发出来 |
log来了,启动参数都是默认的。 Server: Client: |
很正常啊 BytesSent ~= BytesReceived |
FEC首先就增加了> 30%的浪费,为了响应时间,在乎流量的话可以关掉FEC。 |
了解了,谢谢。目前用下来速度方面的确挺好的。 |
这个我这里也是这样的,初步估计是一个不可恢复的包,导致了RTO超时,这段时间就是波谷。 |
感谢回答! |
@bettermanbao https://github.com/xtaci/kcptun/releases/tag/v20160811 试下这个,看下曲线。 |
好的,等一下试试效果。 |
在这里看到恩山坛友了,呵呵。我测试的K2和小米mini路由器也是速度一下窜很高,一下就卡住了,CPU负载显示100%。参数调成fast或者normal会有改善,但还是不稳定。 |
@Biercenter mt7620跑kcptun太勉强了,我是外挂了一个orange pi专门跑kcptun的,路由器只负责分流。 |
好的,借用一下你的图用来发release! |
@bettermanbao 平滑度现在受到-sockbuf隐藏参数的影响 |
欢迎借图,好奇问一下MaxStreamWindowSize设置为sockbuf(hidden),是不是只是增大了接收缓存?看截图,感觉客户端接收到的UDP流量(蓝色)平滑效果比实际数据(橙色)的平滑效果要更加明显。 |
其实是减小了缓存大小, 因为yamux的窗口更新策略很保守,窗口越大更新越慢,相当于窗口更新对于链路传输状况敏感度降低了。换句话说,yamux在这种情况下,没有感受到网络的阻塞。 https://github.com/hashicorp/yamux/blob/master/stream.go#L247 现在默认的参数下,每传输2MB, 一定会有一次窗口更新。(max/2) |
根本的解决办法是,去掉yamux的窗口。 但是这样会影响多路stream的流量平衡性。 |
原来如此,新版我试用一段时间,再给你反馈。谢谢! |
太流弊了,搬瓦工VPN,实测0808版 1080p 无压力,更新到0811后,1440p无压力 |
楼上服务器和客户端参数是多少?还有客户端是什么机子?我搬瓦工还是卡顿,求参数 |
不好意思请教下, -sockbuf隐藏参数 我在执行程序时和其它参数一起手动输入吗? |
请问sockbuf设置多少比较合适呢,我现在设置为67108864(64MB) |
sockbuf >= 带宽时延乘积 |
@bettermanbao https://github.com/xtaci/kcptun/releases/tag/v20160811 试下,换了系统调用,降低CPU使用率。 |
@xtaci 其实在arm/x86/amd64平台上运行,CPU,内存已经都不是瓶颈了。我个人觉得如何提高有效载荷比和控制延时才是今后更新的大方向。 |
是的,算法是根本。 |
@xtaci 今天继续测试,加上了加密方法 tea, 无论看1080p还是1440p的youtube视频,kcptun的CPU开销(60%-145%)和内存占用(约30-100M)都没啥大的问题。现在的问题还是通过kcptun高速下载大文件,比如500M以上的youtube视频,内存开销惊人,会很快跃升到300M以上,即使设置GOGC=30, 但是没有什么帮助,随着下载时间的进行,本地下载速度逐渐增大到3MB/s 以上,kcptun的内存开销居然达到500多M, 这个需要后续的改进。 另外,我建议server & client都要加上crypt, 今天整天没遇到疑似QoS的问题发生,connection speed一直很快很稳定。 @bettermanbao 你可以尝试用你的orange pi下载大的视频文件,看看CPU和Memory的情况。 |
@braveguywallce 如果内存没有办法通过GOGC改善,下个版本我准备尝试加上定期GC。 |
@xtaci 目前除了客户端高速持续长时间下载大文件的时候占用内存过大以外,一般的看看HD视频啥的内存都没有问题。我明天再调节下GOGC参数看看。 |
好的,能通过GOGC解决最好。 |
说到内存,x64 Openwrt 的确是看youtube高清后内存会暴增,我现在的做法是一天重启一次kcptun客户端,很稳定 |
@Cye3s GOGC=20 ./client...... 基本能稳, 另外定期重启是个好办法。 |
好,我加上这个参数看看,这两天先不定时重启 |
@braveguywallce 我下载了几段youtube的视频,观察到了和你完全相同的现象。 开始的时候下载速度不快,700-800KB/s,CPU占用150%左右,kcptun的内存占用也不多。下载一段时间后,速度突然飙升到4-5MB/s,这时内存使用就开始飙升,CPU利用率反而下降很多。 实时流量参考截图,蓝色的是client收到的KCP协议的UDP包,橙色的是client还原的原始数据。 感觉末端的速度爆发是kcptun把缓存的数据一下子全部吐了出来。 |
@xtaci 抱歉,我测试做得不够全面!今天测试从几个大的站点下载1G大文件,结果遇到了新的情况。基本上有两种情况:
这样的话,是否要考虑目标主机的因素了?从不同主机下载大文件,本地端的内存占用是不一样的。 |
@braveguywallce 还是vps上只装kcpserver,树莓派上装kcpclient和ssserver? |
You have to install the server of both kcptun & ss in your VPS, and you can deploy the kcptun client in the Raspberry Pi alone, with SS working on the Router. It's simple, easy & high efficiency! |
@braveguywallce 多谢回复。 原谅我愚钝,有些地方还是没弄明白。如果是那样的话 比如:vps:10.10.10.10,ss端口443,kcp端口554 |
@w12928293 |
@braveguywallce |
@w12928293 比如Vps 10.10.10.10,ss端口443,kcp的-t参数要设为"127.0.0.1:443",-l就是你的":554" |
@lizongzeshunshun |
@w12928293 可以树莓派跑kcptun(client),路由器跑shadowsocks,这样应该是效率最高的了 |
@lizongzeshunshun |
@w12928293 |
@lizongzeshunshun 太感谢了! 最开始执行语句老长了,加了各种参数。。。然后跑不起来 后来我用作者提供的默认的 可是 怎么添加开机启动及后台运行呢? |
@w12928293 please use google to find answers by yourself first, then come to ask. |
教育的对。 |
yamux kuptun的CPU/MEM 问题目前在smux kcptun上初步有了比较好的解决,参考 #168 |
@w12928293 请问你最后如何成功设置开机启动的,我把加入命令加入/etc/rc.local和新建一个systemctl都试过了,都失败了,但是source /etc/rc.local是能够运行的,当然我确定开机是会加载/etc/rc.local的 |
请看截图,LAN1口接的是一台kcptun中转的本地服务器,用的是20160808 linux arm的kcptun版本。
蓝色uplink流量是远端的VPS发往本地kcptun中转服务器的UDP流量,橙色download的流量是kcptun解包还原后发往客户端的实际数据流量。两者波动基本同步,这是合理的。
请教一下作者,这种波动是正常的吗?是否可以通过优化kcptun的参数,平滑波动?
另外本地收到的UDP流量和解包后的实际流量,差不多是2:1的关系。kcptun本身的系统开销应该没有这么大吧?那这是不是代表本地收到的UDP包中有将近一半的包是重复的的或者错误的?谢谢!
The text was updated successfully, but these errors were encountered: