如何监控 Emacs 的响应度?

比像我的桌面右下角的 multiload-ng

image

五个图分别表示

  1. CPU 占用
  2. 内存和缓存
  3. 网络
  4. CPU 温度
  5. GPU 占用

右边还有 multiload-ng 未包含的系统负载和当前 CPU 频率

说这么多是因为今天我在 Emacs 中使用 Meow 模态编辑一个 Python 项目的时候,随着时间的推移,逐渐感到操作变得不流畅,具体测量方式:

  1. 使用 o 键选取文本
  2. 使用 C-g 取消选中文本

当时发现这个动作 1 和 2 之间需要等待一小段时间才能成功取消选中文本,重启 Python 的 jedi lsp server 并无改善。

当时右下角的系统监控一切正常,系统处于很低的负载下。

重启 Emacs 之后,效果立竿见影, 1 和 2 步骤想按多快按多快。

所以我想有没有一个方式能监控当前 Emacs 从按下按键到 Emacs 进入空闲等待的时间毫秒数。方便调查 Emacs 什么时候开始变卡顿,进而大致确定什么原因导致卡顿。

感觉卡的时候profiler-start,重复卡的操作之后profiler-stop看是哪个函数占用cpu内存最多一般就是了

3 个赞

再遇到卡了决定这样尝试。

当时有这个想法还是因为,一开时我以为这个卡顿是我错觉,Emacs用了这么久,对这些影响手感的操作都是听之任之,所以想找个监控的办法。

如果代码没写好的话一般都是hook引起的,如代码写好了话,一般就是数据量大的时候GC导致的卡顿。