[nsd-users] Run-time effects of new SIMD code

Jeroen Koekkoek jeroen at nlnetlabs.nl
Wed Jul 17 14:57:12 UTC 2024


Hi Anand, Stuart,

That is indeed correct. At runtime the CPUID instruction is used to
detect which extensions are offered and it chooses based on that. When
compiling on x86_64 with SSE4.2 and AVX2 enabled, the binary will
actually contain 3 parsers, the most optimal one is used at runtime.

Optimized versions can be disabled with --disable-westmere (SSE4.2) and
--disable-haswell (AVX2) if desired btw.

Note that "sub-optimal" is still a couple times faster than 4.9
(parsing, does not translate to zone loading in 1-1 fashion yet, but
we'll get to that :-)).

Best regards,
Jeroen


On Wed, 2024-07-17 at 14:57 +0100, Stuart Henderson via nsd-users
wrote:
> On 2024/07/17 15:47, Anand Buddhdev via nsd-users wrote:
> > Hi NSD developers,
> > 
> > I've been following recent discussion and activity around building
> > NSD 4.10, triggered by build
> > failure in Homebrew. I see that you added some code to detect more
> > things and adjust the build
> > based on what type of processor is detected.
> > 
> > If one were to build NSD on an x86_64 CPU with Haswell
> > architecture, and then run this build on
> > another x86_64 CPU that doesn't have that architecture, will NSD
> > not run, or will it crash, or
> > will it silently use sub-optimal code?
> 
> Looking at the code, it's using runtime detection based on checking
> cpuid results, so it should use whatever is the most optimal for the
> cpu
> on the machine where it runs.
> 
> _______________________________________________
> nsd-users mailing list
> nsd-users at lists.nlnetlabs.nl
> https://lists.nlnetlabs.nl/mailman/listinfo/nsd-users



More information about the nsd-users mailing list