-
Notifications
You must be signed in to change notification settings - Fork 725
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
ip4_select_id harm performance dramatically #724
Labels
issue/to-reproduce
issues to be reproduced and verified
Comments
这个函数的性能问题之前测试没有发现过,我们会看看能否复现这个问题。由于 DPVS 核心代码不支持分片,且当前的 packet id选取也不完全符合 rfc 规范,现在使用 per-lcore 的 packet id 也不会有太大问题。 |
感谢回答。我们使用 dpdk-pktgen 发包,测试条件是配置 1个 service 1个 rs:
可以尝试一下。 |
还有个问题请教一下,DPVS 代码应该是支持 IP 分片的吧?我看已经实现了 ipv4_fragment,该函数在 ipv4_output_fin 处调用:
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
dpvs 的这个函数对性能影响很大。我在测试 ipip 隧道模式的性能,16核,100万 udp 连接,注释 ip4_select_id,采用固定的 id, 性能达到 1800万pps;打开注释,性能只有 800 多万pps,下降了一半。
不难看到,ip4_select_id 中使用了全局的原子变量 ip4_idents,原子操作在多核情况下大大降低了转发性能。下面是 perf 热点图:
问题:
这个函数设计的目的是什么?为何不用每核一份自增的 packet_id ?
The text was updated successfully, but these errors were encountered: