bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#45200: [PATCH] Force Glibc to free the memory freed


From: martin rudalics
Subject: bug#45200: [PATCH] Force Glibc to free the memory freed
Date: Wed, 3 Feb 2021 10:35:48 +0100

>> Does anyone really disable GC and get away with it?
>
> Sure. There's for example this post¹, which is probably where I got the idea to only 
run GC on idle from. The question is highly upvoted, it has 4k views, and the only positive 
answer basically says "it's okay as long as you got memory" (well, I got memory), 
and notes that there's also a point in only disabling GC during startup. Similar advice to 
only disable it during startup has this pretty upvoted reddit post²
>
> Here's another example³, except in this case the author only disables GC 
while they're inside minibuffer, and enables it back upon exiting. This then got 
propogated here as well⁴
>
> On top of that, there are countless advices on just increasing the 
`gc-cons-threshold` (not inifitely increasing, just making some sane larger 
value), that would surely reinforce an idea of just making GC run only on idle, if 
one ever comes across such advice or just figures it out.

What I meant was if people really disabled GC for the rest of their
session and got away with it.  But that was only a rhetorical question
to which the answer is clearly no.  All the examples you cite have a
culprit - an application that produces too much garbage.  Identifying
those applications would be much better than working around them by
disabling GC, for example, while a user is in a minibuffer dialog.  That
latter case even must have an easy to identify responsible, just that
nobody cares.  And remember that every cons eventually collected must
have been allocated first.  We always pay twice here.

> First of, so far the impact seemed to be small. If one ever comes to
> blame the new feature, they surely should have actual measurements to
> support that hypothesis.

Hardly.  Sometimes we're lucky as in the "The Emacs master is much
slower than the emacs-27 branch" thread.  More often we're not.

> Second, most importantly, what `malloc_trim(0)` does is it restores
> the correct behavior. I mean, what's the point of ever freeing memory
> if it's not freed, right? The problem we're dealing here with is an
> actual bug in glibc⁵. What this implies is that if the fix indeed
> hurts performance someplace, well, then it's that this place requires
> additional performance-related fixes. As opposed to just ignoring the
> bug because of performance got somewhere decreased. Things like,
> changing the slow algorithm, or modifying GC behavior for specific
> usecases…

The important use case IMO is:

- A user detects, maybe after many hours of use, that memory consumption
  increases.

- The user switches on your option and if memory consumption now
  decreases, there's at least a first workaround.

Personally, I never care about Emacs consuming RAM.  On my machine,
Firefox dwarfs everything else in this regard.

martin






reply via email to

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