Wenn ich bei einem großen Ordner die Umschalttaste drücke und entferne, wird mir die folgende CPU-Auslastung angezeigt:
Es werden nicht alle Boxen genutzt. Ist das ineffizient?
Dies scheint mir durch Teile-und-herrsche-Prinzip leicht parallelisierbar zu sein. Ich habe versucht, die Hälfte des Materials manuell auszuwählen und zu löschen, dann die andere Hälfte, und dadurch wurden noch mehr Kisten voll.
Ich habe gehört, dass beim Recycling ein anderes Verhalten auftritt, habe das aber nicht selbst getestet.
Antwort1
Moderne Dateisysteme versuchen, beim Schreiben jederzeit die Datenintegrität sicherzustellen. Früher habe ich gehört, dass dies als „atomares“ Schreiben bezeichnet wird, da es entweder erfolgreich abgeschlossen wird oder überhaupt nicht.
Sie können immer nur einen Befehl gleichzeitig an die eigentliche Festplatte senden und dabei Festplattenwarteschlangen und Caches ignorieren. Ein Löschvorgang würde mehrere Lesevorgänge (Verzeichnis scannen usw.) usw. umfassen, bevor die letzten Schreibvorgänge das Element aus der Verzeichnisstruktur entfernen und den Speicherplatz als frei markieren.
In Kombination mit der modernen Verwendung von Journaling (das es ermöglicht, Festplattenaufgaben je nach Unterbrechungszeitpunkt vorwärts oder rückwärts zu verschieben) könnte es durchaus sein, dass der Engpass beim tatsächlichen Warteschlangenaufbau von Aufgaben (Lesen/Suchen/Schreiben) für den Festplattencontroller liegt.
Wenn Sie etwas in den Papierkorb verschieben, verschieben Sie einfach einen Ordner. Auf diese Weise müssen Sie viel weniger tun, um etwas zu „löschen“, da Sie lediglich eine Ordnerstruktur ändern, anstatt viele Daten als nicht mehr benötigt zu markieren. Wenn Sie Ihren Papierkorb leeren, stehen Sie jedoch wieder vor der Aufgabe, Speicherplatz freizugeben.
Antwort2
Dieser Vorgang wird nicht durch die CPU, sondern durch die Festplatte blockiert. Sie können die CPU nicht schneller machen, als die Festplatte Änderungen speichern kann. Daher wartet die CPU, bis die Festplatte ihre Arbeit erledigt hat, bevor sie weitere Arbeit übermittelt.
Dieser Effekt wird insbesondere bei Operationen mit vielen kleinen Dateien verstärkt, da hier der Dateisystem-Overhead größer ist als die Größe der Dateien selbst, so dass die Verarbeitung scheinbar ungewöhnlich lange dauert.