Skip to content

High CPU usage #23921

Closed as not planned
Closed as not planned
@nickpetrovic

Description

@nickpetrovic

Type: Performance Issue

Behaviour

CPU usage should be minimal. Ideally less than 5%.

These pyenv-which and pyenv-exec processes are spawned as soon as VSCode is opened. Takes a few minutes before they start hitting 100%. They also never terminate when you completely close VSCode. Manually terminating the processes then restarting VSCode will do the same thing over again.

Steps to reproduce:

  1. Open VSCode
  2. Open a Python project or two
  3. Make sure the Python extension is enabled
  4. Wait about 5 minutes for your CPU to be pegged
  5. Kill VSCode, observe the pyenv-exec processes with ms-python.vscode-pylance in the -I argument
  6. Reopen VSCode and now more of the same processes are running, but CPU is completely pegged

Diagnostic data

Output for Python in the Output panel (ViewOutput, change the drop-down the upper-right of the Output panel to Python)

XXX

Extension version: 2024.13.2024080701
VS Code version: Code 1.92.0 (b1c0a14de1414fcdaa400695b4db1c0799bc3124, 2024-07-31T23:26:45.634Z)
OS version: Darwin arm64 23.6.0
Modes:

  • Python version (& distribution if applicable, e.g. Anaconda): 3.8.19
  • Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Poetry
  • Value of the python.languageServer setting: Default
User Settings


languageServer: "Pylance"

experiments
• enabled: false

Installed Extensions
Extension Name Extension Id Version
autoDocstring - Python Docstring Generator njpwerner.autodocstring 0.6.1
Better Jinja samuelcolvin.jinjahtml 0.20.0
Django Support almahdi.code-django 0.5.4
ES7+ React/Redux/React-Native snippets dsznajder.es7-react-js-snippets 4.4.3
Even Better TOML tamasfe.even-better-toml 0.19.2
GitHub Actions github.vscode-github-actions 0.26.3
GitHub Copilot GitHub.copilot 1.220.1035
GitHub Copilot Chat GitHub.copilot-chat 0.18.1
GitHub Pull Requests GitHub.vscode-pull-request-github 0.95.2024080708
GitHub Theme GitHub.github-vscode-theme 6.3.4
GitLens — Git supercharged eamodio.gitlens 15.2.3
Go golang.go 0.42.0
Go Template Support jinliming2.vscode-go-template 0.2.1
HashiCorp HCL hashicorp.hcl 0.5.0
HashiCorp Terraform hashicorp.terraform 2.33.2024073012
IntelliCode VisualStudioExptTeam.vscodeintellicode 1.3.1
JavaScript Debugger ms-vscode.js-debug 1.92.0
JavaScript Debugger Companion Extension ms-vscode.js-debug-companion 1.1.3
Kubernetes ms-kubernetes-tools.vscode-kubernetes-tools 1.3.16
Live Share ms-vsliveshare.vsliveshare 1.0.5936
Markdown Preview Mermaid Support bierner.markdown-mermaid 1.23.1
Material Icon Theme PKief.material-icon-theme 5.8.0
Modelines chrislajoie.vscode-modelines 2.0.6
Moonlight atomiks.moonlight 0.11.1
One Dark Pro zhuangtongfa.material-theme 3.17.2
Packer 4ops.packer 0.3.0
Prettier - Code formatter esbenp.prettier-vscode 10.4.0
Pylance ms-python.vscode-pylance 2024.8.1
Python ms-python.python 2024.13.2024080701
Python Debugger ms-python.debugpy 2024.10.0
Table Visualizer for JavaScript Profiles ms-vscode.vscode-js-profile-table 1.0.9
Tailwind CSS IntelliSense bradlc.vscode-tailwindcss 0.12.5
vscode-proto3 zxh404.vscode-proto3 0.5.5
vscode-styled-components styled-components.vscode-styled-components 1.7.8
YAML redhat.vscode-yaml 1.15.0
System Info
Item Value
CPUs Apple M1 Max (10 x 2400)
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
Load (avg) 10, 9, 9
Memory (System) 32.00GB (0.20GB free)
Process Argv
Screen Reader no
VM 0%
Process Info
CPU %	Mem MB	   PID	Process
    3	   164	 79220	code main
    0	    66	 79221	   gpu-process
    0	    33	 79222	   utility-network-service
    0	   262	 79223	window [1] (metrics.py — beam-client)
    0	   229	 79224	window [2] (app.py — beta9)
    0	    66	 79348	ptyHost
    0	     0	 79354	     /bin/zsh -il
    0	     0	 79427	     /bin/zsh -i
    0	     0	 79492	     /bin/zsh -i
    1	    98	 79349	shared-process
    0	    66	 79350	fileWatcher [2]
    0	    66	 79351	fileWatcher [1]
    0	   131	 79352	extensionHost [1]
    0	     0	 79417	     /Users/npetrovic/.vscode/extensions/ms-python.python-2024.13.2024080701-darwin-arm64/python-env-tools/bin/pet server
    0	     0	 79444	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python -c import json, sys; print('093385e9-59f7-4a16-a604-14bf206256fe');print(json.dumps({'version': '.'.join(str(n) for n in sys.version_info), 'sys_prefix': sys.prefix, 'executable': sys.executable, 'is64_bit': sys.maxsize > 2**32}))
    0	    33	 80132	     /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=79352
    0	    66	 80574	     electron-nodejs (bundle.js )
    0	     0	 81170	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python3 -I /Users/npetrovic/.vscode/extensions/ms-python.vscode-pylance-2024.8.1/dist/bundled/files/get_pytest_options.py
    0	     0	 81177	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python3 -I /Users/npetrovic/.vscode/extensions/ms-python.vscode-pylance-2024.8.1/dist/bundled/files/get_pytest_options.py
    0	    33	 81061	     electron-nodejs (server-node.js )
    0	    33	 82170	     electron-nodejs (tailwindServer.js )
    0	    98	 79353	extensionHost [2]
    0	     0	 79416	     /Users/npetrovic/.vscode/extensions/ms-python.python-2024.13.2024080701-darwin-arm64/python-env-tools/bin/pet server
    0	     0	 79445	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python -c import json, sys; print('093385e9-59f7-4a16-a604-14bf206256fe');print(json.dumps({'version': '.'.join(str(n) for n in sys.version_info), 'sys_prefix': sys.prefix, 'executable': sys.executable, 'is64_bit': sys.maxsize > 2**32}))
    0	    33	 80076	     /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=79353
    0	     0	 80395	     /Users/npetrovic/.vscode/extensions/hashicorp.terraform-2.33.2024073012-darwin-arm64/bin/terraform-ls serve
    0	    66	 80530	     electron-nodejs (bundle.js )
    0	     0	 81185	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python3 -I /Users/npetrovic/.vscode/extensions/ms-python.vscode-pylance-2024.8.1/dist/bundled/files/get_pytest_options.py
    0	     0	 81193	       bash /Users/npetrovic/.pyenv/libexec/pyenv-exec python3 -I /Users/npetrovic/.vscode/extensions/ms-python.vscode-pylance-2024.8.1/dist/bundled/files/get_pytest_options.py
    0	    33	 82521	     electron-nodejs (server-node.js )
Screen shots

VSCode running
image

VSCode closed/quit
image

Process explorer capturing the high CPU
image

Things tried
  • Completely removed pyenv and deleted the ~/.pyenv directory.
  • Tried an older version of pyenv (v2.3.21)
  • Wiped out my .venv directories for my projects and reinstalled with poetry
  • Disabled the Python extension in VSCode, resolves the issue, but then there's no Python support
  • Disabled the Python Debugger, isort, and Ruff extensions in VSCode
  • Disabled the Pylance extension, this looks like it resolves it, but after having VSCode open for about 5 minutes, htop shows pyenv-which is still hitting 100% at least every other second, but the process is no where to be found in the process explorer.
  • Confirmed that pyenv-which pyenv-exec processes continue to spawn as long as VSCode is opened.
  • Set the Python: Language Server setting to None, issue still happens
  • This looks identical to this issue on python-environment-tools - High CPU usages python-environment-tools#134

Metadata

Metadata

Assignees

Labels

info-neededIssue requires more information from postertriage-neededNeeds assignment to the proper sub-team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions