Collision VS Code avec Bitdefender (du bip à la solution)
Ce site & mes outils – aujourd'hui : Collision VS Code avec Bitdefender
Aujourd'hui était l'un de ces jours où l'on pense d'abord « Matériel cassé ?! » et à la fin c'est une chaîne de :
4 espaces de travail ouverts
Projets sur un HDD lent (I/O aléatoire)
VS Code / Git File Watching
Bitdefender (bdservicehost.exe), qui scanne à chaque accès
Le résultat : Windows est devenu extrêmement lent et a même bipé.
J'écris cela délibérément comme un rapport d'expérience — y compris des extraits copy/paste — parce que c'est exactement ce genre d'articles qui m'aide au quotidien.
TL;DR (Quick Wins)
Si vous n'avez pas le temps pour toute l'histoire, commencez ici :
1) VS Code : Désactiver Git Autorefresh (un game changer pour les grands dépôts / disques lents)
// User Settings (settings.json)
{
"git.autorefresh": false
}
2) VS Code : Neutraliser les Watchers (réduit les I/O + déclenche l'antivirus moins souvent)
3) Bitdefender : Les projets sont déjà exclus ? Bien. Ajoutez ensuite les chemins système VS Code (Extensions/Cache) aux exceptions.
4) Si possible : placer les dépôts actifs sur SSD/NVMe. HDD + nombreux petits fichiers est le piège à performance parfait.
Comment ça a commencé : le bip
Symptôme : Windows bipe (pour moi quelque chose comme « 2× court ... longue pause ... puis 2× court plus rapide »), mais :
pas au démarrage,
mais pendant que Windows tourne,
et en même temps tout devient mou.
C'est inquiétant parce qu'on pense d'abord aux codes bip du BIOS. Mais pour moi ce n'était pas un problème de démarrage — c'était un « système surchargé et l'entrée semble bloquée ».
Diagnostic : Gestionnaire des tâches & Moniteur de ressources
1) Gestionnaire des tâches
Le CPU n'était pas le coupable (pour moi ~17%). Ce qui était notable :
Disque nettement élevé !
VS Code (Code.exe) avec une charge disque notable
2) Le regard décisif : Active Time & Queue
Dans le Moniteur de ressources (onglet « Disque ») on voit deux choses qui en disent souvent plus que « MB/s » :
Active Time 100% sur le HDD
Queue Length élevée (arriéré de requêtes)
Ça se ressent comme :
La frappe lag,
Les clics sont « avalés »,
le système répond avec un délai,
et ça peut même causer des bips.
La véritable cause racine
Pour moi c'était une collision de :
1) Nombreux petits fichiers
Node : node_modules/ (des dizaines de milliers de fichiers)
PHP : vendor/
Python : .venv/, __pycache__/
Git : .git/ (Objects, Index, Status-Reads)
2) VS Code Watcher + Git Autorefresh
VS Code interroge Git régulièrement.
Git touche énormément de fichiers dans le processus.
3) Bitdefender scanne en parallèle
bdservicehost.exe lit en même temps.
Même si le débit de données n'est « que » de 10–20 MB/s, un HDD peut être complètement à sa limite à cause des I/O aléatoires.
4) Plusieurs espaces de travail simultanément
4 fenêtres/espaces de travail multiplient la charge du watcher.
Mesures (Copy/Paste) + Justification
A) Paramètres VS Code / Cursor
Colonnes
"git.autorefresh": false
User Settings
Empêche le scan Git permanent en arrière-plan ; réduit massivement les I/O.
files.watcherExclude pour node_modules, vendor, etc.
User Settings
Des milliers d'événements de fichiers en moins → moins de charge disque → antivirus déclenché moins souvent.
Grands espaces de travail sur SSD
Filesystem
HDD + I/O aléatoire est la pire combinaison pour les dépôts de développement.
ESLint onType peut sembler « tourner en continu » dans les grands monorepos.
prettier.requireConfig empêche Prettier de démarrer automatiquement partout où il ne devrait pas.
B) Exceptions Bitdefender (Dossiers)
Bitdefender n'accepte généralement pas les wildcards comme **/node_modules/**. Mais ce n'est pas nécessaire si vous regroupez vos racines de projet proprement.
Exceptions de dossiers recommandées :
Colonnes
Projets (Racine)
F:\\r4it et F:\\Vagrant
Couvre automatiquement les sous-répertoires (incl. <code>node_modules</code>, <code>vendor</code>, <code>.venv</code>).
Extensions VS Code
%USERPROFILE%\\.vscode\\extensions
Empêche les scans lors du chargement/mise à jour des extensions.
VS Code User Data / Cache
%APPDATA%\\Code
Réduit les latences de lecture/écriture des logs, cache, état.
Installation Git (optionnel)
C:\\Program Files\\Git
Moins de friction avec les outils Git.
C) Exceptions Bitdefender (Processus) – si ATD ne peut pas être activé pour les dossiers
De nombreuses interfaces Bitdefender ne permettent pas d'activer Advanced Threat Defense (ATD) pour les dossiers. Alors la seule option est : exceptions de processus.
Processus recommandés :
Colonnes
VS Code
%LOCALAPPDATA%\\Programs\\Microsoft VS Code\\Code.exe
VS Code effectue de nombreuses opérations de fichiers ; ATD peut ralentir.
Git touche énormément de fichiers ; empêche le « scanner entre-deux ».
Node
C:\\Program Files\\nodejs\\node.exe
Les outils Node + watcher + npm travaillent avec de très nombreux petits fichiers.
PHP
php.exe (selon la configuration)
Composer/vendor I/O, scans, builds.
Python
python.exe (selon la configuration)
venv/cache/test caches.
Note de sécurité : Définissez des exceptions uniquement pour des dossiers/outils de confiance. J'utilise cela comme un compromis de performance pour les dossiers de développement, pas pour les téléchargements/ZIPs aléatoires.
Pourquoi node_modules / vendor sont si importants ici
Ces dossiers ne sont pas « grands » parce qu'ils ont beaucoup de MB — mais parce qu'ils ont beaucoup de fichiers individuels.
Les HDD sont brutalement lents avec « de nombreuses petites lectures ». Watcher + Git + Antivirus transforme cela en file d'attente permanente.
Conclusion
Le plus grand moment « aha » pour moi était de voir combien Git Autorefresh peut déclencher en combinaison avec un HDD.
Si vous voulez tester juste une chose immédiatement : désactivez git.autorefresh — et observez ce qui arrive à Queue Length.
Quand l'éditeur semble soudainement lent (lag de frappe, CPU élevé, ventilateurs), ce n'est souvent pas « l'extension », mais l'interaction des watchers de fichiers et du scan antivirus.
Voici à quoi ressemble la récompense !
Le résultat : Travail nettement plus rapide. La Queue Length est descendue de parfois plus de 90 000 à moins de 15 000 — même avec plusieurs espaces de travail ouverts.
Ceci est une liste de contrôle pragmatique — prenez juste les points dont vous avez besoin.
Informations système (abrégées)
- OS : Windows 10 Home (2009)
- CPU : Intel Core i9-13900KF
- RAM : 32 GB
- Stockage : 1 TB NVMe (SSD) + 12 TB HDD (typ. 7200 RPM)
- Contrôleur : SATA AHCI + NVMe
- VS Code : 1.106.3
- Bitdefender : Total Security Build 27.0.55.303
En termes purement computationnels, la combinaison de CPU moderne, 32 GB RAM et NVMe+HDD aurait dû pouvoir gérer la charge ; le goulot d'étranglement s'explique mieux par une charge IOPS très élevée (nombreuses petites opérations de fichiers) combinée avec des scans AV et des interactions de watcher.
Symptômes
VS Code (ou Cursor/VSCodium) devient lent lors de la frappe/sauvegarde.
Git est lent, git status prend beaucoup de temps dans les grands dépôts.
Charge CPU dans Bitdefender/Antimalware ou dans le processus watcher.
Cause typique
Les grands espaces de travail génèrent de nombreux événements du système de fichiers.
L'antivirus scanne les fichiers modifiés à répétition.
Le watcher déclenche plus de travail → boucle de rétroaction.
Mesures recommandées
1) Exclure l'espace de travail dans Bitdefender (ou AV)
Excluez le(s) dossier(s) racine où se trouvent vos dépôts.
Avec Vagrant/Shared Folders, excluez également ces chemins.