Windows mit einem besseren Dateisystem

14

Nach meinen Beobachtungen als Java-Entwickler auf Windows-Workstations ist NTFS im Vergleich zu Linux-Dateisystemen langsam. Die Frage ist, gibt es irgendetwas im NTFS-Treiber, das manuell optimiert werden kann, z. B. mehr Arbeitsspeicher für den Cache? Einige experimentelle Algorithmen aktivieren? Wenn das nicht verfügbar ist, gibt es vielleicht ein anderes Dateisystem, das unter Windows verwendet werden kann, vielleicht sogar kommerziell, das schneller als NTFS ist?

Um es klar auszudrücken, ich versuche nicht, die Kompilierungsgeschwindigkeit für Maven-Projekte zu verbessern, sondern möchte eine allgemeine Verbesserung für das Betriebssystem erzielen. Ich habe das Gefühl, dass NTFS im Vergleich zu Linux-Dateisystemen längst veraltet und langsam ist. Es kommt mir komisch vor, dass das beliebteste Betriebssystem der Welt nur ein Dateisystem hat, das noch manuell defragmentiert werden muss. Vielleicht gibt es eine Alternative?

Update: Hier ist, was nach meinen Beobachtungen langsam ist. Ich baue / verpacke ein Projekt, was viele Lese- / Schreibvorgänge auf der Festplatte bedeutet. Das Build-System ist plattformübergreifend (Java, Maven), sodass ich beispielsweise beim Booten in Ubuntu genau dieselben Aktionen ausführen kann.

Unter Linux sind meine Builds mindestens 1/3 schneller. Daher die Frage nach dem Dateisystem. Es tut mir leid, wenn es verlegt ist.

Yuri Ushakov
quelle
7
Inwiefern ist NTFS langsam? Wie können Sie die Geschwindigkeit messen, um festzustellen, dass es für genau die gleichen Vorgänge langsamer ist als jedes andere Dateisystem? NTFS ist das einzige nativ unterstützte Dateisystem (abgesehen von FAT mit Einschränkungen), von dem Windows selbst booten kann. Ich bin jedoch der Meinung, dass Sie möglicherweise einen ext3-Dateisystemtreiber für Nicht-Boot-Partitionen erhalten.
Mokubai
Ja, bitte klären Sie uns auf, wie langsam ist NTFS?
JL.
1
Aber was ist die Frage hier? Ist es, wie Sie NTFS beschleunigen können oder ob Windows ein anderes Dateisystem verwenden kann?
Ivo Flipse
1
@ vivo-flipse: Es tut mir leid, dass ich hier Verwirrung stiften muss. Ich bin daran interessiert, etwas über beide Fragen zu lernen. Gibt es unter Windows keine bewährte Alternative zu NTFS? Und wenn nicht, ist es dann möglich, die Leistung von NTFS generell zu steigern, z. B. einigen Caches mehr Speicherplatz zuzuweisen oder einige experimentelle Mechanismen zu aktivieren?
Yuri Ushakov
1
@ sinni800 Das ist nur Quatsch, sorry. Obwohl ich zugebe, dass Linux als Desktop-Betriebssystem alles andere als perfekt ist, ist es als Server-Betriebssystem für fast alle Workloads weitaus besser als Windows. Es ist keine Frage, ob 96,6% der Top-1-Millionen-Websites ein Beta-Betriebssystem verwenden.
Mjaggard

Antworten:

3

Während ich gerne etwas wie ZFS für Windows-Hosts sehen würde, ist NTFS kein schreckliches Dateisystem. Es unterstützt die meisten "modernen" Dateisystemfunktionen (erweiterte Attribute, Journaling, ACLs, wie Sie es nennen), wird jedoch vom Explorer und den meisten anderen Apps behindert, die keine dieser Funktionen unterstützen.

Eine Sache, die seine Leistung absolut beeinträchtigt, ist, dass "zu viele" Einträge in einem Verzeichnis vorhanden sind. Übergeben Sie ein paar tausend Einträge in einem Verzeichnis, wird alles langsamer. In diesem Fall wartet der gesamte Computer nicht mehr darauf, dass NTFS Einträge erstellt oder entfernt.

Ich habe mit einer App gearbeitet, die HTML-basierte Dokumente für .NET-Assemblys generiert hat. Es wird eine Datei pro Eigenschaft, Methode, Klasse, Namespace usw. erstellt. Bei größeren Assemblys werden 20 + k-Dateien angezeigt, die alle in einem einzigen Verzeichnis gespeichert werden. Der Computer verbrachte einige Stunden, während der Build für NTFS blockiert wurde.

Theoretisch unterstützt Windows Dateisystem-Plugins, die natives ZFS, ext3 oder was auch immer (sogar FUSE) ermöglichen würden. In der Praxis sind die APIs nicht dokumentiert, sodass Sie völlig auf sich allein gestellt sind.

Könnten Sie jetzt, da Sie Java-Entwicklung durchführen, ein anderes Betriebssystem auf Ihrem Computer installieren oder eine VM über Windows verwenden?

Vielleicht möchten Sie auch einige plattformunabhängige Benchmarks für Dateisysteme ausprobieren (iozone, bonnie ... es gibt wahrscheinlich modernere, die ich nicht so recht kenne, vielleicht sogar einige, die in Java geschrieben sind), um festzustellen, ob dies der Fall ist Eigentlich das Dateisystem, das Sie zurückhält oder wenn es etwas anderes ist. Vorzeitige Optimierung und all das ...

chrish
quelle
Das installierbare Dateisystem ist mindestens seit 2000 dokumentiert. Das Fehlen von Plugins war immer auf Schwierigkeiten und mangelndes Interesse zurückzuführen. Es ist immer noch schwierig, aber FUSE und FSDK sind jetzt verfügbar.
user165568
5
  • Deaktivieren Sie die Option "Letzter Zugriff"
  • Deaktivieren Sie Short File names
  • Deaktivieren Sie Benachrichtigung löschen
  • Deaktivieren Sie die Indizierung
  • Journale deaktivieren
  • Deaktivieren Sie die Schattenkopie sowie frühere Versionen und Kontingente und Freigaben.
  • Aktivieren Sie die Umgehungsüberprüfung

Ich vermute, dass die wirkliche Lösung darin besteht, Ihr Build-System so umzuschreiben, dass es die native Windows-Dateisystem-API anstelle der Unix-API (fopen usw.) selbst unter dem Portabilitätsframework verwendet. Aber das wird nicht passieren, so dass Sie im Grunde genommen an dem Leistungsniveau festhalten, das sie für akzeptabel hielten.

Wenn Sie Systeme verwenden, die ursprünglich nicht für Windows geschrieben wurden, stellen Sie häufig fest, dass die Verzeichnisüberquerung sehr schlecht gehandhabt wurde. Stellen Sie daher sicher, dass Sie einen sehr flachen Verzeichnisbaum haben.

user165568
quelle
1
Dies wäre eine bessere Antwort, wenn es mehr Informationen gäbe. 1. Geben Sie an, wie viel Zeit für die einzelnen Änderungen gespart werden kann und 2. wie diese Änderungen vorgenommen werden.
Mjaggard
3

Es gibt ein Dateisystem, das von neuem Windows-Betriebssystem unterstützt wird UND schneller als NTFS ist. Es ist exFAT. Es besteht die Möglichkeit, es für das Systemlaufwerk zu verwenden. Aber es ist unbekannt, welche Komplikationen es haben könnte.

Sie können es jedoch auch für andere Partitionen verwenden. Es ist schneller mit zufälligen Lese- / Schreibvorgängen. Perfekt zum Beispiel für eine SSD.

sinni800
quelle
1
Versuchte es gerade, und exFAT scheint langsamer. Erster Build auf NTFS: 36.083s, zweiter: 19.884s. Erster Build auf exFAT: 41.160s, zweiter auf 27.291s.
Yuri Ushakov
Huh. exFAT ist das einzige andere Dateisystem, das jetzt von Windows nativ unterstützt wird, und KÖNNTE als Systemlaufwerk verwendet werden (Berechtigungen sind vorhanden). Ich habe einmal einen Test online gesehen und festgestellt, dass exFAT mit zufälligen Lesevorgängen schneller war.
sinni800
Der Grund, warum der Test sagte, dass exFAT schneller sei, war wahrscheinlich, dass er nicht in einem Verzeichnis mit> 32768 Einträgen getestet wurde. Außerdem könnten neuere Windows-Versionen aufgrund interner Änderungen langsamer geworden sein. Gott (MS) weiß, was bei einem opendir()(oder einem gleichwertigen) Anruf passiert .
MattBianco
2

Haben Sie ein Antivirenprogramm, das bei der Zugriffs- / Schreibprüfung für Ihren Projektordner ausgeführt wird?

Beim Kompilieren werden viele kleine Dateien schnell hintereinander gelesen und geschrieben, was den Virenscanner überfordern kann. Fügen Sie Ihren Projektordner zur Liste der ausgeschlossenen Ordner hinzu und prüfen Sie, ob sich die Situation dadurch verbessert.

Unter Linux haben Sie (wahrscheinlich) keine Antivirensoftware ...

ChrisF
quelle
Defender ist ausgeschaltet, AV wird heruntergefahren (bzw. vollständig deinstalliert).
Yuri Ushakov
@Yuri - na ja.
ChrisF