So begrenzen Sie die Schreibgeschwindigkeit der Festplatte für ausgewählte Programme

23

Meine Festplatte ist langsam (5400 U / min) und bei der Arbeit mit Dateien mit einer Größe von 10 GB ist es unmöglich, den Computer zu verwenden, bis diese große Datei die Neuerstellung einer neuen Kopie / Muxing / Writing / usw. abgeschlossen hat. Das hängt vom Prozess ab, die Sache ist, dass die gesamte Festplattengeschwindigkeit aufgebraucht wird und kein anderes Programm verwendet werden kann, während dieser Prozess ausgeführt wird.

Ich dachte mir, ich könnte die Schreibgeschwindigkeit der Festplatte für Programme, mit denen ich arbeite, begrenzen. Dann würde die freie Festplattengeschwindigkeit für das Surfen im Internet oder das Abspielen von MP3s reserviert, während die großen Dateien verarbeitet werden.

user3108268
quelle
2
Ich habe noch nie von einem gedrosselten HDD IO in Windows gehört, zumindest nativ. Haben Sie versucht, die Prozesspriorität festzulegen ?:wmic process where name="calc.exe" CALL setpriority "idle"
Marcelo
@Marcelo Priority bestimmt die CPU-Zeit, nicht die Festplatte. Bei der Verarbeitung einer großen Datei verlangsamt die Festplatte den Computer und nicht die CPU.
Keltari
2
Related: superuser.com/questions/462541/…
Cees Timmerman
@ Keltari Ja, ich bin mir bewusst. Ich dachte nur , dass die Priorität für CPU vielleicht modifiziert haben könnte etwas in der Frage Auswirkungen auf das endgültige Ziel.
Marcelo
2
Wenn der Computer beim Kopieren großer Dateien "unbrauchbar" ist, haben Sie möglicherweise vergessen, DMA zu aktivieren? Normalerweise spielt es keine oder nur geringe Rolle, ob die Festplatte ausgelastet ist oder nicht, da dies ohne großen (oder keinen) CPU-Eingriff geschieht.
Damon

Antworten:

13

Das geht leider nicht. Hardware wird von Anwendungen und sogar Teilen des Betriebssystems abstrahiert. Im Wesentlichen sagt die Anwendung "schreibe dies auf die Festplatte" und das Betriebssystem handhabt es. Die Anwendung behandelt nicht, wie oder wann es geschrieben wird. All dies wird auf Treiber- und Kernel-Ebene erledigt, und es gibt keinen wirklichen Weg, dies zu ändern.

Selbst wenn Sie dies tun könnten , ist die Tatsache, dass Sie eine sich drehende Magnetplatte verwenden - und zwar eine sehr langsame -, Sie würden nicht viel Gewinn sehen. Das Laufwerk dreht sich ständig und die Köpfe bewegen sich entlang der Platte. Selbst wenn Sie weniger in Ihre Datei geschrieben haben, sucht der Datenträger ständig die richtigen Bereiche auf dem Datenträger zum Lesen / Schreiben in / aus.

Ihre beste Möglichkeit wäre, ein anderes Laufwerk zu bekommen und machen Sie Ihre Arbeit auf diesem Laufwerk, Ihr erstes Laufwerk für das Internet, MP3s etc.

PS Du hast nicht erwähnt, wie viel RAM du hast. Das Tauschen könnte ein Faktor für die langsame Geschwindigkeit sein. Je nachdem, wie viel RAM Sie haben, hilft nur das Hinzufügen von mehr.

Keltari
quelle
2
Wäre eine Windows-Version von Linux ionicenicht beinahe eine Antwort?
Daniel Beck
@DanielBeck Möglicherweise gibt es Software, die möglicherweise funktioniert. Wer weiß jedoch, welche Komplikationen daraus entstehen können? Es wäre so viel einfacher, einfach ein anderes Laufwerk einzulegen und das Problem zu lösen.
Keltari
1
Du kannst es schaffen. Siehe die Antwort
Niutech
1
Ich sehe kein grundsätzliches Argument dafür, warum eine Anwendung nicht gedrosselt werden konnte. Hier ist ein sehr einfaches Gaspedal: Unterbrechen Sie den Vorgang jede Sekunde für 1 Sekunde. Das drosselt IO um etwa 50% und lässt andere Prozesse einfließen, um die Festplatte zu nutzen. Die Suchzeiten liegen in der Größenordnung von 10 ms.
usr
@usr: Dies hängt von der Art und Häufigkeit der E / A ab. Ihr Ansatz funktioniert in einigen Fällen, in anderen jedoch nicht - z. B. wenn die E / A vollständig im Kernel-Modus ausgeführt wird, können Sie sie meiner Meinung nach nicht immer anhalten, indem Sie den Benutzermodus-Prozess anhalten.
Mehrdad
9

Mit Process Lasso können Sie E / A priorisieren. Aus ihren FAQ:

Neu in Version 4.1 (Beta-Version 4.09) verfügt Process Lasso über explizite aktuelle und standardmäßige E / A-Prioritätseinstellungen für diejenigen, die diese benötigen. Dies gilt nur für NT6 + (Vista, Win7, ...).

Die E / A-Priorisierung von Vista basiert jedoch auf der Priorität des Threads, der die E / A ausführt, was von der Prioritätsklasse des Prozesses abhängt, der die E / A ausführt. Es gibt tatsächlich nur zwei Prioritätsstufen, die von Anwendungen verwendet werden können: "Normal" und "Sehr niedrig". Obwohl es technisch gesehen 5 gibt, sind nur diese beiden implementiert oder können von Prozessen verwendet werden.

Daher wird die Anpassung der Thread-Prioritäten auf die E / A dieses Threads übertragen. Auf diese Weise führt Process Lasso bereits die E / A-Priorisierung durch. Microsoft empfiehlt, dass Anwendungen ihre E / A-Priorität anpassen, indem sie die Priorität des aufrufenden Threads festlegen (direkt oder durch Anpassen der Prozessprioritätsbasisklasse).

Siehe auch das Dokument zur E / A-Priorisierung von Microsoft .

Niutech
quelle
1

Was ich mache, wenn ich einen Prozess habe, der meine gesamten Datenträger-E / A unter Windows verbraucht, ist, den Prozess-Explorer aufzurufen und den anstößigen Prozess anzuhalten. Nachdem ich mit meinem Geschäft fertig bin und bereit bin, ein bisschen zu warten, setze ich es fort. Dies ist definitiv nicht die produktivste Methode, da hiermit die Datenträger-E / A-Vorgänge vollständig gesteuert werden und der Prozess warten muss, bis Sie Ihren Computer verwenden. Bisher habe ich jedoch keine bessere Alternative gefunden.

Wenn Sie Ihren Prozess auf Cygwin ausführen können, können Sie ihn pvauf Ihrem Computer installieren und als ersten oder letzten Schritt mit einer Option (ich denke, es ist -r) verwenden, um die Ausgaberate von pv zu drosseln.

RAKK
quelle