[nsd-users] NSD zonec performance patches
Martin Svec
martin.svec at zoner.cz
Wed Mar 31 15:43:05 UTC 2010
Hi Matthijs,
thank you for accepting the patches. In these days we finalize a
migration of our nameservers from Bind9 to NSD. There are still some
problems with NSD for domain service providers like us, but Bind9 has
its own problems too -- and I really like the clean and simple design of
NSD :-). I send our remarks and suggestions to the list as soon as our
nameservers will be successfully switched to NSD. (And maybe more
patches, I have at least two now -- one that disables xfrd daemon and
the other that aggregates bind8 stats over all server processes.)
Best regards
Martin
Matthijs Mekking napsal(a):
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Martin,
>
> I have looked at your patches and they look good. Here is what I did
> with them:
>
> - - I have applied the b64_pton patch without modification.
>
> - - I have made the mmap patch configurable. You can enable it at build
> time, with --enable-mmap. I have marked it experimental. By default off.
>
> - - I have applied the parse-token-leaks patch the way it is.
>
> - - I did not do the adaptive-rrtype-lookup patch. It changes lookup
> behavior in favor of frequently used rrtypes. However, it's not clear to
> me if this benefit the future lookups in all cases. In some cases it
> might perform worse (for example zones sorted on rrtype).
>
> The applied patches are now in trunk. Before releasing, they will
> undergo another round of reviewing.
>
> Thank you very much for your effort!
>
> Best regards,
>
> Matthijs
>
> Martin Svec wrote:
>
>> Hi Matthijs, Paul,
>>
>> I send you two more patches that slightly improve zonec performance.
>>
>> (a) parse-token-leaks.patch -- avoids unused calls of region_strdup and
>> zoctet in parse_token. I believe it also fixes a memory leak in zonec.
>>
>> (b) adaptive-rrtype-lookup.patch -- tries to improve O(n) complexity of
>> rrtype_destriptor_by_name(). Because I didn't want to rewrite
>> rrtype_descriptors table from scratch, I added another table containing
>> pointers to named rrtype_descriptors. In this table, frequently used rr
>> types are automatically moved forward, which reduces the overall number
>> of strcasecmp comparisons.
>>
>> The patches are public domain, without any guarantees ;-) They improve
>> compilation time by few percents, depending on the contents of zone files.
>>
>> Unfortunately, I see no more room for (micro)optimizations in zonec.
>> With all my patches, the profile looks as follows:
>>
>> 32.96% zonec /usr/sbin/zonec [.] yylex
>> 9.19% zonec /usr/sbin/zonec [.] yyparse
>> 6.35% zonec /usr/sbin/zonec [.] label_compare
>> 4.76% zonec /usr/sbin/zonec [.] write_data_crc
>> 3.55% zonec /usr/sbin/zonec [.] b64_pton
>> 3.47% zonec /usr/sbin/zonec [.] parse_token
>> 3.24% zonec /lib64/libc-2.10.1.so [.] memcpy
>> 2.49% zonec /usr/sbin/zonec [.] dname_compare
>> 2.33% zonec /lib64/libc-2.10.1.so [.] __strcasecmp
>> 1.98% zonec /lib64/libc-2.10.1.so [.] _IO_file_xsputn
>> 1.86% zonec /lib64/libc-2.10.1.so [.] _IO_fwrite
>>
>> Yylex seems to be a great candidate for optimization, but most of its
>> time is spent in the innermost loop generated by lex. The same holds for
>> yyparse. And the other functions are below 6%...
>>
>> Best regards
>> Martin
>>
>>
>>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iQEcBAEBAgAGBQJLs1ZhAAoJEA8yVCPsQCW5/5gH/0Oa8kUgIk7C+c7pA29c6r6o
> 5zkChsyX83dVwfnPhtvvOdbbk1rG/RRuiTBYtMRnmyrPZmueXJ/O+8rIO/MdLv1n
> YeHXQaus7aPdb58c9r+rZy0tpbFqow2V1Zj03io7RdFsDIYCfUFnh1E2ap9DUF1/
> zMOD2+S/KvhIJASTg20+2YMBzVfqhA3TGj/VnG5MFqbab0/cUnfXLz8CMyM3WNF2
> HsvTfub3DWvtUzpBAy8md6v+xnNIz4JSdxl80rht0NhSzx4HbTk491/9JhUem46c
> Wf3YX/4WUduAtoVSDGFB2ZKV+Z6xgZoZXnmUDwnCuRYpVEEnsP5/zDWsuraljqA=
> =G56M
> -----END PGP SIGNATURE-----
>
More information about the nsd-users
mailing list