"Stephen J. Turnbull" <[email protected]> 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 -- [email protected]
To unsubscribe send an email to [email protected]
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