NTFS Performance-Essentials für Java-Entwickler und Power-User (you want to know this!)
Ich war kurz vor dem verzweifeln, hab ich doch meinem Chef schon vor Monaten eine neue, schnellere Platte abgeschwatzt und trotzdem wurde mein Rechner (Notebook) von Monat zu Monat noch unerträglich langsamer: Projekte aufmachen dauert ewig, Datei-inintensive Operationen wie auschecken, compilieren oder löschen halfen das meditative Level hochzuhalten und der Rechnerstart am Morgen starten war der Tee-/Kafferundgang Pflicht.
Nun bin ich ja doch eher jemand der sein System hegt und pflegt, daher waren Dateidefragmentierung, Registry aufräumen, Temp-Files löschen, Trojanersuche und unnötige Treiber/Dienste deinstallieren schon länger regelmäßige Beschäftigungen am Wochenende. Erträglicher wurde es nicht.
Eher per Zufall bin ich nun über eine Detail drüber gestolpert und da fiel es mir wie Schuppen von den Augen: Das Problem sind exzessiv defragmentierte MFT und Metadaten-Strukturen im Filesystem! Dem ist mit Hausmitteln nicht so beizukommen.
Kurzer Abriss der Hintergründe
Windows verwaltet innerhalb von NTFS in der Master File Table (MFT) alle essenziellen Informationen . In dieser Datei befinden sich die Einträge, welche Blöcke zu welcher Datei gehören, die Zugriffsberechtigungen und die Attribute. Jede Eigenschaft einer Datei ist unter NTFS ein Attribut, auch der eigentliche Dateiinhalt.
Metadaten sind Dateininhalte die an einer Datei mit verwaltet werden, aber nicht als Dateinhalte auftreten. Diese unsichtbaren Dateiinhalte werde als ADS (Alternative Data Stream) mit von NTFS verwaltet.
Das Problem: Diese Strukturen werden beim Formatieren einmal zentral angelegt und sollten eigentlich niemals erweitert werden müssen. Bei mir daheim sind diese für 40GB ~90MB groß. Allerdings nicht so bei typischen Entwickler wie uns! Als Entwickler haben wir geradezu unendlich viele Dateien (bei mir waren es mehr als 300.000 im Projekteverzeichnis) was dazu führt dass die MFT zu klein wird uns ständig neu vergrößert werden muss. So belegt die MFT statt den zu erwartenden ~190MB doch insgesamt stattliche 670MB – natürlich lustig verteilt.
Metadaten sind eigentlich optional und sollten eher weniger ein Problem sein. Hier kommt der Kaspersky ins Spiel. Dieser speichert unsichtbar mit der iChecker-Technologie Fingerprints zu jeder Datei was kombiniert mit den unendliche vielen .java-Dateien ebenfalls nochmals die ganze Kalkulation von Windows über den Haufen wirft.
Glaubt ihr nicht? Dann schaut euch mal die Situation im rechten Bild vorher an.
. Dort seht ihr: die MFT die eigentlich am Stück sein sollte ist in mehr als 2600 Fragmente völlig zersplittert!

Der Weg zur Besserung
Was soll ich sagen – mein Laptop hat nun fast eine Woche Feierabend- und Wochenendienste am Stück gebraucht aber nach meinen Bemühungen sind alle Dateiintensiven Operationen plötzlich nahezu doppelt so schnell! (I’m not making this up!).
Hier nun mein 7-Schritte Mantra zu mehr Glücklichkeit und Zufriedenheit im Leben eines Entwicklers:
Speicherplatz freiräumen und alte Verzeichnisse mit vielen Dateien löschen
Perfectdisk Trial und/oder Diskkeeper Pro Trial herunterladen. Bei mir war das alles so im argen das Perfectdisk Anfangs beim MFT-Defragmentieren abgestürzt ist und das gar nicht mehr gepackt. Nach etwas Vorarbeit von Diskeeper war das sonst bessere Perfectcare dann allerdings in der Lage alles in Ordnung zu bringen
Installieren und eine erste Dateifragmentierung starten (über Nacht; mehrere Nächte in Folge bis es halbwegs ok ist)
Über Nacht die Offline-Defragmentierung zu Bootzeit der MFT und Metadaten anstoßen.
Mit FSUTIL behavior set mftzone 2 c: dem NTFS sagen es soll in Zukunft großzügiger denken
Optional: Mit FSUTIL behavior set disablelastaccess 1 dem NTFS sagen dass ihr auf die Protokollierung des letzten Lesezugriffs so mal völlig pfeifts
Den Artikel “Windows flottmachen” aus der c’t 5/08 lesen und über die c’t helper sich mal einen Satz an Tools downloaden die beim sonstigen aufräumen helfen.
Das Ergebnis aller Mühe
...a blazingly fast Windows siehe Bild.
