VSCode のプロファイリング
VSCode を利用している際に、メモリ使用量が高くなることがある。その際に、どの拡張機能がメモリを多く消費しているのかを調査するために、メモリプロファイリングを行ったので、その備忘録を残す。
プロファイリングの方法
プロファイリングを行うための方法を 2 つ紹介する。
code --status
1 つ目の方法は、code --status
をターミナルで実行するというもの。実行すると、メモリ使用率や CPU 使用率などが表示される。
実行結果 |
---|
| Version: Code 1.96.0 (138f619c86f1199955d53b4166bef66ef252935c, 2024-12-11T02:29:09.626Z)
OS Version: Darwin arm64 23.5.0
CPUs: Apple M1 Pro (8 x 2400)
Memory (System): 32.00GB (2.56GB free)
Load (avg): 3, 3, 3
VM: 0%
Screen Reader: no
Process Argv: --crash-reporter-id 8e233b69-3003-47f6-9c3d-510b54f9ecaf
GPU Status: 2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off
CPU % Mem MB PID Process
2 229 32674 code main
0 66 32677 gpu-process
0 33 32678 utility-network-service
0 360 32679 window [1] (12.md — Untitled (Workspace))
1 262 32680 window [2] (settings.json — .ssh)
0 66 32711 ptyHost
0 0 32937 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -il
0 0 32938 /bin/zsh -il
0 0 32940 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -il
0 0 41234 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -i
0 0 41512 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -i
0 0 43188 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -i
0 0 43471 /Users/<USER_NAME>/.local/share/devbox/global/default/.devbox/nix/profile/default/bin/zsh -i
0 131 32712 shared-process
0 66 32713 fileWatcher [2]
3 950 32935 extensionHost [2]
0 66 33059 electron-nodejs (languageserver.js )
0 66 33061 electron-nodejs (server.js )
0 66 33077 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/json-language-features/server/dist/node/jsonServerMain --node-ipc --clientProcessId=32935
0 98 33331 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Users/<USER_NAME>/.vscode/extensions/streetsidesoftware.code-spell-checker-4.0.21/packages/_server/dist/main.cjs --node-ipc --clientProcessId=32935
0 33 35050 electron-nodejs (server.js )
0 33 35051 electron-nodejs (server.js )
0 0 35059 /Users/<USER_NAME>/.vscode/extensions/hashicorp.terraform-2.34.1-darwin-arm64/bin/terraform-ls serve
0 66 35106 electron-nodejs (server-node.js )
0 262 41094 electron-nodejs (server.js )
0 66 42406 /Users/<USER_NAME>/Library/Application Support/cloud-code/cloudcode_cli/cloudcode_cli/darwin_arm64/cloudcode_cli duet -logtostderr
0 131 34097 window [3] (Process Explorer)
0 66 41180 fileWatcher [1]
0 590 43102 extensionHost [1]
0 0 43144 /Users/<USER_NAME>/.vscode/extensions/ms-python.python-2024.22.0-darwin-arm64/python-env-tools/bin/pet server
0 66 43155 electron-nodejs (languageserver.js )
0 98 43156 electron-nodejs (server.js )
0 66 43157 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/markdown-language-features/dist/serverWorkerMain --node-ipc --clientProcessId=43102
0 66 43180 electron-nodejs (server.js )
0 66 43284 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/json-language-features/server/dist/node/jsonServerMain --node-ipc --clientProcessId=43102
0 33 43290 /Users/<USER_NAME>/.vscode/extensions/hashicorp.terraform-2.34.1-darwin-arm64/bin/terraform-ls serve
0 33 43377 /Users/<USER_NAME>/dev/Nishikoh.github.io/.venv/bin/python /Users/<USER_NAME>/.vscode/extensions/ms-python.python-2024.22.0-darwin-arm64/python_files/run-jedi-language-server.py
0 66 43604 electron-nodejs (server-node.js )
0 98 43613 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) /Users/<USER_NAME>/.vscode/extensions/streetsidesoftware.code-spell-checker-4.0.21/packages/_server/dist/main.cjs --node-ipc --clientProcessId=43102
0 66 43747 /Users/<USER_NAME>/Library/Application Support/cloud-code/cloudcode_cli/cloudcode_cli/darwin_arm64/cloudcode_cli duet -logtostderr
Workspace Stats:
| Window (settings.json — .ssh)
| Window (12.md — Untitled (Workspace))
| Folder (.ssh): 12 files
| File types: pub(4) pem(2) old(1)
| Conf files:
| Folder (zenn): 26 files
| File types: md(15) keep(2) json(2) gitignore(1) py(1)
| Conf files: package.json(1)
| Folder (dotfiles): 39 files
| File types: zsh(9) sh(5) gitignore(2) json(2) md(2) txt(2) toml(1)
| gitconfig(1) yml(1) latexmkrc(1)
| Conf files: github-actions(1) settings.json(1) dockerfile(1)
| Folder (ai-lab): 6084 files
| File types: py(1755) pyc(715) pyi(571) png(232) so(209) md(192) tf(157)
| json(128) yaml(120) hcl(75)
| Conf files: dockerfile(76) github-actions(23) devcontainer.json(4)
| makefile(3)
| Folder (Nishikoh.github.io): 19378 files
| File types: svg(13436) py(1357) dat(1045) pyc(569) html(369) md(338)
| js(142) txt(81) css(40) typed(39)
| Conf files: github-actions(1) package.json(1)
|
Process Explorer
もう 1 つの方法は、Process Explorer
を利用する方法。メニューのHelp
-> Open Process Explorer
から開くことができる。
拡張機能の ON/OFF
拡張機能タブの 3 点リーダーからDisable All Installed Extensions
を選択することで、全ての拡張機能を無効にできる。有効にする場合は、Enable All Installed Extensions
を選択する。
インストール済みの拡張機能を有効なものだけに絞って表示できるし、無効なものだけに絞って表示することもできる。このあたりの機能を使うと、パフォーマンスの問題が発生している拡張機能を特定しやすい。