microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
161.74k stars 28.44k forks source link

How to Determine RAM Consumption Performance Issues? #190618

Closed ctsstc closed 1 year ago

ctsstc commented 1 year ago

Type: Performance Issue

My machine says there's two processes using up 15GB each of RAM, yet when I open the VSCode Process Explorer it shows there's barely any RAM being consumed. I've checked through the "Performance Issues" article but it mentions nothing about RAM/memory. via: https://github.com/Microsoft/vscode/wiki/Performance-Issues

I was hoping to determine the source of the issue before restarting and losing it.

image

VS Code version: Code 1.81.1 (Universal) (6c3e3dba23e8fadc360aed75ce363ba185c49794, 2023-08-09T22:20:33.924Z) OS version: Darwin arm64 22.3.0 Modes:

System Info |Item|Value| |---|---| |CPUs|Apple M1 Pro (8 x 24)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: disabled_off
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
metal: disabled_off
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|10, 9, 9| |Memory (System)|16.00GB (0.03GB free)| |Process Argv|--crash-reporter-id 70026821-dffa-44d0-829d-9cbf64e429ea| |Screen Reader|no| |VM|0%|
Process Info ``` CPU % Mem MB PID Process 31 147 99223 code main 8 66 99229 gpu-process 0 16 99230 utility-network-service 36 98 99309 shared-process 0 16 99312 ptyHost 0 0 1722 /bin/zsh -il 0 0 1882 zsh ./start.sh 0 0 1883 mdbook serve --open --port 8088 0 0 3652 /bin/zsh -il 115 0 99315 extensionHost [3] 113 0 99320 extensionHost [7] 0 0 99962 ```
Workspace Info ``` | Window (some-file.ts ā€” some-api) | Window (readme.md ā€” some-book) | Folder (some-api): 5947 files | File types: ts(1946) map(1512) js(763) html(642) sql(149) json(20) | graphql(20) zsh(13) log(12) yaml(8) | Conf files: package.json(3) github-actions(2) dockerfile(2) | tsconfig.json(2) launch.json(1) settings.json(1) | Launch Configs: node(4) | Folder (some-book): 514 files | File types: png(148) md(88) html(86) msd(30) jpg(26) woff2(12) js(11) | DS_Store(10) css(9) json(2) | Conf files: settings.json(1); ```
Extensions (99) Extension|Author (truncated)|Version ---|---|--- terraform|4op|0.2.5 better-comments|aar|3.0.2 vscode-javascript-repl|ach|0.7.4 commit-message-editor|ada|0.25.0 vscode-sql-formatter|adp|1.4.4 vscode-css-formatter|aes|1.0.2 project-manager|ale|12.7.0 jest-snippets|and|1.9.1 tailwind-docs|aus|2.1.0 markdown-preview-github-styles|bie|2.0.2 vscode-intelephense-client|bme|1.9.5 vscode-tailwindcss|bra|0.9.12 phpserver|bra|3.0.2 vscode-opennewinstance|chr|0.0.12 path-intellisense|chr|2.8.4 vscode-css-modules|cli|0.5.1 gitignore|cod|0.9.0 dart-code|Dar|3.70.0 flutter|Dar|3.70.0 vscode-eslint|dba|2.4.2 githistory|don|0.6.20 gitlens|eam|14.2.1 EditorConfig|Edi|0.16.4 prettier-vscode|esb|10.1.0 figma-vscode-extension|fig|0.2.7 html-slim-scss-css-class-completion|gen|1.7.8 copilot|Git|1.103.338 vscode-github-actions|git|0.26.1 vscode-pull-request-github|Git|0.70.0 live-sass|gle|6.1.0 gc-excelviewer|Gra|4.2.58 vscode-graphql|Gra|0.8.17 vscode-graphql-execution|Gra|0.2.4 vscode-graphql-syntax|Gra|1.2.2 todo-tree|Gru|0.0.226 terraform|has|2.27.1 vscode-git-tags|how|1.4.4 dart-data-class-generator|hzg|0.5.4 reg|ion|1.1.0 vscode-env|Iro|0.1.0 vscode-edit-csv|jan|0.8.1 hungry-delete|jas|1.7.0 svg|joc|1.5.3 workspace-terminals|jos|0.3.2 blockman|leo|1.7.5 flutter-intl|loc|1.19.3 go-to-spec|Lou|0.1.3 call-graph|Luo|1.1.2 rainbow-csv|mec|3.7.0 vscode-language-babel|mgm|0.0.39 git-graph|mhu|1.30.0 dotenv|mik|1.0.1 vscode-scss|mrm|0.10.0 vscode-docker|ms-|1.26.0 remote-ssh|ms-|0.102.0 remote-ssh-edit|ms-|0.86.0 remote-wsl|ms-|0.81.0 live-server|ms-|0.4.9 remote-explorer|ms-|0.4.1 test-adapter-converter|ms-|0.1.8 vsliveshare|ms-|1.0.5877 vsliveshare-pack|ms-|0.4.0 sqltools|mtx|0.28.0 php-docblocker|nei|2.7.0 vscode-auto-restart-typescript-eslint-servers|neo|0.0.5 gremlins|nho|0.26.0 react-proptypes-intellisense|OfH|1.0.3 docthis|oou|0.8.2 vscode-jest|Ort|5.2.3 vscode-versionlens|pfl|1.5.0 excalidraw-editor|pom|3.5.1 prisma|Pri|5.1.0 vscode-thunder-client|ran|2.10.2 vscode-rapidapi-client|Rap|1.10.2 vscode-services|rap|1.0.2 typescript-hero|rbb|3.0.0 vscode-xml|red|0.26.1 vscode-yaml|red|1.14.0 LiveServer|rit|5.7.9 flutter-riverpod-snippets|rob|1.2.2 vscode-coverage-gutters|rya|2.11.0 vscode-scss-formatter|sib|3.0.0 cody-ai|sou|0.6.7 code-spell-checker|str|2.20.5 vscode-stylelint|sty|1.2.4 svelte-vscode|sve|107.10.0 sass-indented|syl|1.8.27 vscode-open-in-github|sys|1.17.2 even-better-toml|tam|0.19.2 vscode-status-bar-format-toggle|tom|3.1.1 errorlens|use|3.13.0 vscode-icons|vsc|12.5.0 volar|Vue|1.8.8 vscode-todo-highlight|way|1.0.5 change-case|wma|1.0.0 pretty-ts-errors|yoa|0.5.1 markdown-pdf|yza|1.4.4 markdown-all-in-one|yzh|3.5.1 php-intellisense|zob|1.3.2
A/B Experiments ``` vsliv368cf:30146710 vsreu685:30147344 python383:30185418 vspor879:30202332 vspor708:30202333 vspor363:30204092 vswsl492:30256859 vslsvsres303:30308271 vserr242:30382549 pythontb:30283811 vsjup518:30340749 pythonptprofiler:30281270 vshan820:30294714 vstes263:30335439 vscorecescf:30445987 vscod805:30301674 binariesv615:30325510 bridge0708:30335490 bridge0723:30353136 vsaa593cf:30376535 pythonvs932:30410667 py29gd2263:30792226 vsclangdf:30486550 c4g48928:30535728 dsvsc012cf:30540253 pynewext54:30695312 azure-dev_surveyone:30548225 vsccc:30803844 282f8724:30602487 89544117:30613380 a9j8j154:30646983 showlangstatbar:30737416 03d35959:30757346 pythonfmttext:30731395 pythoncmv:30756943 fixshowwlkth:30771522 showindicator:30805244 pythongtdpath:30769146 i26e3531:30792625 gsofa:30804715 pythonnosmt12:30797651 pythonidxpt:30805730 pythonnoceb:30805159 dsvsc013:30795093 dsvsc014:30804076 ```
Tyriar commented 1 year ago

The PIDs say that they're extension hosts, so the problem is one or more of your 99 (šŸ¤Æ) extensions. You'll want to use the extension bisect explained in https://github.com/Microsoft/vscode/wiki/Performance-Issues#run-with-extensions-disabled to diagnose this.

ctsstc commented 1 year ago

If this is an intermittent issue I do not have time to bisect extensions over days, or hope that this issue arises again, there must be a way to check what plugin/extension is causing this, or at least limit it down to some subset of extensions. It hasn't come back since restarting VSCode & my system.

It just seems odd to me that the process explorer shows I'm barely utilizing anything. That seems irrepresentative of the reality that something related to VSCode is using up plenty of RAM.

I understand that tracking down RAM consumption can be problematic to pinpoint when it's potentially shared memory, but it seems that documentation doesn't explain how to track it down.

Maybe this should be a feature request then?

I imagine this isn't impossible given that Chrome has a way to expose extension resource consumption in its task manager. I know it's obviously not the same code, but I figured they're both likely electron based or must be built upon some of the same fundamentals/infrastructure.

Tyriar commented 1 year ago

The memory not showing up is a bug, but it's pretty low priority as the built-in process manager is primary a tool for the team https://github.com/microsoft/vscode/issues/190687

Unfortunately the fastest way to check which extension is the problem is via the extension bisect since all extensions share a single extension host and we cannot measure which extension is taking up how much memory/cpu.

ctsstc commented 1 year ago

Thanks for the explanation and opening up a new ticket šŸ‘