Снижаем потребление CPU в VS Code в 5 раз [Кратко]

Всем привет, недавно столкнулся с проблемой — рабочий ноутбук начал непривычно шуметь системой охлаждения. В диспетчере задач наблюдал следующую картину:

42a1c68c82dd4499744c8b8532eb43d6.png

Никаких других окон, кроме пустого проекта открыто не было. На StackOverflow, было предложено запустить без расширений и посмотреть потребление (идентичное в моём случае), отключить автообновление расширений, но мне эти способы не помогли.

В какой — то момент решил сыграть в «Дженгу» — остановить процесс, нагружающий компьютер и посмотреть, что «отвалится»

Внезапно — на первый взгляд ничего: ни тема не слетела, ни проекты на EIDE не перестали компилироваться, все работало штатно, даже отладчик Cortex-Debuger

Но не работает Marketplace

Он не отображает список установленных Расширений (они всегда в 0) и не позволяет их отключать/подключать

Но зато ЦПУ загружен на 10 — 12% в режиме простоя, кулеры сами по себе перестали работать спустя 30 секунд

Но ведь это не по-программистски каждый раз в Диспетчер задач залезать, открывать дерево процессов, останавливать Marketplace, ведь так?

Нужен скрипт, который можно добавить в tasks.json

$vsCodeProcess = Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 1
if($vsCodeProcess.Name -eq "Code")
{
  Stop-Process -Id $vsCodeProcess.Id  -Force
  Write-Host $vsCodeProcess.Name "Successfully stopped"
}
else{
  Write-Host "No Code to stop"
  $secondMostConsumingProcess = Get-Process

Сначала я рассчитывал, что всегда на вершине сортированного списка процессов по потреблению ЦПУ будет именно VS Code, но так было не всегда, поэтому добавил проверку по имени приложения и повторный поиск

Осталось запустить скрипт. В tasks.json добавляем следующее, предварительно создав в папке файл «taskkill.ps1» в моем случае

    {
      "label": "Run PowerShell Script",
      "type": "shell",
      "command": "powershell.exe",
      "args": ["-File", "${workspaceFolder}/taskkill.ps1"],
      "group": {
          "kind": "build",
          "isDefault": true
      }
    }

Теперь, когда task создана, ее можно вызвать через Ctrl + Shift + P

Рис 2. Ищем нашу задачу

Рис 2. Ищем нашу задачу

После нажатия «Enter» находим нашу задачу и вызываем ее

93ee2943d6891e8d04a6e8fe9a4c9525.pngС первого раза не всегда работает, пока не очень понимаю, почему

С первого раза не всегда работает, пока не очень понимаю, почему

Попытка номер 2:

55044ed0138a3e0ba5683aa16585f0a2.png

Результаты:

Диспетчер задач после выполнения скрипта

Диспетчер задач после выполнения скрипта

Диспетчер задач теперь отображает наиболее грузящими процессор служебные задачи

Потеря Marketplace

Потеря Marketplace

Marketplace недоступен, но расширения работают (Тема OneDark Pro не слетела, проект в EIDE компилируется, шьется в микроконтроллер и работает Cortex-Debug)

Работа идет

Работа идет

Всем спасибо, что дочитали до конца, прошу поделиться, как можно улучшить данный способ, например, сделать запуск скрипта автоматическим при запуске VS Code, параметр «onStartup»: «Run PowerShell Script» в tasks.json мне не помог

© Habrahabr.ru