Skip to content
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

v1.0.0-v1.1.2的一些CPU多核,内存占用,splice模式相关问题及释疑 #46

Closed
badO1a5A90 opened this issue Dec 8, 2020 · 9 comments

Comments

@badO1a5A90
Copy link
Member

badO1a5A90 commented Dec 8, 2020

后续更新:#56


CPU多核

  • 是否启用多核
    • 旧版本的v2ray可能存在此问题
    • 确认go1.5以后自动启用多核,不需要再通过代码获取核心数和指定max可用核心数量
    • 根据上一条,xray应不存在多核利用问题.
    • 未确定指定更多(高于实际核心数量)的CPU核心数是否会提升效率
    • 参考link

内存占用

  • VIRT高(4G)
  • 启动占用内存正常为20M,部分架构(似乎仅arm64)为80M(已破案,希望能够优化一下内存占用 #68)
  • kcp占用内存
    • 历史遗留问题,确定kcp内存释放缓慢(测试及gole报告),其他模式可立即释放内存
    • kcp本身运行时占用内存较高(和配置的数值有关,因为决定发包倍率)
    • xray以后更让上面两个问题暴露(与以前v2ray相同配置参数时,buffer size 更大导致OOM)

splice(XTLS)

  • 部分用户反映splice比direct慢 已解决,看楼下
    • 是因为在内核中设置 net.ipv6.conf.all.forwarding=1 或者 net.ipv4.ip_forward=1 造成
    • 详细可点击此处破案系列之三
    • 可能原因:sleep,内核,都待验证. 基本可以确定是 sleep 一毫秒导致
    • 在splice/XTLS测试中发现的问题:设置handshake值>测试时长,且指定带宽上限时,测试完成链接不断开.未知原因以及是否因此对用户测试也造成影响. 此处现象并不明确,待更多测试确认不断开状况.
@badO1a5A90 badO1a5A90 changed the title v1.0.0-v1.1.2的一些CPU多核,内存占用,splice模式相关问题 v1.0.0-v1.1.2的一些CPU多核,内存占用,splice模式相关问题及释疑 Dec 8, 2020
@RPRX
Copy link
Member

RPRX commented Dec 8, 2020

破案:部分用户 Splice 比 Direct 慢,基本可以确定是之前 CPU 出让方式的问题,昨晚的 commit 已解决 b3f3c5b

Splice 前出让 CPU 是必要的,因为 Xray 的 pipe 内很可能还有数据,必须先把它们写回去。

@RPRX
Copy link
Member

RPRX commented Dec 8, 2020

另外,基本可以确定 Android、OpenWrt 上都调用到了系统内核的 Splice(即没被精简)

@badO1a5A90
Copy link
Member Author

splice变慢问题:
- 是因为在内核中设置 net.ipv6.conf.all.forwarding=1 或者 net.ipv4.ip_forward=1 造成
- 详细可点击此处破案系列之三

@lucifer9
Copy link
Contributor

路由器大部分都是双网卡,一个接内网一个接外网

@RPRX
Copy link
Member

RPRX commented Dec 11, 2020

那些参数在不同硬件上的影响程度好像不同,因为硬路由上 Splice 的确又提升了,而硬路由往往需要那些参数

相关报告似乎都是来自 OpenWrt,但也占比不多

@vrichv
Copy link

vrichv commented Dec 11, 2020

splice变慢问题:

  • 是因为在内核中设置 net.ipv6.conf.all.forwarding=1 或者 net.ipv4.ip_forward=1 造成
  • 详细可点击此处破案系列之三

路由器是开启这两个参数的,splice参数对路由器不适用?

@badO1a5A90
Copy link
Member Author

badO1a5A90 commented Dec 11, 2020

那些参数在不同硬件上的影响程度好像不同,因为硬路由上 Splice 的确又提升了,而硬路由往往需要那些参数

相关报告似乎都是来自 OpenWrt,但也占比不多

不太确定各种硬件环境下的具体表现差异,可能不受到影响,也可能是也是受到影响的,但各种环境下降程度不一样,所以某些环境下,仍然比同样受到影响后的direct快.

@badO1a5A90
Copy link
Member Author

启动占用内存问题破案
#68

@badO1a5A90
Copy link
Member Author

转入讨论区。
#56

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants