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/