microsoft / vscode

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

Poor display/interaction performance on 4k linux #177530

Open aivanov61 opened 1 year ago

aivanov61 commented 1 year ago

Type: Bug

Run VScode on linux through VNC server on a large (4k) monitor and make the VScode window large (or full-screen).

VS Code version: Code 1.76.2 (ee2b180d582a7f601fa6ecfdad8d9fd269ab1884, 2023-03-14T17:57:21.103Z) OS version: Linux x64 4.12.14-122.136-default Modes: Sandboxed: Yes

System Info |Item|Value| |---|---| |CPUs|Intel(R) Xeon(R) W-3245 CPU @ 3.20GHz (16 x 3200)| |GPU Status|2d_canvas: unavailable_software
canvas_oop_rasterization: disabled_off
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: disabled_software
multiple_raster_threads: enabled_on
opengl: disabled_off
rasterization: disabled_software
raw_draw: disabled_off_ok
skia_renderer: enabled_on
video_decode: disabled_software
video_encode: disabled_software
vulkan: disabled_off
webgl: unavailable_software
webgl2: unavailable_software
webgpu: disabled_off| |Load (avg)|0, 0, 0| |Memory (System)|754.27GB (727.33GB free)| |Process Argv|--crash-reporter-id 95dd5f91-34fa-4080-af84-d533df9dd511| |Screen Reader|no| |VM|0%| |DESKTOP_SESSION|undefined| |XDG_CURRENT_DESKTOP|undefined| |XDG_SESSION_DESKTOP|undefined| |XDG_SESSION_TYPE|undefined|
Extensions (17) Extension|Author (truncated)|Version ---|---|--- gitlens|eam|13.4.0 intellij-idea-keybindings|k--|1.5.7 vsc-python-indent|Kev|1.18.0 isort|ms-|2022.8.0 python|ms-|2023.4.1 vscode-pylance|ms-|2023.3.20 jupyter|ms-|2023.2.1200692131 vscode-jupyter-cell-tags|ms-|0.1.8 vscode-jupyter-slideshow|ms-|0.1.5 cmake-tools|ms-|1.13.45 cpptools|ms-|1.14.4 cpptools-extension-pack|ms-|1.3.0 code-spell-checker|str|2.20.1 cmake|twx|0.0.17 intellicode-api-usage-examples|Vis|0.2.7 vscodeintellicode|Vis|1.2.30 vim|vsc|1.25.2 (1 theme extensions excluded)
A/B Experiments ``` vsliv368cf:30146710 vsreu685:30147344 python383cf:30185419 vspor879:30202332 vspor708:30202333 vspor363:30204092 vslsvsres303:30308271 pythonvspyl392:30443607 vserr242:30382549 pythontb:30283811 vsjup518:30340749 pythonptprofiler:30281270 vshan820:30294714 vstes263:30335439 vscorecescf:30445987 pythondataviewer:30285071 vscod805:30301674 binariesv615:30325510 bridge0708:30335490 bridge0723:30353136 cmake_vspar411:30581797 vsaa593cf:30376535 pythonvs932:30410667 cppdebug:30492333 vsclangdc:30486549 c4g48928:30535728 dsvsc012cf:30540253 pynewext54:30681850 azure-dev_surveyone:30548225 pyindex848:30662994 nodejswelcome1cf:30587006 2e4cg342:30602488 pyind779:30671433 89544117:30613380 pythonsymbol12:30671437 vsctsb:30677850 pythonb192cf:30669361 functionswalk:30687959 pythonms35cf:30686773 ```
aivanov61 commented 1 year ago

Hi @deepak1556, what's the status of this issue?

aivanov61 commented 1 year ago

Profile-20230421T170501.zip

aivanov61 commented 1 year ago

BTW, I'm noticing very high Cumulative Layout Shift (for example, CLS score is 1.229)

deepak1556 commented 1 year ago

Can you check if the issue repros with our latest insiders version https://code.visualstudio.com/insiders ?

aivanov61 commented 1 year ago

I downloaded the latest insiders version; the issue repros with it. I ran the developer too profiler, captured a trace, but when I tried to save the Profile so I could upload it here, VSCode hung. Please let me know if you need me to try to save a Profile with this version again. BTW, performance seemed to be worse on this insiders version. Thanks!

deepak1556 commented 1 year ago

Can you try with hardware acceleration disabled in the application https://code.visualstudio.com/updates/v1_40#_disable-gpu-acceleration

aivanov61 commented 1 year ago

It is already disabled (you can see in previous logs) because I am running on a server farm which doesn't have any GPUs. I also explicitly ran with (and am now running with) --disable-gpu and there is no difference.

scff015504:/<4>nvl/clones/te-simics.sles12> ( /nfs/site/disks/aivanov_fw_01/tools/VSCode-linux-x64/bin/code-insiders --status) Fontconfig warning: "/etc/fonts/fonts.conf", line 86: unknown element "blank" [21455:0424/090339.060707:ERROR:bus.cc(399)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [21455:0424/090339.060756:ERROR:bus.cc(399)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [21455:0424/090339.127962:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable. [21489:0424/090339.187449:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). [21489:0424/090339.187527:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Unsupported GLX version (requires at least 1.3). [21489:0424/090339.187550:ERROR:gl_display.cc(920)] eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED, trying next display type [21489:0424/090339.189039:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). [21489:0424/090339.189086:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Unsupported GLX version (requires at least 1.3). [21489:0424/090339.189109:ERROR:gl_display.cc(920)] eglInitialize OpenGLES failed with error EGL_NOT_INITIALIZED [21489:0424/090339.189130:ERROR:gl_ozone_egl.cc(23)] GLDisplayEGL::Initialize failed. [21489:0424/090339.193649:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization [21520:0424/090339.265309:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). [21520:0424/090339.265385:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Unsupported GLX version (requires at least 1.3). [21520:0424/090339.265411:ERROR:gl_display.cc(920)] eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED, trying next display type [21520:0424/090339.266721:ERROR:angle_platform_impl.cc(43)] Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). ERR: Display.cpp:1004 (initialize): ANGLE Display::initialize error 12289: Unsupported GLX version (requires at least 1.3). [21520:0424/090339.266762:ERROR:gl_display.cc(508)] EGL Driver message (Critical) eglInitialize: Unsupported GLX version (requires at least 1.3). [21520:0424/090339.266783:ERROR:gl_display.cc(920)] eglInitialize OpenGLES failed with error EGL_NOT_INITIALIZED [21520:0424/090339.266803:ERROR:gl_ozone_egl.cc(23)] GLDisplayEGL::Initialize failed. [21520:0424/090339.271629:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization [21567:0424/090339.306114:WARNING:sandbox_linux.cc(380)] InitializeSandbox() called with multiple threads in process gpu-process. [21567:0424/090339.308193:ERROR:gpu_memory_buffer_support_x11.cc(44)] dri3 extension not supported. Version: Code - Insiders 1.78.0-insider (3a69e153f6c68b2b855fb2f1e5bdb798a16a1ee4, 2023-04-24T05:21:12.188Z) OS Version: Linux x64 4.12.14-122.136-default CPUs: Intel(R) Xeon(R) Gold 6336Y CPU @ 2.40GHz (48 x 2400) Memory (System): 1007.23GB (896.15GB free) Load (avg): 3, 3, 2 VM: 0% Screen Reader: no Process Argv: --disable-gpu /nfs/site/disks/aivanov_fw_01/nvl/clones/te-simics.sles12 --crash-reporter-id 5f8559e4-b021-4b9d-83cd-02f53e7b218d GPU Status: 2d_canvas: unavailable_software canvas_oop_rasterization: disabled_off direct_rendering_display_compositor: disabled_off_ok gpu_compositing: disabled_software multiple_raster_threads: enabled_on opengl: disabled_off rasterization: disabled_software raw_draw: disabled_off_ok video_decode: disabled_software video_encode: disabled_software vulkan: disabled_off webgl: unavailable_software webgl2: unavailable_software webgpu: disabled_off

CPU % Mem MB PID Process 0 0 16879 code-insiders main 0 0 16882 zygote 0 0 16913 gpu-process 0 0 16883 zygote 0 0 16885 zygote 0 0 16970 window [1] (tsc_manager.cpp - te-simics.sles12 - Visual Studio Code - Insiders) 0 0 16955 utility-network-service 0 0 16991 extensionHost [1] 0 0 17002 shared-process 0 0 17048 ptyHost 0 0 17003 fileWatcher [1] 0 0 17122 utility-process

Workspace Stats: | Window (tsc_manager.cpp - te-simics.sles12 - Visual Studio Code - Insiders) | Folder (te-simics.sles12): 993 files | File types: cmake(189) o(66) c(42) py(40) pyc(37) h(33) txt(31) cpp(17) | so(17) simics(8) | Conf files: cmake(189) github-actions(2) settings.json(1)

deepak1556 commented 1 year ago

The GL errors might be the root cause, can you try running with --use-gl=swiftshader

aivanov61 commented 1 year ago

scff015504:/<4>nvl/clones/te-simics.sles12> ( /nfs/site/disks/aivanov_fw_01/tools/VSCode-linux-x64/bin/code-insiders --use-gl=swiftshader & ) scff015504:/<4>nvl/clones/te-simics.sles12> Warning: 'use-gl' is not in the list of known options, but still passed to Electron/Chromium.

Issue repros.

I think fundamentally the issue is that chromium on Linux without GPU does not perform well. Unfortunately, I do now know how to get a comprehensive list of options/env variables that I can play with to help performance. I suspect that I need to increase some memory limit since I don't see any huge CPU usage going on.

aivanov61 commented 1 year ago

Hi Deepak - any update on this?

deepak1556 commented 1 year ago

Can you check the following,

1) Does the issue repro when you use https://vscode.dev in a chromium browser over the same VNC setup ? 2) Does the issue repro with our exploration build code-exploration-x64

aivanov61 commented 1 year ago

The problem repos on both 1 (native Linux chromium @ https://vscode.dev) & 2 (code-exploration).

In addition, though, code-exploration is linked against a different Linux kernel (we use SuSE version 12), so I get the follow error: [main 2023-05-02T18:39:31.728Z] Error: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /nfs/site/disks/aivanov_fw_01/tools/VSCode-linux-x64-exploration/resources/app/node_modules.asar.unpacked/@vscode/sqlite3/build/Release/vscode-sqlite3.node)

deepak1556 commented 1 year ago

Thanks for testing, given it still repros with latest chromium can you help file an issue in https://bugs.chromium.org/p/chromium/issues/list using https://vscode.dev/ as repro.

aivanov61 commented 1 year ago

I filed Chromium issue: https://bugs.chromium.org/p/chromium/issues/detail?id=1442310

aivanov61 commented 11 months ago

What is the current status of this issue? Even the latest VScode (1.84.2) is still unbearably slow on native Linux with no GPU and full 4k screen.