"Stephen J. Turnbull" <turnbull.stephen...@u.tsukuba.ac.jp> writes:
> Дилян Палаузов writes: > > > Do you know by accident, if the runner processes use identical > > memory, and by > > calling https://man7.org/linux/man-pages/man2/madvise.2.html the > > kernel can somehow detect these identical memory and then use a > > single instance for all identical regions of memory? > > The memory size is a side effect of the way fork works (formally, it > creates a new process by duplicating the old one, what "really" > happens is up to the CPU's MMU and the kernel's memory management). I > believe that as long as copy-on-write is enabled it only actually > copies pages with changes. But currently Mailman3 does fork+exec, so it doesn't get to share the parent's pages. I experimented with fork-and-dont-exec [0], but the results were underwhelming, because reference counting can cause pages to diverge. Surprisingly, gc.freeze didn't seem to help much, so there may have been issues beyond the reference counts. 0: https://gitlab.com/mailman/mailman/-/merge_requests/1093 I think Python just doesn't support sharing code across processes well. Best, Justus _______________________________________________ Mailman-Developers mailing list -- mailman-developers@python.org To unsubscribe send an email to mailman-developers-le...@python.org https://mail.python.org/mailman3/lists/mailman-developers.python.org/ Mailman FAQ: https://wiki.list.org/x/AgA3 Security Policy: https://wiki.list.org/x/QIA9