"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

Reply via email to