Всем привет, недавно столкнулся с проблемой - рабочий ноутбук начал непривычно шуметь системой охлаждения. В диспетчере задач наблюдал следующую картину:
Никаких других окон, кроме пустого проекта открыто не было. На 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 | Sort-Object -Property CPU -Descending | Select-Object -Skip 1 -First 1
if($secondMostConsumingProcess.Name -eq "Code")
{
Stop-Process -Id $vsCodeProcess.Id -Force
Write-Host $vsCodeProcess.Name "Successfully stopped"
}
}
Сначала я рассчитывал, что всегда на вершине сортированного списка процессов по потреблению ЦПУ будет именно 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
После нажатия "Enter" находим нашу задачу и вызываем ее:
Попытка номер 2:
Результаты:
Диспетчер задач теперь отображает наиболее грузящими процессор служебные задачи:
Marketplace недоступен, но расширения работают (Тема OneDark Pro не слетела, проект в EIDE компилируется, шьется в микроконтроллер и работает Cortex-Debug):
Всем спасибо, что дочитали до конца, прошу поделиться, как можно улучшить данный способ, например, сделать запуск скрипта автоматическим при запуске VS Code, параметр "onStartup": "Run PowerShell Script" в tasks.json мне не помог.
upd: код PowerShell скрипта поправил, не все строчки скопировал из файла сначала
Комментарии (54)
alexdora
24.11.2023 14:04+7Из статьи я понял что Vscode работает на окнах хуже чем на яблоке.
Осталось понять только, что это за магия такая с учетом того что vscode - microsoft
edogs
24.11.2023 14:04+2Так он вроде на Electron написан, т.е. платформо-независим изначально. Зенд студию помнится, написанный на ява, тоже неадекватно тормозил на виндах.
Был бы он на плюсах написан, допустим, можно было бы озадачиться.
Sigest
24.11.2023 14:04У меня вчера на маке vscode завис после пробуждения ноутбука из гибернации (не обычный сон, а глубже). Завис так, что пришлось перезагружать ноут. Не сворачивался, не убивался из таск менеджера. Просто висел на весь экран с крутящимся спинером-указателем. И это я в первый раз перезагружаю ноут из-за какого-либо приложения. Хотя я уже привык к поделиям MS. На десктопе Windows 11 и там каждый день какие-то проблемы, в основном с Explorer.
alexdora
24.11.2023 14:04+2terminal:
ps aux | grep -i Code | awk '{print $2}' | xargs sudo kill -9
Бывали такие выпады в разных приложениях, всегда спасало. Уж не знаю почему Task Manager плохо понимает команду Завершить принудительно
WQS100
24.11.2023 14:04+1Осталось понять только, что это за магия такая с учетом того что vscode - microsoft
У них в разных материалах (на их видео и трансляциях, да и банально в гифках в новостях, связанных с обновлениями) mac версия, по субъективным ощущениям, встречается чаще, чем другие, так что возможно они просто сами на маках работают, и поэтому она там лучше отлажена :)
13werwolf13
24.11.2023 14:04+1разработчики из microsoft юзают маки, разработчики из apple юзают linux, линуксоиды контрибьютят в *bsd.. однажды круг замкнётся ????????????
13werwolf13
24.11.2023 14:04UPD: подумалось - если натянуть сову на глобус и сказать что macos это bsd то в целом круг замкнулся и оставил некрософт за границой своего уютного мирка..
Vitimbo
24.11.2023 14:04+4Решил проверить, много ли потребляет vs у меня, но такой картины не наблюдаю. Жрет прилично, только если сборку проекта запустить, но это уже не совсем вина vscode, там процесс nodejs разгулялся. А какие параметры у ноута?
Hidden text
Butaforsky Автор
24.11.2023 14:04+1Ryzen 5 4600H, 16GB оперативки, ssd штатный, производителя не помню, m2 формата
e-zig
24.11.2023 14:04+1Периодически в Винде такая проблема у меня возникала и сама не исчезала. Помогал полный снос vs code с ручной чисткой папок с его расширениями. Где то есть офф. гайд как это сделать. Я думал, что мне так не везёт, ан нет, распространённая проблема. На линуксе такого не замечал.
Z55
24.11.2023 14:04+7У меня, на маке, расширение для питона отъедало 100% цпу (одного). Поискал решение, и не нашёл ничего кроме перехода в PyCharm. Теперь вскод у меня просто в роли умного блокнота.
keneshin
24.11.2023 14:04Если это Pylance, то не удивительно. В VSC вообще проблема с анализаторами кода, независимо от платформы (с rust-analyzer точно так же, помогает только переход в CLion/RustRover)
Butaforsky Автор
24.11.2023 14:04+1Pylance подключен, попробую, как без него работать будет, спасибо
Но вообще перед тем как сносить Marketplace, запускал vs code с флагом —no-extensions (spelling модет быть неправильным, суть понятна) и просто «ванильный» vs code работал так же
MiyuHogosha
24.11.2023 14:04+1Вы отключили расширения. А это не отключает расширения... это отключает клиент который постоянно ходит к вебсервису.
Рассчитано на пользователей с гигабитным интернетом и без APN\фильтров РКН
Z55
24.11.2023 14:04+1К сожалению (а может и к счастью), уже не скажу какое именно использовал расширение. Какое-то из топа. Давно это было... И да, скорее всего чудил анализатор кода, ибо нагрузка была постоянной и стабильной.
me21
24.11.2023 14:04+4Маркетплейс никогда процессор не отъедал. Что было, это загрузка процессора clangd при построении модели кода для работы code completion. Может работать несколько минут. Проект - прошивка для чипа STM. Обычно случается при изменении списка подключаемых заголовков в одном из исходников.
Akuma
24.11.2023 14:04+10Попробуйте ее просто с чистого листа поставить, это какая-то нездоровая фигня. В простое оно вообще не должно ничего потреблять - ничего и не происходит.
Polarisru
24.11.2023 14:04+7Текстовый редактор, который мы заслужили - жуткие тормоза и перегретый процессор для того, чтобы просто редактировать код.
Airtrain
24.11.2023 14:04+1>Текстовый редактор, который мы заслужили
IDE это не текстовый редактор. Хотя, конечно, позорище, сам с поделкой от intellij страдаю. Но возвращаться в настоящий "текстовый редактор" это конечно дауншифтинг лютый.
sdramare
24.11.2023 14:04VS Code это IDE и тормозит в ней совсем не модуль редактирования текста. Скажу невероятное, но даже в vim могут быть плагины, имеющие высокое потребление CPU.
Polarisru
24.11.2023 14:04-1Ну вот только не надо мне рассказывать про то, что VSCode ни в чем не виноват. Почему-то в CodeBlocks подсветка синтаксиса работает так, как она должна работать - мгновенно. А вот в банальном Си без всяких наворотов под VSCode она подсвечивает так, что я это вижу невооруженным глазом, причем без всяких там компиляций в фоне. Про остальные фишки можно просто и не вспоминать, более тормозной среды я себе представить не могу, даже дериваты эклипса работают куда более шустро, а уж на них я насмотрелся достаточно, учитывая, что почти каждый производитель микроконтроллеров уже имеет свою.
SergeySavkin
24.11.2023 14:04+1Я тоже раньше пользовался EIDE, но недавно KEIL выпустил Keil Studio for VS Code
Перешел на него и пока доволен. Под IAR тоже есть свой плагин.
Butaforsky Автор
24.11.2023 14:04Да, keil studio тоже видел, но поставить не получилось - спустя час статус установки не поменялся. Возможно из РФ блокирует, но это очень не точно
webhamster
24.11.2023 14:04+1Это решение Windows-only? Или на Linux тоже будет работать?
Butaforsky Автор
24.11.2023 14:04+1Подозреваю, что скрипт powershell на Linux не запустится
HOMPAIN
24.11.2023 14:04+1Почему вы в винде используете vscode, а не полноценную студию? Для каких-то задач она подходит лучше?
IgorAlentyev
24.11.2023 14:04+1Ну я например пишу в vscode на js, питоне и пхп. Студия норм для шарпов и плюсов, для всего остального имхо лучше другие решения использовать
Butaforsky Автор
24.11.2023 14:04Потому что когда-то студия была «тяжелее» для освоения, сейчас скорее дело привычки
BAD_F00D
24.11.2023 14:04+1Для любого проекта не на дотнете?
Ну. Вот допустим - я извращенец, который на расте или го любит писать в свободное время. В чем еще писать-то на винде, чтобы не страдать?13werwolf13
24.11.2023 14:04-1RustRover непример (ну и прочее ЖИДбрейнсовское), оно конечно будет дико жрать озу, но оно на жабе писано, так что можно считать что это не баг а фича, а по удобству ИМХО жидбрейнсовские поделия на голову выше этого электроноподобного позора от майков. правда мне до сих пор не понятно зачем выпускать одно и то же IDE с разным набором плагинов под видом разных продуктов.. но что поделать.
sdramare
24.11.2023 14:04Вот только VS Code бесплатный, а jb продукты довольно ощутимые по цене. Ладно для работы, но платить пару сотен евро для написания кода в пет проекте не каждый захочет.
13werwolf13
24.11.2023 14:04ай, кто ищет тот найдёт
если принципиально нужно бесплатное IDE всегда можно взять например qt-creator и прикрутить к нему rust, да, это уже будет не так круто и функционально как jb, но зато не будет насиловать мозг и железону а для особых естетов есть плагинпаки для nvim превращающие его из текстового редактора в полноценное IDE функционалу которого позовидует даже vscode
да и jb при некоторых условиях можно использовать, и платить за хороший продукт тоже не зазорно..
sdramare
24.11.2023 14:04neovim это для особых людей("я не такой как все"), которые готовы год собирать свой конфиг плагинов чтобы получить хоть что-то похожее на IDE. Можно конечно брать готовый пак типа LunarVim, но это всеравно даже близко не так удобно как нажать две кнопки в VS Code и получить готовую к работе среду.
13werwolf13
24.11.2023 14:04нажать две кнопки вот тут не так удобно как нажать две кнопки вот там
хмм, вам не кажется что вы НЕ безпрестрасны?
не подумайте, я сам не из vimбоев, предпочитаю гуёвые IDE и текстовые редакторы, но я имел удовольствие работать с теми кто в основном использует vim/nvim и могу вам сказать что они бы поспорили с вами как про удобство, так и про функционал и производительность.
к тому же что касается vscode в сравнении хотя бы с pycharm то нажав две кнопки есть ненулевой шанс не получить готовую к работе среду а обрушить его до неработоспособности..
1dNDN
24.11.2023 14:04Полноценная студия с решарпером лагает даже на моем 5800x3d.
Поэтому для всего, что не требует специфичных фич студии, я юзаю Rider
stephanthe
24.11.2023 14:04+4Это, видимо, ненормально. У меня все включено и потребление <1%
Daimos
24.11.2023 14:04+1Да так похоже у большинства, у ТС какой-то плагин виноват, который трудно выловить
Butaforsky Автор
24.11.2023 14:04+1Снес vs code
Поставил AWS Toolkit, C/C++, Embedded IDE, Error Lens, One Dark Pro, Python, Pylance, Rainbow CSV и GitLense, в простое ничего не грузит ЦПУ, спасибо всем неравнодушным
BadGuySol
24.11.2023 14:04+1Срабатывает не с первого раза очевидно потому, что в момент запуска скрипта первый по загрузке ресурсов не тот что нужен. Если вы знаете имя процесса, то зачем нужна эта проверка по потреблению ресурсов? Просто ищите нужный процесс и при его наличии - завершайте
Butaforsky Автор
24.11.2023 14:04+1У vs code процессов несколько и все с одинаковыми именами. Чтобы не сломать то, что работает, сделал сначала сортировку по потреблению ресурсов
BadGuySol
24.11.2023 14:04+1Даже у процессов с одинаковыми именами есть уникальные параметры. В данном случае рекомендую обратить внимание на параметр CommandLine. На его основе можно будет определить назначение процесса, либо просто ориентируясь по набору фиксированных значений этого параметра, завершать процесс
13werwolf13
24.11.2023 14:04+6Но ведь это не по‑программистски каждый раз в Диспетчер задач залезать, открывать дерево процессов, останавливать Marketplace, ведь так?
простите мне моё ИМХО, но "по‑программистски" было бы не писать скрипт на убийство дочернего процесса важной для работы программы, а разобраться в его поведении и прислать в апстрим MR с исправлением.
но есть и другое мнение - просто нужно перестать насиловать свою ОС и нервы юзая софт на электроне.. никогда электроноподелия не сравнятся с нативным софтом.
Wendor
24.11.2023 14:04+1VS Code пример хорошего приложения на electron. Кроме шуток.
13werwolf13
24.11.2023 14:04-1лучшая кучка говна из множества кучек говна всё ещё остаётся кучкой говна
я согласен что вскод лучшее что смогли сделать на электроне, но это мало что меняет
andreishe
24.11.2023 14:04Да черт с ним, с исправлением, соберите данные хотя бы: ETW trace, дамп памяти и дайте их разработчикам.
Butaforsky Автор
Снес vs code
Поставил AWS Toolkit, C/C++, Embedded IDE, Error Lens, One Dark Pro, Python, Pylance, Rainbow CSV и GitLense, в простое ничего не грузит ЦПУ, спасибо всем неравнодушным