[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MPS: Loaded pdump

From: Gerd Möllmann
Subject: MPS: Loaded pdump
Date: Thu, 09 May 2024 12:52:03 +0200

I feel more and more that the handling of the loaded pdump with MPS as
it is now is not sustainable, and would like ask you for your ideas.

What we do now is make the hot part of the dump an ambig root. I don't
remember the exact numbers, but I think that's about 18 Mb of root. This
has at least these problems, from my POV:

- It is very large, and every time MPS scans roots, and that is all the
  time, the world is stopped until it has finished. That's not good for
  pause times.

- The root is ambiguous, so everything found in it is pinned in memory.
- The root is unstructured. We can't scan exactly, and so can't do
  anything special for pointers to non-MPS memory that Lisp objects
  have. This leads to some horrible workarounds.

I knew that early on, but I thought maybe we could get away with it. But
now the latest workaround for compilation units let's me think this
won't fly.

So, what to do now? I think we should consider what Helmut also
mentioned some mails ago: copy the object graph in the dump to MPS
memory. Everything else looks almost not worth it to me.

This has of course also consequences:

- copying 18 Mb of hot objects + 12 Mb or so of leaf objects to MPS
  could be slow. No idea if it is. That could impact startup time (not
  important to me at all, but people have different preferences).

- copying the graph requires that the copying functions know the layout
  of Lisp objects so that the functions can exchange references in the
  old graph to the corresponding ones in the new graph. I'm getting
  exhausted already from thinking of writing such functions, and we
  don't have C++ templates to help.

- AFAIK, but see admin/igc.org, there is no good way of allocating
  objects in an old generation, so they will maybe take some time to
  wander to an older generation.

Enough rambling.

Ideas, opinions, ...?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]