NTFS-Knotenpunkt von Festplatte zu SSD, führt dies zu Leistungsengpässen? (Dampfspielverlegung)

1312
ddtemplar

Kann ein NTFS-Knotenpunkt zwischen Festplatten einen Engpass verursachen? Oder wird die Junction im Speicher zwischengespeichert?

Insbesondere möchte ich Steam auf einer magnetischen Festplatte installieren. Das bedeutet, dass alle Spiele dort installiert werden. Um von meiner SSD zu profitieren, werde ich die Spiele, die ich aktiv spiele, aus dem Steam-Verzeichnis auf der Festplatte mit der SSD verbinden.

Ich habe mich gefragt, ob dies zu Leistungsproblemen führen würde. Muss jedes Mal, wenn das Spiel auf eine Datei zugreift, die Festplatte gelesen werden, der Knotenpunkt gelesen, der neue Pfad auf der SSD aufgelöst werden, und dann die wahre Datei abrufen? Oder wird das Betriebssystem diese Neuausrichtung des Cache zwischenspeichern, so dass die Leistungsverschlechterung nur beim ersten Mal auftritt?

Vielen Dank!

13
Die Definition eines Knotenpunkts wird direkt im zuständigen MFT-Eintrag gespeichert. Da die MFT im Arbeitsspeicher zwischengespeichert wird, würde ich nicht erwarten, dass auf die Festplatte zugegriffen wird, wenn mit dem verknüpften Verzeichnis gearbeitet wird. Gene vor 10 Jahren 3
Vielen Dank! Ich mache mir dann nicht allzu viele Sorgen, wenn ich merkwürdige Verlangsamungen bemerke. ddtemplar vor 10 Jahren 0
Selbst wenn auf die Festplatte zugegriffen werden muss, um den Verbindungspunkt auszulesen, ist er winzig. Der Lesevorgang wäre fast sofort beendet und muss nur einmal ausgeführt werden, da er zwischengespeichert würde. Adambean vor 9 Jahren 2
Eine Randbemerkung: Wenn Sie die Dampfanwendung auf der SSD installieren, können Sie immer noch ändern, wo das Spiel ohne Verbindung in Steam installiert ist. cybernard vor 9 Jahren 0

1 Antwort auf die Frage

5
Vlastimil Ovčáčík

Höchstwahrscheinlich nein, es wird kein Engpass sein. Mit NTFS-Junctions ist ein gewisser Aufwand verbunden, der in Ihrem Szenario jedoch vernachlässigbar sein sollte.

Sie könnten den Overhead beseitigen, indem Sie die Daten physisch auf die SSD verschieben und Junctions überhaupt nicht verwenden (was für mich das Kernproblem Ihrer Frage ist), aber ich bezweifle, dass Sie den Unterschied messen können.

Wo werden die Junctions gespeichert und zwischengespeichert?

Junctions ist Art von Analysepunkten, die alle in gespeichert sind $Extend\$Reparse Metafile (ein weiterer berühmter Metafile ist $MFT).

Wenn einer Datei oder einem Verzeichnis ein Analysepunkt zugeordnet ist, erstellt NTFS ein Attribut, das $Reparsenach dem Analysepunkt benannt wird. Dieses Attribut speichert den Reparaturcode und die Daten. Damit NTFS alle Analysepunkte auf einem Volume problemlos finden kann, speichert eine Metadatendatei mit dem Namen \$Extend\$ReparseEinträge, die die Analysepunktdatei und die Verzeichnis-MFT-Eintragsnummern mit den zugehörigen Analysepunktcodes verbinden. NTFS sortiert die Einträge nach der MFT-Eintragsnummer im $RIndex.

Quelle: Inside Win2K NTFS, Teil 1 von Mark Russinovich

Diagramm wiedergeben

Reparse process

Quelle: Inside Win2K NTFS, Teil 1 von Mark Russinovich

Es gab Kommentare, dass Junctions in MFT gespeichert werden und MFT zwischengespeichert wird. Nun, wenn wir wissen, wo die Junctions gespeichert sind, würde ich glaubwürdige Quellen benötigen, um den Caching-Anspruch zu unterstützen. was ich nicht finden konnte.

Ich weiß es nicht, aber ich glaube nicht, dass es wichtig ist.

Gibt es ein dokumentiertes Szenario, in dem die Leistung von Cross Disk Junction beeinträchtigt wurde?

Ja, ARF ist auf dieses Problem gestoßen. Er setzte ein Benchmarking der Batch-Löschung kleiner Dateien, und als der Vorgang über die Junction hinweg durchgeführt wurde, war der limitierende Faktor nicht mehr die IO (wie erwartet), sondern die CPU. Dieser Benchmark wurde auch ausführlich auf GitHub diskutiert .