Patch tweaked and applied.

Given the rate of good changes coming in, I'm not going to make the final 2.88 release this weekend. Let's give it a few more days to settle.


Cheers,

Simon.


On 25/11/2022 13:11, Petr Menšík wrote:
When looking what this change did, I have noticed mark_servers() cleanup of local_domains is using serv->next after it has freed serv. Use additional variable just like in cleanup_servers().

Patch attached.

On 11/21/22 23:22, Simon Kelley wrote:
Thanks for this. It was in my mind that vary large number of domains would be --local=/domain/ or --address=/domain/, not forwarding to servers.

I've applied something that looks very like your patch, but with cosmetic code changes.

Cheers,

Simon.


On 20/11/2022 05:50, Ye Zhou wrote:
Hi all,

I'm attaching a patch to optimize a speed issue introduced in version 2.86.

I have two ISP upstreams and need to forward different sites to different ISP's DNS providers. For example:

server=/meituan.com/114.114.114.114 <http://meituan.com/114.114.114.114>
... (lots of records)
server=/taobao.com/223.5.5.5 <http://taobao.com/223.5.5.5>
... (lots of records)

It works well before v2.86. Since v2.86 the configuration load time becomes extremely long (more than 1 minutes to load all server records). The time consuming part is inside the rewritten domain-match.c. When adding a new server record, the code will traverse all existing records so the configuration load becomes quadratic time complexity. The issue still persists on v2.88rc3. This patch will optimize the config load time by bypassing the time consuming code block. During the config load mark_servers() will never be called so does not need to waste time on the record traversal and re-order part.

Before:
dnsmasq --test  77.50s user 0.30s system 99% cpu 1:17.84 total
After:
dnsmasq --test  0.16s user 0.02s system 99% cpu 0.188 total

https://gist.github.com/zhouye/adfd509f51645d314f53992331449c45 <https://gist.github.com/zhouye/adfd509f51645d314f53992331449c45>


_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss


_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to