This package collects Emacs garbage collection (GC) statistics over time
and saves it in the format that can be shared with Emacs maintainers.
Context:
• <https://yhetil.org/emacs-devel/20230310110747.4hytasakomvdyf7i@Ergus/>
• <https://yhetil.org/emacs-devel/87v8j6t3i9.fsf@localhost/>
See the source code for information how to contact the author.
1 Usage
═══════
Add
┌────
│ (require 'emacs-gc-stats)
│ ;; Optionally reset Emacs GC settings to default values (recommended)
│ (setq emacs-gc-stats-gc-defaults 'emacs-defaults)
│ ;; Optionally set reminder to upload the stats after 3 weeks.
│ (setq emacs-gc-stats-remind t) ; can also be a number of days
│ ;; Optionally disable logging the command names
│ ;; (setq emacs-gc-stats-inhibit-command-name-logging t)
│ (emacs-gc-stats-mode +1)
└────
to your init file to enable the statistics acquiring.
When you are ready to share the results, run `M-x
emacs-gc-stats-save-session' and then share the saved
`emacs-gc-stats-file' (defaults to `~/.emacs.d/emacs-gc-stats.eld') by
sending an email attachment to <mailto:emacs-gc-stats@gnu.org>. You
can review the file before sharing–it is a text file.
Configure `emacs-gc-stats-remind' to make Emacs display a reminder
about sharing the results.
2 Security considerations
═════════════════════════
This package *does not* upload anything automatically. You will need
to upload the data manually, by sending email attachment. If
necessary, you can review `emacs-gc-stats-file' (defaults to
`~/.emacs.d/emacs-gc-stats.eld') before uploading–it is just a text
file.
The following data is being collected after every command:
• GC settings `gc-cons-threshold' and `gc-cons-percentage'
• Emacs version and whether Emacs framework (Doom, Prelude, etc) is
used
• Whether `gcmh-mode' is used
• Idle time and Emacs uptime
• Available OS memory (see `memory-info')
• Emacs memory allocation/GC stats
• Current command name (potentially sensitive data, can be disabled)
• Timestamp when every GC is finished
Logging the command names can be disabled by setting
`emacs-gc-stats-inhibit-command-name-logging' customization.
What exactly is being logger is controlled by
`emacs-gc-stats-setting-vars', `emacs-gc-stats-command-vars', and
`emacs-gc-stats-summary-vars'.
You can use `M-x emacs-gc-stats-clear' to clear the currently
collected session data.
You can pause the logging any time by disabling `emacs-gc-stats-mode'
(`M-x emacs-gc-stats-mode').
3 News
══════
3.1 Version 1.3
───────────────
• New customization: `emacs-gc-stats-inhibit-command-name-logging' to
disable logging current command name. Logging is enabled by
default.
• New customization: `emacs-gc-stats-remind' to set a reminder to
share the data. Reminder is disabled by default.
• The data being collected is can now be customized using
`emacs-gc-stats-setting-vars', `emacs-gc-stats-command-vars', and
`emacs-gc-stats-summary-vars'.