emacs-devel
[Top][All Lists]
Advanced

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

Re: MPS experiment successful


From: Gerd Möllmann
Subject: Re: MPS experiment successful
Date: Wed, 17 Apr 2024 16:30:42 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Eli Zaretskii <eliz@gnu.org> writes:

>> That's all. There is nothing more. And I'm currently undecided how to
>> proceed with this.
>
> The next step would be to push a feature branch into the Emacs Git
> repository and let people try the branch on the other supported
> platforms.  If the code is not yet mature enough for that, please
> suggest how to get from here to there.

I think technically it could be done, but there are some things that
would need to be done. From the top of my head:

- CL packages vs. obarrays (I do have packages but no obarrays)
- Handling of pure space
- Handling the new JSON stuff, which I don't have in my branch, I think.
- ...

And then of course the general work of getting a branch from a what is
basically a fork back to the forked repo, which I'm not so sure how to
go about that.

But my undecidedness comes more from what could come after that. I'm not
sure how willing I am to invest what can be years to get things
finished, esp. if no one else starts working on it. Had that one time
too often in the 90s, some might remember ;-).

> Would you like to describe in a few words what would be the advantages
> and disadvantages of this GC for Emacs?

Advantages for users:

For the user it means the final end to GC pauses. MPS runs in a
different thread wich can be in a different core.

What MPS means for the overall speed of Emacs I find impossible to say.
MPS doesn't seem to be slow at all though, although some slowdown can be
expected in the client because of thread-safe allocations.

Example for a confusing fact that I noticed today:

Full build without MPS, -O0, checking

real    26:20.01
user    1:32:15.54
sys     3:20.74

Same build with debug MPS (-lmps-debug)

real    14:07.90
user    44:17.94
sys     3:15.99

That's on an 2,3 GHz Quad-Core Intel Core i7, 16G RAM, SSD. 🤷

Possible advantages for developers of Emacs:

- MPS is thread-safe, i.e. it's a tiny step in that direction.
- I think igc.c is easier to understand that alloc.c.

Disadvantages:

As long as there are 2 GCs, there are 2 instead of 1 GC :-).

Will increase memory usage in its current state, part of which could be
optimized.

Some configurations/platform might not be possible to support. Hard to
say.

...

Let me also attach a badly written and curated Org file that I have in
that branch. Maybe that has some additional answers

Attachment: igc.org
Description: igc.org


reply via email to

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