Tweak GC settings, particularly for org & lsp

These two modes are particularly expensive. This needs more
testing.
This commit is contained in:
Henrik Lissner 2020-05-12 19:59:14 -04:00
parent 82ddc86335
commit 717d53c666
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 16 additions and 6 deletions

View file

@ -307,14 +307,14 @@ users).")
;; Adopt a sneaky garbage collection strategy of waiting until idle time to ;; Adopt a sneaky garbage collection strategy of waiting until idle time to
;; collect; staving off the collector while the user is working. ;; collect; staving off the collector while the user is working.
(when doom-interactive-mode (when doom-interactive-mode
(setq gc-cons-percentage 0.6) (setq gcmh-idle-delay 5
gcmh-high-cons-threshold 16777216 ; 16mb
gcmh-verbose doom-debug-mode
gc-cons-percentage 0.6)
(add-transient-hook! 'pre-command-hook (gcmh-mode +1)) (add-transient-hook! 'pre-command-hook (gcmh-mode +1))
(with-eval-after-load 'gcmh (with-eval-after-load 'gcmh
(setq gcmh-idle-delay 10 (setq gc-cons-percentage 0.1)
gcmh-high-cons-threshold 16777216 (add-hook 'focus-out-hook #'gcmh-idle-garbage-collect))
gcmh-verbose doom-debug-mode ; 16mb
gc-cons-percentage 0.1)
(add-hook 'focus-out-hook #'gcmh-idle-garbage-collect)))
;; HACK `tty-run-terminal-initialization' is *tremendously* slow for some ;; HACK `tty-run-terminal-initialization' is *tremendously* slow for some
;; reason. Disabling it completely could have many side-effects, so we ;; reason. Disabling it completely could have many side-effects, so we

View file

@ -462,6 +462,12 @@ relative to `org-directory', unless it is an absolute path."
;; Open directory links in dired ;; Open directory links in dired
(add-to-list 'org-file-apps '(directory . emacs)) (add-to-list 'org-file-apps '(directory . emacs))
;; HACK Org is known to use a lot of unicode symbols (and large org files tend
;; to be especially memory hungry). Compounded with
;; `inhibit-compacting-font-caches' being non-nil, org needs more memory
;; to be performant.
(setq-hook! 'org-mode-hook gcmh-high-cons-threshold (* 2 gcmh-high-cons-threshold))
;; When you create a sparse tree and `org-indent-mode' is enabled, the ;; When you create a sparse tree and `org-indent-mode' is enabled, the
;; highlighting destroys the invisibility added by `org-indent-mode'. ;; highlighting destroys the invisibility added by `org-indent-mode'.
;; Therefore, don't highlight when creating a sparse tree. ;; Therefore, don't highlight when creating a sparse tree.

View file

@ -91,6 +91,10 @@ This also logs the resolved project root, if found, so we know where we are."
;; development builds of Emacs 27 and above ;; development builds of Emacs 27 and above
(or (not (boundp 'read-process-output-max)) (or (not (boundp 'read-process-output-max))
(setq-local read-process-output-max (* 1024 1024))) (setq-local read-process-output-max (* 1024 1024)))
;; REVIEW LSP causes a lot of allocations, with or without Emacs 27+'s
;; native JSON library, so we up the GC threshold to stave off
;; GC-induced slowdowns/freezes.
(setq-local gcmh-high-cons-threshold (* 2 gcmh-high-cons-threshold))
(prog1 (lsp-mode 1) (prog1 (lsp-mode 1)
(setq-local lsp-buffer-uri (lsp--buffer-uri)) (setq-local lsp-buffer-uri (lsp--buffer-uri))
;; Announce what project root we're using, for diagnostic purposes ;; Announce what project root we're using, for diagnostic purposes