microsoft / vscode

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

Janky scrolling terminal #192630

Closed digitarald closed 11 months ago

digitarald commented 11 months ago

Type: Performance Issue

My terminal scrolls janky even with a just a few pages of text content.

Has been going on for a while now, but I don't remember it bring always so bad.

renderRows in webgl render takes nearly half a second, then a 3s commit for painting. Chrome DevTools didn't allow me to save the trace, but I can try again.

image

VS Code version: Code - Insiders 1.83.0-insider (e073d674f38acbf855e6b2c0d8f4fe29cb2a8c83, 2023-09-08T09:09:03.905Z) OS version: Darwin x64 22.6.0 Modes:

System Info |Item|Value| |---|---| |CPUs|Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz (16 x 2400)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: disabled_off
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
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|4, 4, 4| |Memory (System)|64.00GB (0.12GB free)| |Process Argv|--log trace --crash-reporter-id 4cf0a6f0-aaf8-4da3-9b2b-81f6c639c12b| |Screen Reader|no| |VM|0%|
Process Info ``` CPU % Mem MB PID Process 26 459 39363 code-insiders main 23 131 39366 gpu-process 0 66 39367 utility-network-service 0 721 39371 window [3] (~/Library/Application Support/Code - Insiders/User — blogpost-api) 0 66 39387 ptyHost 0 0 52437 /usr/local/bin/zsh -il 0 0 52446 /usr/local/bin/zsh -il 0 0 64671 /usr/local/bin/zsh -il 0 0 64680 /usr/local/bin/zsh -il 0 66 71210 npm start 0 66 71222 node /Users/digitarald/Developer/createWorkspace/react-todo-list/node_modules/.bin/react-scripts start 0 393 71223 /usr/local/Cellar/node@18/18.17.1/bin/node /Users/digitarald/Developer/createWorkspace/react-todo-list/node_modules/react-scripts/scripts/start.js 0 66 71249 /usr/local/Cellar/node@18/18.17.1/bin/node --max-old-space-size=2048 /Users/digitarald/Developer/createWorkspace/react-todo-list/node_modules/fork-ts-checker-webpack-plugin/lib/typescript-reporter/reporter/TypeScriptReporterRpcService.js 0 66 71250 /usr/local/Cellar/node@18/18.17.1/bin/node --max-old-space-size=2048 /Users/digitarald/Developer/createWorkspace/react-todo-list/node_modules/fork-ts-checker-webpack-plugin/lib/typescript-reporter/reporter/TypeScriptReporterRpcService.js 0 0 65342 /usr/local/bin/zsh -il 0 0 65351 /usr/local/bin/zsh -il 30 262 39389 shared-process 2 0 72654 /bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command= 0 0 40255 utility-process 0 66 52368 fileWatcher [3] 0 590 52370 extensionHost [3] 0 66 52377 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/formulahendry.auto-rename-tag-0.1.10/packages/server/dist/serverMain.js --node-ipc --clientProcessId=52370) 0 66 52407 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/dbaeumer.vscode-eslint-2.4.2/server/out/eslintServer.js --node-ipc --clientProcessId=52370) 0 131 52409 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /var/folders/cq/2lmpsmc53m500qtgyyrlzhz80000gn/T/vscode-typescript501/c52f51a18ee748e291f9/tscancellation-f93599ac54c71675f11b.tmp* --globalPlugins typescript-vue-plugin-bundle --pluginProbeLocations /Users/digitarald/.vscode-insiders/extensions/vue.vscode-typescript-vue-plugin-1.8.10 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 131 52410 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /var/folders/cq/2lmpsmc53m500qtgyyrlzhz80000gn/T/vscode-typescript501/c52f51a18ee748e291f9/tscancellation-6ca76e3bf20430353d68.tmp* --globalPlugins typescript-vue-plugin-bundle --pluginProbeLocations /Users/digitarald/.vscode-insiders/extensions/vue.vscode-typescript-vue-plugin-1.8.10 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 66 52412 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/typingsInstaller.js --globalTypingsCacheLocation /Users/digitarald/Library/Caches/typescript/5.3 --enableTelemetry --typesMapLocation /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/typesMap.json --validateDefaultNpmLocation) 0 66 52430 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/vue.volar-1.8.1/server.js --node-ipc --clientProcessId=52370) 0 66 52433 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/vue.volar-1.8.1/server.js --node-ipc --clientProcessId=52370) 0 66 52562 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/json-language-features/server/dist/node/jsonServerMain --node-ipc --clientProcessId=52370) 51 1245 54253 window [4] (src — react-todo-list) 0 66 54254 fileWatcher [4] 0 655 54255 extensionHost [4] 0 66 54260 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/formulahendry.auto-rename-tag-0.1.10/packages/server/dist/serverMain.js --node-ipc --clientProcessId=54255) 0 131 64611 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/vue.volar-1.8.1/server.js --node-ipc --clientProcessId=54255) 0 131 64612 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/vue.volar-1.8.1/server.js --node-ipc --clientProcessId=54255) 0 131 64630 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/json-language-features/server/dist/node/jsonServerMain --node-ipc --clientProcessId=54255) 0 131 64651 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /var/folders/cq/2lmpsmc53m500qtgyyrlzhz80000gn/T/vscode-typescript501/bb2b42202c9a0d49bf4a/tscancellation-b5edacc59e2e26b02617.tmp* --globalPlugins typescript-vue-plugin-bundle --pluginProbeLocations /Users/digitarald/.vscode-insiders/extensions/vue.vscode-typescript-vue-plugin-1.8.10 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 262 64652 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /var/folders/cq/2lmpsmc53m500qtgyyrlzhz80000gn/T/vscode-typescript501/bb2b42202c9a0d49bf4a/tscancellation-224bfa7f2c2034b5d783.tmp* --globalPlugins typescript-vue-plugin-bundle --pluginProbeLocations /Users/digitarald/.vscode-insiders/extensions/vue.vscode-typescript-vue-plugin-1.8.10 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 66 64661 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/typingsInstaller.js --globalTypingsCacheLocation /Users/digitarald/Library/Caches/typescript/5.3 --enableTelemetry --typesMapLocation /Users/digitarald/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-5.3.20230907/node_modules/typescript/lib/typesMap.json --validateDefaultNpmLocation) 0 66 64653 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Users/digitarald/.vscode-insiders/extensions/dbaeumer.vscode-eslint-2.4.2/server/out/eslintServer.js --node-ipc --clientProcessId=54255) 0 66 64662 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/css-language-features/server/dist/node/cssServerMain --node-ipc --clientProcessId=54255) 0 66 64663 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/markdown-language-features/server/dist/node/workerMain --node-ipc --clientProcessId=54255) 0 66 65887 electron-nodejs (/Applications/Visual Studio Code - Insiders.app/Contents/Frameworks/Code - Insiders Helper (Plugin).app/Contents/MacOS/Code - Insiders Helper (Plugin) --ms-enable-electron-run-as-node /Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/extensions/html-language-features/server/dist/node/htmlServerMain --node-ipc --clientProcessId=54255) 0 197 64628 window 13 918 69759 window 0 131 69772 utility-process 56 66 72652 window [5] (Issue Reporter) ```
Workspace Info ``` | Window (src — react-todo-list) | Window (~/Library/Application Support/Code - Insiders/User — blogpost-api) | Folder (react-todo-list): 21 files | File types: js(6) css(4) json(2) eslintrc(1) gitignore(1) md(1) html(1) | Conf files: package.json(1) | Folder (blogpost-api): 13 files | File types: ts(5) json(2) md(1) | Conf files: package.json(1) tsconfig.json(1); ```
Extensions (68) Extension|Author (truncated)|Version ---|---|--- html-snippets|abu|0.2.1 Bookmarks|ale|13.4.1 tsl-problem-matcher|amo|0.6.2 docs-view|bie|0.0.11 emojisense|bie|0.10.0 github-markdown-preview|bie|0.3.0 markdown-checkbox|bie|0.4.0 markdown-emoji|bie|0.3.0 markdown-footnotes|bie|0.1.1 markdown-preview-github-styles|bie|2.0.2 markdown-yaml-preamble|bie|0.1.0 esbuild-problem-matchers|con|0.0.2 vscode-eslint|dba|2.4.2 kusto|don|0.4.4 EditorConfig|Edi|0.16.4 prettier-vscode|esb|10.1.0 auto-close-tag|for|0.5.14 auto-rename-tag|for|0.1.10 codespaces|Git|1.15.1 copilot|Git|1.110.395 copilot-chat|Git|0.8.2023090801 remotehub|Git|0.61.2023081601 vscode-github-actions|git|0.26.2 vscode-pull-request-github|Git|0.73.2023090809 github-security-alerts|los|0.0.4 cortex-debug|mar|1.12.0 debug-tracker-vscode|mcu|0.0.15 memory-view|mcu|0.0.24 peripheral-viewer|mcu|1.4.6 rtos-views|mcu|0.0.7 theme-monokai-pro-vscode|mon|1.2.1 vscode-azurefunctions|ms-|1.12.4 vscode-azureresourcegroups|ms-|0.7.5 vscode-docker|ms-|1.26.0 vscode-dotnet-runtime|ms-|1.7.2 isort|ms-|2023.11.12061012 python|ms-|2023.17.12511005 vscode-pylance|ms-|2023.9.11 jupyter|ms-|2023.8.1002501831 jupyter-keymap|ms-|1.1.2 jupyter-renderers|ms-|1.0.17 remote-containers|ms-|0.311.0 remote-ssh|ms-|0.107.2023090815 remote-ssh-edit|ms-|0.86.0 remote-wsl|ms-|0.81.2 anycode|ms-|0.0.72 azure-account|ms-|0.11.5 azure-repos|ms-|0.37.2023082201 cpptools|ms-|1.17.5 live-server|ms-|0.4.9 remote-repositories|ms-|0.38.1 remote-server|ms-|1.5.2023082209 vscode-github-issue-notebooks|ms-|0.0.129 vscode-markdown-notebook|ms-|0.0.26 vscode-selfhost-test-provider|ms-|0.3.17 vscode-typescript-next|ms-|5.3.20230907 vsliveshare|ms-|1.0.5883 vscode-jest|Ort|6.0.1 vscode-xml|red|0.26.1 vscode-yaml|red|1.14.0 kuskus-kusto-syntax-highlighting|ros|1.2.0 cody-ai|sou|0.11.1694185615 rest-book|tan|6.2.1 fugio|Tyl|0.0.4 vscode-mdx|uni|1.4.0 volar|Vue|1.8.1 vscode-typescript-vue-plugin|Vue|1.8.10 markdown-all-in-one|yzh|3.5.1 (1 theme extensions excluded)
A/B Experiments ``` vsliv695:30137379 vsins829:30139715 vsliv368cf:30146710 vsreu685:30147344 python383cf:30185419 vspor879:30202332 vspor708:30202333 vspor363:30204092 vslsvsres303:30308271 pythontb:30258533 pythonptprofiler:30281269 vshan820:30294714 vscod805:30301674 bridge0708:30335490 bridge0723:30353136 vsaa593:30376534 pythonvs932:30404738 py29gd2263:30784851 vscaac:30438845 vsclangdf:30492506 c4g48928:30535728 dsvsc012cf:30540253 pynewext54:30618038 a9j8j154:30646983 showlangstatbar:30737417 7ij38806:30687742 pythonfmttext:30716741 fixshowwlkth:30771523 showindicator:30805243 pythongtdpath:30726887 i26e3531:30792625 welcomedialogc:30812479 pythonnosmt12:30779711 pythonidxpt:30768918 pythonnoceb:30776497 copilotsettingc:30808720 asynctok:30821568 dsvsc013:30777762 dsvsc014:30777825 diffeditorv2:30786206 pythonlinttypecf:30823782 pythonmhint1:30815193 dsvsc015:30821418 pythontestfixt:30826906 pythonfb280951:30830809 ```
meganrogge commented 11 months ago

does enabling terminal.integrated.smoothScrolling help @digitarald ?

@Tyriar I notice that's off by default, should we change that?

Tyriar commented 11 months ago

@meganrogge smooth scrolling's default matches that in the editor. This looks unrelated to smooth scroll though.

Tyriar commented 11 months ago

@digitarald do you have trace logging on? If so this is known and expected for now.

meganrogge commented 11 months ago

I was wondering if smooth scrolling would improve things, which is why I suggested he try that.

Is it off by default for the terminal and editor bc it has performance implications or why?

Tyriar commented 11 months ago

@meganrogge it was added after the initial release, I remember myself not wanting it on by default. While it does make things feel smoother, vscode could also be perceived as slower. There are also performance implications as smooth scrolling ends up rendering a lot more frames = more battery usage.

Tyriar commented 11 months ago

I'll remove the noisy trace logging