
Responses inline below. -eric On Tue, Feb 22, 2022 at 7:22 PM Inada Naoki <songofacandy@gmail.com> wrote:
For a recent example, see https://mail.python.org/archives/list/python-dev@python.org/message/B77BQQFD....
It is not proven example, but just a hope at the moment. So option is fine to prove the idea.
Although I can not read the code, they said "patching ASLR by patching `ob_type` fields;". It will cause CoW for most objects, isn't it?
So reducing memory write don't directly means reducing CoW. Unless we can stop writing on a page completely, the page will be copied.
Yeah, they would have to address that.
CPU cache invalidation exists regardless. With the current GIL the effect it is reduced significantly.
It's an interesting point. We can not see the benefit from pypeformance, because it doesn't use much data and it runs one process at a time. So the pyperformance can not make enough stress to the last level cache which is shared by many cores.
We need multiprocess performance benchmark apart from pyperformance, to stress the last level cache from multiple cores. It helps not only this PEP, but also optimizing containers like dict and set.
+1
Can proposed optimizations to eliminate the penalty guarantee that every __del__, weakref are not broken, and no memory leak occurs when the Python interpreter is initialized and finalized multiple times? I haven't confirmed it yet.
They will not break __del__ or weakrefs. No memory will leak after finalization. If any of that happens then it is a bug.
FWIW, I filed an issue to remove hash cache from bytes objects. https://github.com/faster-cpython/ideas/issues/290
Code objects have many bytes objects, (e.g. co_code, co_linetable, etc...) Removing it will save some RAM usage and make immortal bytes truly immutable, safe to be shared between interpreters.
+1 Thanks!