emacs中间歇性占据CPU 100%的问题,求方案

如图,每天大约5-10次,每次持续10秒到1分钟左右。发生没有征兆,似乎也没有周期性。不知道有没有人遇到类似问题? 或者有没有什么办法来定位?用profiler的话,因为很久不出现,出现后再看profiler,可能看不出来问题在哪。

补充:i7-4790CPU,16G内存。ubuntu-18.04-LTS 使用过emacs 26.3稳定版和emacs master版本,均出现相同问题。

major-mode: c++-mode

minor-mode:

(global-linum-mode linum-mode csv-align-mode csv-field-index-mode dired-isearch-filenames-mode highlight-symbol-nav-mode highlight-symbol-mode hide-ifdef-mode ws-butler-global-mode ws-butler-mode winner-mode xref-etags-mode show-paren-mode global-display-line-numbers-mode display-line-numbers-mode helm-gtags-mode company-search-mode global-company-mode company-mode dired-omit-mode projectile-mode compilation-minor-mode compilation-shell-minor-mode ibuffer-auto-mode dired-utils-format-information-line-mode dired-du-mode dired-hide-dotfiles-mode pyim-isearch-mode super-save-mode helm-mode helm-ff--delete-async-modeline-mode edebug-mode helm-popup-tip-mode helm-autoresize-mode helm-display-line-numbers-mode helm--remap-mouse-mode helm--minor-mode helm-migemo-mode ido-everywhere evil-magit-toggle-text-minor-mode magit-blame-read-only-mode magit-blame-mode magit-blob-mode global-magit-file-mode magit-file-mode magit-wip-initial-backup-mode magit-wip-before-change-mode magit-wip-after-apply-mode magit-wip-after-save-mode magit-wip-after-save-local-mode magit-wip-mode which-function-mode smerge-mode diff-minor-mode diff-auto-refine-mode magit-auto-revert-mode global-auto-revert-mode auto-revert-tail-mode auto-revert-mode transient-resume-mode git-commit-mode global-git-commit-mode dired-hide-details-mode mml-mode mail-abbrevs-mode shell-command-with-editor-mode with-editor-mode async-bytecomp-package-mode server-mode undo-tree-visualizer-selection-mode global-undo-tree-mode undo-tree-mode global-reveal-mode reveal-mode flyspell-mode ispell-minor-mode shell-dirtrack-mode evil-mode evil-local-mode rectangle-mark-mode url-handler-mode cl-old-struct-compat-mode tooltip-mode global-eldoc-mode eldoc-mode electric-quote-mode electric-layout-mode electric-indent-mode mouse-wheel-mode tool-bar-mode paragraph-indent-minor-mode global-prettify-symbols-mode prettify-symbols-mode use-hard-newlines tab-bar-history-mode tab-bar-mode menu-bar-mode file-name-shadow-mode horizontal-scroll-bar-mode jit-lock-debug-mode global-font-lock-mode font-lock-mode blink-cursor-mode window-divider-mode completion-in-region-mode auto-composition-mode unify-8859-on-decoding-mode unify-8859-on-encoding-mode auto-encryption-mode auto-compression-mode temp-buffer-resize-mode visible-mode buffer-read-only size-indication-mode column-number-mode line-number-mode auto-fill-function global-visual-line-mode visual-line-mode transient-mark-mode next-error-follow-minor-mode auto-save-visited-mode auto-save-mode auto-fill-mode abbrev-mode overwrite-mode view-mode hs-minor-mode)

什么配置,紫薯布丁

原贴已补充,感谢回复

我想问什么Emacs配置,当然你发了电脑配置也很好。

呃,我补充下

目前没有看出什么对性能特别影响的minor-mode,如果用了语法检查,可能flycheck调用外部checker会占用大量CPU。

如果实在忍不了,可以使用二分调bug法(注释一半,然后重启)

没有用flycheck。实再不行只能用二分调试法了:rofl:

M-x report-emacs-bug 可以搜集环境信息

提一句,linum性能不好,可以用自带的display-line-numbers-mode代替

超过5000行就别显示行号了。

其实平时用到行号的机会也不多,需要跳转的话M-g M-g就行了

飙上去的时候, emacs 有没有卡住?是不是在 GC(乃 GC 的那个设置了多大?

我分了16GB给 emacs,午夜 GC 时间可能到5min(也就是飙到 100% 卡住5min

1 个赞

做了如下调整: 1,GC由2GB调整到500MB 2,去掉行号显示

目前使用这么多天,没发现再有100%的情况,不确定是哪条配置起效的。

大概率是GC太大的原因,linum-mode性能不好也不至于 CPU100%。