以下の内容はhttps://pyopyopyo.hatenablog.com/entry/2024/10/20/090000より取得しました。


Emacsが重たい原因を調べる方法

Emacs が重たいときの原因を調べる方法をまとめます

メモリ使用量の確認

M-x memory-report でメモリ使用量のレポートが表示できます

レポートは *Memory report* というバッファに表示されます.バッファ上で "g" を押すとレポートが更新されるので,随時"g"を押すだけでメモリ使用量の増減が確認できます

CPU使用量の確認

M-x profiler-start でプロファイラが起動できます

プロファイラには動作Modeが3つあり,

  • cpuのみ
  • memoryのみ
  • cpuとmemoryの両方

の使用状況を収集できます

収集した使用状況は,M-x profiler-report で集計できます

集計結果は,ツリー形式で表示されます

     8,284,674  45% + #<byte-code-function 922>
      5,672,525  31% + #<byte-code-function 9AC>
      3,090,255  16% + command-execute
      (以下略)

たとえばこの場合は 1行目の部分で全体の45%が使用されています

1行目にカーソルをあわせて,エンターキーを押すと,ツリーのノードが展開されます

     8,284,674  45% - #<byte-code-function 922>
      8,281,922  45%  + git-gutter:update-diffinfo
          2,752   0%  + git-gutter:process-diff-output
      5,672,525  31% + #<byte-code-function 9AC>
      3,090,255  16% + command-execute
    (以下略)

この場合は,git-gutter が45%消費していたことが判りました

ファイルI/Oの確認(Linuxのみ)

straceコマンドを使うと,Emacsがどのファイルを読み書きしているかが判ります

まずは ps コマンドなどをつかって,Emacs のPID(プロセス番号)をしらべます

$ ps awx

PIDがわかったら,PIDを指定して strace コマンドを実行します

$ strace -p PID  -o logfile.txt 

これで logfile.txt に Emacsが実行してるシステムコールのログが出力されます

がそれぞれ発行されるので, logfile.txt から上記のシステムコールの状況をみれば
どのファイルへのI/Oが発生しているのかが確認できます




以上の内容はhttps://pyopyopyo.hatenablog.com/entry/2024/10/20/090000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14