On Mon, Aug 11, 2025 at 02:34:56AM +0000, Ryan Kozak wrote:

On 2025-08-10 10:40, Michael Crute via NANOG <nanog@lists.nanog.org> wrote:

The CPython interpreter does still have a global interpreter lock as well which causes thread synchronization on data access. You can mitigate this somewhat by running multiple instances of a server or asynchronous programming techniques but it still has a pretty substantial performance impact on highly concurrent systems. This is why most people scaling Python do so horizontally. I'd personally avoid something like Python for DNS or at least load test it very carefully before using it in production.

This is not necessarily true anymore. As of Python 3.13 the GIL is now optional, though it defaults to enabled. They are slowly working towards flipping that.

While they're definitely working towards a lock-free world it's still very early and experimental. It's in a rather recently (Oct 2024) release of Python, default disabled and hidden behind a flag (--disable-gil). Also, to quote the 3.13 docs "expect some bugs and a substantial single-threaded performance hit". I would also venture a guess that DNS software written in Python will probably also need to be updated to break its GIL-based assumptions. Not saying you can't run production DNS on a Python server stack but you definitely should understand how to effectively scale Python apps and load test it carefully otherwise you're in for some uncomfortable surprises. You should also probably not run it in GIL-free mode just yet.

~mike
_______________________________________________
NANOG mailing list https://lists.nanog.org/archives/list/nanog@lists.nanog.org/message/KQTA74AOY5ZK76DX5B73MF7K5HIBN4AO/

Reply via email to