-
Notifications
You must be signed in to change notification settings - Fork 248
Description
I was reading https://blogs.gentoo.org/mgorny/2025/11/30/one-jobserver-to-rule-them-all/ on global / system jobservers (using the gnu make jobserver protocol as it has fairly wide support) and it noted upon xdist missing that.
It's definitely an issue I have observed when i mix workloads (e.g. multiple large test suites run in parallel, plus native compilation on the side), currently I try to eyeball my CPU graph to see how I'm doing and if I have more headroom but it would definitely be useful to be able to use jobservers to allow workers to coordinate.
https://github.com/tommilligan/pytest-jobserver exists, however it notes that it is not able to call into existing jobservers because the xdist protocol does not support sending jobserver info, so I'm assuming this requires updates to xdist itself. It also does not support the "windows jobserver" method.
Further jobserver resources:
-
https://make.mad-scientist.net/papers/jobserver-implementation/
-
https://www.chiark.greenend.org.uk/doc/make-doc/make.html/Integrating-make.html
provides a unified view of https://www.gnu.org/software/make/manual/html_node/Job-Slots.html + https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html which are the "official" docs
-
Add a GNU make jobserver implementation to Cargo rust-lang/cargo#4110
Of note: as the essay calls out, while the jobserver protocol calls out for a fifo this is probably something to either not check or extend: in order to mitigate common failure modes, the system-wide jobserver implementations use other file types (regular file via FUSE or character device via CUSE). Make itself does not check the file type.