-
Notifications
You must be signed in to change notification settings - Fork 45
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
性能恶劣? #80
Comments
还有很大上升空间啊😂。
|
我在 linux x86_64 测了下,把线程数放开后,Rust 版性能比 C 版,好差不多 30 %(但会丢失一小部分的查询) 你重新再测一下? C 版 Rust 版,工作线程数,可用下面的方式配置,使用的线程数量,默认是 CPU 的核数 num-workers 4 Line 1684 in fea125c
Sets the number of worker threads the Runtime will use. This can be any number above 0 though it is advised to keep this value on the smaller side. This will override the value read from environment variable TOKIO_WORKER_THREADS. The default value is the number of cores available to the system. When using the current_thread runtime this method has no effect. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
似乎无改善
不过确实是四个线程了 |
无改善? 看你上面的意思你限制了4个线程?之前就是锁死了四个线程。 上面说 |
我2核,,,不配置就是2线程。那么配置4线程cpu使用量是30%,我改成16试了cpu使用量仍是30%,但确实是16个线程了。 他那个测试脚本是重复测www.baidu.com,原则上应该完全命中缓存。但是脚本运行时看到有5Mbps的入站流量,感觉似乎完全没有命中缓存。 |
那就奇怪了,为啥你电脑30%,cpu 利用率上不去难道卡在入站流量上了? |
rust-lang/libc 昨天发布0.2.141 release了说修复了编译问题 |
看了一下上端路由器的状态。性能测试时连接数满(6万多),大概一半是icmp连接。可见是缓存完全没有命中,时间都耗费在查询和测速上了。带宽占用大概5Mbps。 |
这个性能怎么说 发行版的编译解除了性能限制了吗? cpu是ipq6000 性能与r2s差不多 |
路由器cpu没跑满 |
Queries per second: 111.519395 Average Latency (s): 0.693119 (min 0.008895, max 4.657756) Queries per second: 173.635693 Average Latency (s): 0.561858 (min 0.001413, max 4.971670) Queries per second: 98.943274 Average Latency (s): 0.749780 (min 0.007041, max 3.201713) Average Latency (s): 0.163407 (min 0.022980, max 3.104559) |
通过环境变量设置16线程(4倍cpu) 测试 cpu占用20%左右 |
@eqfae 你的测试结果看不懂,有什么不同? 不一定能跑满,比如没中缓存,上游响慢,他就是创建一个 future 仅仅是占内存,不计算的,会大量的 furue 积压 |
@eqfae 你感兴趣的话,能否建个做 DNS 性能评估的仓库呢?上面的测试,最早的那个,我之前看过,是同一个域名重复了好多万次,这模拟不了实际场景的查询,而且也会被缓存。 最好的测试是,首先可以自建 dnsmasq 作为上游,可负载均衡多个,保证都能及时响应,即上游用于都是可快速响应的;再来评估这个软件,不断增加并发数,看看是不是无法完全利用 CPU。 如果只是和 C 版对比,到简单,直接分别启动对比结果就是了。 |
每次测试重启了dns 为找出最快的 第一次是唯一跑完的 后续都没测完 各种报错 网络都断了重播 所以只发最后的结果 dnsperf -s 10.0.0.1 -p 56 -d direct-list.txt -Q 40000 -c 10000 Statistics: Queries sent: 90143 Response codes: NOERROR 90142 (100.00%) Average Latency (s): 0.276291 (min 0.001056, max 4.381222) 第二次
同时我还有一个问题 就是手机www域名不解析 电脑没开v6没事 我也没测开v6的情况 我已经在路由器关闭了dhcpv6可手机还是有v6地址还不知道在哪关 我认为是手机执着访问v6 而v6禁用dns就给返回空地址出现的 |
你去找分流规则仓库 会有类似的 vscode 搜 $ 正则 替换' A'v4查询 |
|
@eqfae 这数据别人看不懂的,图例要说清楚什么条件测试的。 |
命令 dnsperf -s 10.0.0.1 -p 56 -d direct-list.txt -Q 40000 -c 10000 好像不加参数也不怎样 文件我也发出来了 你不找性能问题 质疑我测试准确性 我没必要伪造数据 只是闲的想找个最快的 adg还开了广告屏蔽
address测试时注释了 二者区别只在于doh doq |
这是现在用的配置 当时54绑在adg上 你改56就是了 |
使用dnspref测试,脚本参考 pymumu/smartdns#1337 (comment)
受cpu性能限制,c++查询效率大约每秒2万次(目标5万次),cpu使用率90%以上 pymumu/smartdns#1337 (comment)
rust版采用相同配置,查询效率大约每秒2百次,cpu使用率约20%。
·测试结果符合预期吗?
·如何提高运行效率(比如更换编译器、静态链接、增加内存)?
The text was updated successfully, but these errors were encountered: