From: Trevor Bentley <trevor@trevorbentley.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: fweimer@redhat.com, 43389@debbugs.gnu.org, bugs@gnu.support,
dj@redhat.com, carlos@redhat.com, michael_heerdegen@web.de,
Subject: bug#43389: 28.0.50; Emacs memory leaks using hard disk all time
Date: Wed, 25 Nov 2020 11:22:16 +0100 [thread overview]
Message-ID: <87d001u46f.fsf@mail.trevorbentley.com> (raw)
In-Reply-To: <83d002tuoo.fsf@gnu.org>
Eli Zaretskii <eliz@gnu.org> writes:
>> Some interesting observations:
>> - (garbage-collect) takes forever, like on the order of 5-10
>> minutes, with one CPU core pegged to 100% and emacs frozen.
>
> Is this with the default values of gc-cons-threshold and
> gc-cons-percentage?
Yes, and they're both printed in the logs: threshold 800000,
percentage 0.1.
>> - The leaking stops for a while after (garbage-collect). It
>> was leaking 1MB per second for this last log, and stopped
>> growing after the garbage collection.
>
> Now, what happens in that session once per second (in an
> otherwise idle Emacs, I presume?) to cause such memory
> consumption? Some timers? If you run with a breakpoint in
> malloc that just shows the backtrace and continues, do you see
> what could consume 1MB every second?
Not an idle emacs at all, in this case. I have seen the memory
growth in an idle emacs, but the only one I can reproduce it on is
the emacs-slack one, which is connected to a corporate Slack
account. Tons of short messages streaming in over the network and
being displayed in rotating buffers, with images mixed in. It's a
big 'ol "web 2.0" API... it can easily pass 1MB/s of bloated JSON
messages through. This is one _very active_ emacs.
The original strace logs and valgrind output I posted before
showed a random assortment of calls from gnutls, imagemagick, and
lisp strings, with lisp strings dominating the malloc calls
(enlarge_buffer_text, mostly).
>> Is there any way to get the same info without actually reaping
>> dead references?
>
> What do you mean by "reaping dead references" here?
>
>> It could be that there really were 4.3GB of dead references.
>
> Not sure I understand what are you trying to establish here.
>
GC is running through a list of active allocations and freeing the
ones with no remaining references, right? Presumably, if a lot of
active malloc() allocations are no longer refernced, and
(garbage-collect) calls free() on a bunch of blocks. I'm
wondering how to figure out how much memory a call to
(garbage-collect) has actually freed. Possibly a sort of "dry
run" where it performs the GC algorithm, but doesn't release any
memory.
(I'm very much assuming how emacs memory management works. Please
corect me if I'm wrong.)
> There's only one garbage-collect, it is called for _any_ GC.
>
> What do you mean by "during normal use" in this sentence:
>
> I certainly don't notice 5-10 minute long pauses during normal
> use, though "gcs-done" is incrementing.
>
> How is what you did here, where GC took several minutes,
> different from "normal usage"?
In this log, I am explicitly executing "(garbage-collect)", and it
takes 10 minutes, during which the UI is unresponsive and
sometimes even turns grey when the window stops redrawing.
By "normal use", I mean that I use this emacs instance on-and-off
all day long. I would notice if it were freezing for minutes at a
time, and it definitely is not.
As far as I understand, garbage collection is supposed to happen
automatically during idle. I would certainly notice if it locked
up the whole instance for 10 minutes from an idle GC. I think
this means the automatic garbage collection is either not
happening, or running on a different thread, or being interrupted,
or simply works differently. I have no idea, hence asking you :)
The confusing part is that "gcs-done" increments a lot between my
manual (garbage-collect) calls. It looks like it does about 500
per day. There is no way emacs freezes and pegs a CPU core to max
500 times per day, but it does exactly that every time I manually
execute garbage-collect.
Side note: it inflated to 7670MB overnight. I'm running
(garbage-collect) as I type this, but it has been churning for 30
minutes with the UI frozen, and still isn't done. I'm going to
give up and kill it if it doesn't finish soon, as I kind of need
that 8GB back.
-Trevor
next prev parent reply other threads:[~2020-11-25 10:22 UTC|newest]
Thread overview: 166+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-15 14:55 bug#44666: 28.0.50; malloc-info: Emacs became not responsive, using hard disk all time Jean Louis
2020-11-16 16:11 ` Eli Zaretskii
2020-11-16 16:17 ` Jean Louis
2020-11-17 15:04 ` Eli Zaretskii
2020-11-19 6:59 ` Jean Louis
2020-11-19 14:37 ` bug#43389: 28.0.50; Emacs memory leaks " Eli Zaretskii
2020-11-20 3:16 ` Jean Louis
2020-11-20 8:10 ` Eli Zaretskii
2020-11-22 19:52 ` Jean Louis
2020-11-22 20:16 ` Eli Zaretskii
2020-11-23 3:41 ` Carlos O'Donell
2020-11-23 8:11 ` Jean Louis
2020-11-23 9:59 ` Eli Zaretskii
2020-11-23 17:19 ` Arthur Miller
2020-11-23 17:44 ` Eli Zaretskii
2020-11-23 18:34 ` Arthur Miller
2020-11-23 19:06 ` Jean Louis
2020-11-23 19:15 ` Eli Zaretskii
2020-11-23 19:49 ` Arthur Miller
2020-11-23 20:04 ` Eli Zaretskii
2020-11-23 21:12 ` Arthur Miller
2020-11-24 2:07 ` Arthur Miller
2020-11-23 20:31 ` Jean Louis
2020-11-23 21:22 ` Arthur Miller
2020-11-24 5:29 ` Jean Louis
2020-11-24 8:15 ` Arthur Miller
2020-11-24 9:06 ` Jean Louis
2020-11-24 9:27 ` Arthur Miller
2020-11-24 17:18 ` Jean Louis
2020-11-25 14:59 ` Arthur Miller
2020-11-25 15:09 ` Jean Louis
2020-11-23 13:27 ` Jean Louis
2020-11-23 15:54 ` Carlos O'Donell
2020-11-23 18:58 ` Jean Louis
2020-11-23 19:34 ` Eli Zaretskii
2020-11-23 19:49 ` Jean Louis
2020-11-23 20:04 ` Carlos O'Donell
2020-11-23 20:16 ` Eli Zaretskii
2020-11-23 19:37 ` Carlos O'Donell
2020-11-23 19:55 ` Jean Louis
2020-11-23 20:06 ` Carlos O'Donell
2020-11-23 20:18 ` Jean Louis
2020-11-23 20:31 ` Eli Zaretskii
2020-11-23 20:41 ` Jean Louis
2020-11-23 20:53 ` Andreas Schwab
2020-11-23 21:09 ` Jean Louis
2020-11-24 3:25 ` Eli Zaretskii
2020-11-23 20:10 ` Eli Zaretskii
2020-11-23 19:50 ` Carlos O'Donell
2020-11-23 19:59 ` Jean Louis
2020-11-23 10:59 ` Jean Louis
2020-11-23 15:46 ` Eli Zaretskii
2020-11-23 17:29 ` Arthur Miller
2020-11-23 17:45 ` Eli Zaretskii
2020-11-23 18:40 ` Arthur Miller
2020-11-23 19:23 ` Eli Zaretskii
2020-11-23 19:38 ` Arthur Miller
2020-11-23 19:52 ` Eli Zaretskii
2020-11-23 20:03 ` Arthur Miller
2020-11-23 19:39 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-11-23 19:59 ` Arthur Miller
2020-11-23 20:15 ` Eli Zaretskii
2020-11-23 21:15 ` Arthur Miller
2020-11-23 20:53 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-11-23 18:33 ` Jean Louis
2020-11-23 21:30 ` Trevor Bentley
2020-11-23 22:11 ` Trevor Bentley
2020-11-24 16:07 ` Eli Zaretskii
2020-11-24 19:05 ` Trevor Bentley
2020-11-24 19:35 ` Eli Zaretskii
2020-11-25 10:22 ` Trevor Bentley [this message]
2020-11-25 17:47 ` Eli Zaretskii
2020-11-25 19:06 ` Trevor Bentley
2020-11-25 19:22 ` Eli Zaretskii
2020-11-25 19:38 ` Trevor Bentley
2020-11-25 20:02 ` Eli Zaretskii
2020-11-25 20:43 ` Trevor Bentley
2020-11-25 17:48 ` Carlos O'Donell
2020-11-25 17:45 ` Carlos O'Donell
2020-11-25 18:03 ` Eli Zaretskii
2020-11-25 18:57 ` Carlos O'Donell
2020-11-25 19:13 ` Eli Zaretskii
2020-11-26 9:09 ` Jean Louis
2020-11-26 14:13 ` Eli Zaretskii
2020-11-26 18:37 ` Jean Louis
2020-11-27 5:08 ` Carlos O'Donell
2020-11-25 18:08 ` Jean Louis
2020-11-25 18:51 ` Trevor Bentley
2020-11-25 19:02 ` Carlos O'Donell
2020-11-25 19:17 ` Trevor Bentley
2020-11-25 20:51 ` Carlos O'Donell
2020-11-26 13:58 ` Eli Zaretskii
2020-11-26 20:21 ` Carlos O'Donell
2020-11-26 20:30 ` Eli Zaretskii
2020-11-27 5:04 ` Carlos O'Donell
2020-11-27 7:40 ` Eli Zaretskii
2020-11-27 7:52 ` Eli Zaretskii
2020-11-27 8:20 ` Eli Zaretskii
2020-11-28 9:00 ` Eli Zaretskii
2020-11-28 10:45 ` Jean Louis
2020-11-28 17:49 ` Trevor Bentley
2020-11-30 17:17 ` Trevor Bentley
2020-11-30 18:15 ` Eli Zaretskii
2020-11-30 18:33 ` Trevor Bentley
2020-11-30 19:02 ` Eli Zaretskii
2020-11-30 19:17 ` Jean Louis
2020-12-01 10:14 ` Trevor Bentley
2020-12-01 10:33 ` Jean Louis
2020-12-01 16:00 ` Eli Zaretskii
2020-12-01 16:14 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-12-08 21:50 ` Trevor Bentley
2020-12-08 22:12 ` Carlos O'Donell
2020-12-10 18:45 ` Eli Zaretskii
2020-12-10 19:21 ` Stefan Monnier
2020-12-10 19:33 ` Trevor Bentley
2020-12-10 19:47 ` Stefan Monnier
2020-12-10 20:26 ` Jean Louis
2020-12-10 20:30 ` Jean Louis
2020-12-12 11:20 ` Trevor Bentley
2020-12-12 11:40 ` Eli Zaretskii
2020-12-12 19:14 ` Stefan Monnier
2020-12-12 19:20 ` Eli Zaretskii
2020-12-12 19:46 ` Stefan Monnier
2020-12-12 19:51 ` Eli Zaretskii
2020-12-12 20:14 ` Trevor Bentley
2020-12-12 22:16 ` Michael Heerdegen
2020-12-13 3:34 ` Eli Zaretskii
2020-12-13 10:20 ` Trevor Bentley
2020-12-13 15:30 ` Eli Zaretskii
2020-12-13 19:34 ` Trevor Bentley
2020-12-13 19:38 ` Eli Zaretskii
2020-12-13 19:59 ` Trevor Bentley
2020-12-13 20:21 ` Eli Zaretskii
2020-12-13 20:41 ` Trevor Bentley
2020-12-14 3:24 ` Eli Zaretskii
2020-12-14 21:24 ` Trevor Bentley
2021-01-20 12:02 ` Trevor Bentley
2021-01-20 12:08 ` Trevor Bentley
2021-01-20 14:53 ` Stefan Monnier
2021-01-20 15:32 ` Eli Zaretskii
2021-01-20 15:40 ` Stefan Monnier
2020-09-12 2:12 ` bug#43395: 28.0.50; memory leak Madhu
2020-09-14 15:08 ` Eli Zaretskii
2020-09-15 1:23 ` Madhu
[not found] ` <handler.43395.D43389.161115724232582.notifdone@debbugs.gnu.org>
2021-02-06 16:25 ` bug#43389: bug#43395: closed Madhu
2021-03-21 14:10 ` Madhu
2021-01-20 15:49 ` bug#43389: 28.0.50; Emacs memory leaks using hard disk all time Trevor Bentley
2020-12-10 20:24 ` Jean Louis
2020-12-12 1:28 ` Jean Louis
2020-12-12 8:49 ` Andreas Schwab
2020-12-03 6:30 ` Jean Louis
2020-11-28 17:31 ` Trevor Bentley
2020-11-27 15:33 ` Eli Zaretskii
2020-12-08 22:15 ` Carlos O'Donell
2020-11-25 19:01 ` Carlos O'Donell
2020-11-26 12:37 ` Trevor Bentley
2020-11-26 14:30 ` Eli Zaretskii
2020-11-26 15:19 ` Trevor Bentley
2020-11-26 15:31 ` Eli Zaretskii
2020-11-27 4:54 ` Carlos O'Donell
2020-11-27 8:44 ` Jean Louis
2020-11-26 18:25 ` Jean Louis
2020-11-27 4:55 ` Carlos O'Donell
2020-11-23 3:35 ` Carlos O'Donell
2020-11-23 11:07 ` Jean Louis
2020-11-19 7:43 ` bug#44666: 28.0.50; malloc-info: Emacs became not responsive, " Jean Louis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d001u46f.fsf@mail.trevorbentley.com \
--to=trevor@trevorbentley.com \
--cc=43389@debbugs.gnu.org \
--cc=bugs@gnu.support \
--cc=carlos@redhat.com \
--cc=dj@redhat.com \
--cc=eliz@gnu.org \
--cc=fweimer@redhat.com \
--cc=michael_heerdegen@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).