Windows 8 Defragmentierer?

16

Es scheint, als hätte der Windows 8- defragBefehl einige neue Optionen:

/K Führen Sie die Plattenkonsolidierung für die angegebenen Volumes durch.

Weiß jemand, was das auf Englisch bedeutet?

Mehrdad
quelle

Antworten:

6

Dieses PDF scheint eine Erklärung zu haben, zusammen mit den neuen NTFS-Funktionen.

Es sagt:

  • Plattenkonsolidierung

    • Defragmentiert Dateien effizient, um die Anzahl der zugewiesenen Platten zu minimieren

    • Eine Platte ist die Zuordnungseinheit für ein Thin Provisioning-Volume

    • Benötigt Unterstützung für die IOCTL_STORAGE_QUERY_PROPERTYAnforderung einer Eigenschafts-ID von:StorageDeviceLBProvisioningProperty

      • Ruft die Plattengröße eines Volumes ab
Mehrdad
quelle
3

Ich konnte im Kontext des Windows 8-Defragmentierungsprogramms keine genauen Erklärungen finden. "Plattenkonsolidierung" bezieht sich jedoch im Allgemeinen auf sich bewegende Objekte, sodass Objekte, die auf die gleiche Zuordnungsgröße aufrunden, zusammen platziert werden.

Der Nutzen davon ist normalerweise ziemlich gering. Es verringert jedoch tendenziell die durchschnittliche Suchzeit, wenn auf eine große Anzahl kleiner Objekte zugegriffen wird.

David Schwartz
quelle
0

Eigentlich glaube ich nicht, dass Slabs die Zuweisung vieler Dateien mit der gleichen Größe optimieren, um die durchschnittliche Suchzeit zu reduzieren.

Meiner Meinung nach wird es verwendet, um die Latenz für Zuweisungen auf großen Datenträgern zu verringern, die andernfalls zu viele gleichzeitige Zugriffe durch parallele Threads verursachen würden, wenn sie Speicherplatz auf dem Datenträger zuweisen müssen, da dies den gleichen Teil der Datenträgerzuweisung sperren würde Bitmap. Um zu vermeiden, dass große Bitmaps verarbeitet werden, können diese in "Slabs" unterteilt werden, deren Größe in Bits zusammenhängende Bereiche auf der Festplatte mit demselben Bitmap-Fragment darstellt (mindestens 1 Cluster belegt; bei einer Clustergröße von 4 KB steht der Cluster in der Bitmap für 4K * 8 = 32K zuweisbare Cluster, dh 128 MB Arbeitsspeicher; die tatsächliche Größe der Platte in einem Volume liegt zwischen 33 und 64, sodass ungefähr 33 Threads gleichzeitig Speicherplatz in der Bitmap auf dist zuweisen können, ohne sich gegenseitig zu blockieren.

Daher werden Platten verwendet, um die Speicherplatzzuweisung auf dem Volume zu beschleunigen, vorausgesetzt, dass ein Thread, der viele Dateien erstellt, dies am häufigsten in seiner eigenen Platte tut, bevor er sie entsperrt und eine andere Platte versucht, oder indem er vor dem Versuch kleinere Mengen in der aktuellen Platte zuweist eine andere verfügbare nicht gesperrte Platte, und dann wird versucht, gleichzeitig einen fehlerhaften Zugriff auf die Platte zu erhalten, die derzeit von einem anderen Thread verwendet wird.

Dies erklärt, warum die Zuordnung auf der Festplatte über das Volume "verteilt" ist. Dies erklärt auch, warum die MFT auf dem NTFS mindestens zwei Fragmente hat, die zu anderen Slabs gehören, da starke Sperren zwischen vielen Threads vermieden werden, die das Volume verwenden. Sie können die MFT defragmentieren, es verbleibt jedoch mindestens ein Fragment in ihrem "reservierten Bereich" für gleichzeitige Zuweisungen, bei denen das Blockieren von E / A auf dem NTFS-Volume vermieden werden muss.

In der Vergangenheit war das NTFS-Volume nicht in mehrere Slabs unterteilt, und es gab einen enormen Leistungsverlust, da viele Threads blockiert wurden und zu viele Thread-Switches im Kernel auf den Abschluss der E / A warteten (auch wenn die Zuweisung in der Bitmap tatsächlich extrem ist schnell und dauert Nanosekunden, da der größte Teil der Bitmap bereits im Speicher zwischengespeichert ist). Wenn Schreibvorgänge auf den Datenträgern dann gelöscht und aufgezeichnet werden, tritt aufgrund der Zuordnung zum Journal eine weitere Sperre auf, sodass das Journal jetzt auch eine separate Platte auf dem Datenträger verwendet (falls möglich).

Aber ich glaube nicht, dass NTFS Dateien für bestimmte Größen eine Platte widmet. Internes NTFS defragmentiert die Platten geringfügig, wenn Daten entfernt werden und ihre zugewiesene Größe unter einen bestimmten Schwellenwert fällt. Zwei dieser Platten können zusammengeführt werden.

Informationen zu Plattengrößen erhalten Sie unter:

fsutil fsinfo ntfsinfo c:

Es ist klar, dass die Platten Tuning-Parameter sind, die für die Leistung bestimmt sind. Viele Defragmentierungstools von Drittanbietern ignorieren diese Einstellung und verwenden keine optimale Platzierung. Idealerweise sollte auf jeder Platte des Volumes etwas freier Speicherplatz vorhanden sein, es sei denn, die Platten sind voll mit Dateien und Indizes, die nicht neu zugeordnet werden und stabil bleiben sollen. Bei vielen kleinen temporären Dateien und Transaktionen, die ständig erstellt und wiederverwendet werden, müssen Sie sie in Abhängigkeit von der Anzahl der gleichzeitigen Threads in genügend große Platten einordnen und vermeiden, dass sie zu weit von den anderen Clustern entfernt sind, die gelesen werden müssen, wenn es sich um ein Volume handelt Festplatte oder RAID-Array (dies spielt bei SSD keine Rolle).

Platten können auch für entfernte Dateisysteme nützlich sein, aber ihre optimale Größe ist schwer vorherzusagen. Die gegenüberliegenden Platten sind für unterschiedliche Volumes hierarchisch virtualisierter Volumes sehr klein, und es gibt eine ganz andere Platzierungsstrategie. Geben Sie an, dass die Zuweisung virtuell ist und verschiedenen physischen Orten neu zugeordnet wird.

Wir benötigen weiterhin Informationen von Microsoft zu den folgenden Optimierungsparametern in der Registrierung:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\SlabifyFunction]
MinimumReclaimSlabsMB      = REG_DWORD: 10240
MinimumReclaimSlabsPercent = REG_DWORD: 10
SlabEvictUpperBoundKB      = REG_DWORD: 204800
SlabEvictUpperBoundPercent = REG_DWORD: 20

Ich denke, dass diese absichtlich undokumentiert bleiben, da Microsoft immer noch über eine Änderung der Platzierungsstrategien nachdenkt und diese möglicherweise im Laufe der Zeit ändern wird. Sie werden von der API nicht bereitgestellt. Sie finden ihre Beweise nur in der Registrierung und in der internen Quellcode-Implementierung des NTFS-Treibers.

Alles, was wir wissen, ist, dass die Platten mit dem Parameter "/ K" des Befehlszeilentools DEFRAG.EXE kurz angezeigt werden, was sie nicht sehr detailliert darstellt. Es ist jedoch leicht zu beobachten, dass die / K-Optimierung nach der Erstinstallation von Windows enorme Leistungssteigerungen bringt (noch bevor die Bootvis-Optimierung nach 6 Neustarts und Messungen durchgeführt wird). Es gibt auch die / L-Parameter für das Trimmen von SSDs.

verdy_p
quelle