ready-4 IT

VS Code Kollision mit Bitdefender (vom Piepen zur Lösung)

Diese Website & mein Tooling – heute: VS Code Kollision mit Bitdefender

Heute hatte ich einen dieser Tage, an denen man erst denkt „Hardware kaputt?!" und am Ende ist es eine Kette aus:

  • 4 offenen Workspaces
  • Projekten auf einer langsamen HDD (Random I/O)
  • VS Code / Git File Watching
  • Bitdefender (bdservicehost.exe), der bei jedem Zugriff „mitliest"

Das Ergebnis: Windows wurde extrem langsam und hat sogar gepiept.

Ich schreibe das hier bewusst als Erfahrungsbericht — inklusive Copy/Paste‑Snippets — weil mir genau solche Artikel im Alltag helfen.

TL;DR (Quick Wins)

Wenn du keine Zeit für den ganzen Verlauf hast, starte hier:

1) VS Code: Git Autorefresh aus (bei großen Repos / langsamen Laufwerken ein Gamechanger)

// User Settings (settings.json)
{
  "git.autorefresh": false
}

2) VS Code: Watcher entschärfen (reduziert I/O + triggert Antivirus weniger)

{
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/vendor/**": true,
    "**/.git/objects/**": true,
    "**/__pycache__/**": true,
    "**/.venv/**": true,
    "**/.pytest_cache/**": true
  }
}

3) Bitdefender: Projekte sind schon ausgeschlossen? Gut. Dann zusätzlich die VS‑Code‑Systempfade (Extensions/Cache) in die Ausnahmen.

4) Wenn möglich: aktive Repos auf SSD/NVMe legen. HDD + viele kleine Dateien ist die perfekte Performance-Falle.


Wie es angefangen hat: das Piepen

Symptom: Windows piept (bei mir so etwas wie „2× kurz … lange Pause … dann 2× kurz schneller"), aber:

  • nicht beim Boot,
  • sondern während Windows läuft,
  • und gleichzeitig wird alles zäh.

Das ist beunruhigend, weil man zuerst an BIOS-Beepcodes denkt. Bei mir war es aber kein Boot-Problem — es war ein „System ist überlastet und Input fühlt sich an wie blockiert".


Diagnose: Task Manager & Ressourcenmonitor

1) Task Manager

CPU war nicht der Täter (bei mir ~17%). Auffällig war:

  • Disk deutlich hoch!
  • VS Code (Code.exe) mit spürbarer Disk‑Last

resources_problems

2) Der entscheidende Blick: Active Time & Queue

Im Ressourcenmonitor (Reiter „Datenträger") sieht man zwei Dinge, die oft mehr sagen als „MB/s":

blocker_01

  • Active Time 100% auf der HDD
  • Queue Length hoch (Stau an Anfragen)

Das fühlt sich dann so an:

  • Tippen laggt,
  • Klicks werden „verschluckt",
  • das System reagiert zeitversetzt,
  • und es kann sogar zu Pieptönen kommen.

Der eigentliche Root Cause

Bei mir war es eine Kollision aus:

1) Viele kleine Dateien

  • Node: node_modules/ (zigtausende Files)
  • PHP: vendor/
  • Python: .venv/, __pycache__/
  • Git: .git/ (Objects, Index, Status-Reads)

2) VS Code Watcher + Git Autorefresh

  • VS Code fragt Git regelmäßig ab.
  • Git touchiert dabei extrem viele Dateien.

3) Bitdefender scannt parallel

  • bdservicehost.exe liest mit.
  • Selbst wenn der Datendurchsatz „nur" 10–20 MB/s ist, kann eine HDD durch Random I/O komplett am Limit sein.

4) Mehrere Workspaces gleichzeitig

  • 4 Fenster/Workspaces multiplizieren die Watcher‑Last.

Maßnahmen (Copy/Paste) + Begründung

A) VS Code / Cursor Einstellungen

Spalten
"git.autorefresh": false
User Settings
Verhindert permanentes Git‑Scannen im Hintergrund; reduziert I/O massiv.
files.watcherExclude für node_modules, vendor, etc.
User Settings
Tausende Dateievents weniger → weniger Disk‑Last → Antivirus wird seltener getriggert.
Große Workspaces auf SSD
Filesystem
HDD + Random I/O ist die schlechteste Kombi für Dev‑Repos.

Optional (wenn du ESLint/Prettier intensiv nutzt):

{
  "eslint.run": "onSave",
  "prettier.requireConfig": true,
  "editor.formatOnSave": true
}

Warum das hilft:

  • ESLint onType kann bei großen Monorepos gefühlt „dauerlaufen".
  • prettier.requireConfig verhindert, dass Prettier überall automatisch anspringt, wo es nicht soll.

B) Bitdefender Ausnahmen (Ordner)

Bitdefender akzeptiert typischerweise keine Wildcards wie **/node_modules/**. Das ist aber auch nicht nötig, wenn du deine Projekt-Roots sauber bündelst.

bitdefender_01

Empfohlene Ordner-Ausnahmen:

Spalten
Projekte (Root)
F:\\r4it und F:\\Vagrant
Deckt automatisch Unterordner ab (inkl. <code>node_modules</code>, <code>vendor</code>, <code>.venv</code>).
VS Code Extensions
%USERPROFILE%\\.vscode\\extensions
Verhindert Scans beim Laden/Updaten von Extensions.
VS Code User Data / Cache
%APPDATA%\\Code
Reduziert Schreib-/Leselatenzen durch Logs, Cache, State.
Git Installation (optional)
C:\\Program Files\\Git
Weniger Reibung bei Git‑Tooling.

C) Bitdefender Ausnahmen (Prozesse) – wenn ATD bei Ordnern nicht aktivierbar ist

Viele Bitdefender-UIs lassen Advanced Threat Defense (ATD) bei Ordnern nicht aktivieren. Dann hilft nur: Prozess-Ausnahmen.

Empfohlene Prozesse:

Spalten
VS Code
%LOCALAPPDATA%\\Programs\\Microsoft VS Code\\Code.exe
VS Code macht sehr viele Dateioperationen; ATD kann dabei bremsen.
Git
C:\\Program Files\\Git\\bin\\git.exe (oder cmd\\git.exe)
Git touchiert extrem viele Dateien; verhindert „Scanner dazwischen".
Node
C:\\Program Files\\nodejs\\node.exe
Node‑Tools + Watcher + npm arbeiten mit sehr vielen kleinen Dateien.
PHP
php.exe (je nach Setup)
Composer/Vendor‑I/O, Scans, Builds.
Python
python.exe (je nach Setup)
venv/cache/test caches.

Security‑Hinweis: Ausnahmen nur für vertrauenswürdige Ordner/Tools setzen. Ich nutze das als Performance‑Tradeoff für Dev‑Ordner, nicht für Downloads/Random‑ZIPs.


Warum node_modules / vendor hier so wichtig sind

Diese Ordner sind nicht „groß", weil sie viel MB haben — sondern weil sie viel Anzahl an Dateien haben.

HDDs sind bei „vielen kleinen Reads" brutal langsam. Watcher + Git + Antivirus macht daraus eine Dauer‑Warteschlange.


Fazit

Der größte „Aha"-Moment für mich war, wie viel Git Autorefresh im Zusammenspiel mit einer HDD auslösen kann.

Wenn du nur eine Sache sofort testen willst: git.autorefresh aus — und beobachten, was mit Queue Length passiert.

Wenn der Editor plötzlich träge wirkt (Typing-Lag, hohe CPU, Lüfter), ist es oft nicht „die Extension", sondern das Zusammenspiel aus File-Watchern und Antivirus-Scanning.

So sieht die Belonung aus!

resources_final

Das Ergebnis: Deutlich schnelleres Arbeiten. Die Queue Length sank von teilweise über 90.000 auf unter 15.000 — selbst mit mehreren geöffneten Workspaces.

Das hier ist eine pragmatische Checkliste — nimm nur die Punkte, die du brauchst.

Systeminformationen (eingekürzt) - OS: Windows 10 Home (2009) - CPU: Intel Core i9-13900KF - RAM: 32 GB - Storage: 1 TB NVMe (SSD) + 12 TB HDD (typ. 7200 RPM) - Controller: SATA AHCI + NVMe - VS Code: 1.106.3 - Bitdefender: Total Security Build 27.0.55.303 Rein rechnerisch hätte die Kombination aus moderner CPU, 32 GB RAM und NVMe+HDD die Last tragen können; der Engpass erklärt sich eher durch sehr hohe IOPS‑Last (viele kleine Dateioperationen) in Kombination mit AV‑Scans und Watcher‑Interaktionen.

Symptome

  • VS Code (oder Cursor/VSCodium) wird beim Tippen/Speichern langsam.
  • Git ist träge, git status dauert in großen Repos auffällig lang.
  • CPU-Last in Bitdefender/Antimalware oder im Watcher-Prozess.

Typische Ursache

  • Große Workspaces erzeugen viele Filesystem-Events.
  • Antivirus scannt die geänderten Dateien wiederholt.
  • Watcher triggert weitere Arbeit → Rückkopplungsschleife.

Empfohlene Maßnahmen

1) Workspace in Bitdefender (oder AV) ausschließen

  • Schließe den/die Root-Ordner aus, in denen deine Repos liegen.
  • Bei Vagrant/Shared-Folders auch diese Pfade ausschließen.

2) Tool-Caches / Temp-Ordner ausschließen Beispiele (anpassen):

  • node_modules/
  • .git/
  • Build-Output
  • große Caches (composer, npm, …)

3) Watcher-Last reduzieren Wenn du nicht überall Live-Watching brauchst:

  • generierte Ordner in VS Code vom Watching ausnehmen
  • riesige „Monorepo + Vendor + Build" Kombinationen vermeiden

Hinweis

  • Das ist keine Security-Beratung, sondern ein Performance/Produktivitäts-Tradeoff.
  • Date: 02.02.2026