Festplattencache: Verhindern, dass ein Prozess meine Maschine zum Stehen bringt?

882
Qwertie

Ich versuche, einen sehr langen und langsamen (aber wichtigen) Hintergrundprozess auf meinem Computer auszuführen. Es hat das ganze Wochenende gedauert und läuft noch.

Das Problem ist, dass dieser Prozess Dutzende von GBs von Festplattendateien (einige lokal, manche im Netzwerk) durchsucht, und Windows möchte offenbar alle anderen Programme ausblättern, sodass er fast jedes Megabyte (aus 4 GB RAM) als Festplattencache verwenden kann für dieses eine Programm. Dies geschieht trotz der Tatsache, dass ich den Task-Manager verwendet habe, um seine Priorität auf "niedrig" zu setzen. Windows rüstet nicht nur alles andere aus, sondern es scheint, dass dieser Prozess mit niedriger Priorität "erste Dibbs" auf der Festplatte erhält, so dass andere Apps einige Minuten brauchen, um wieder eingeblendet zu werden. Dies stört alle anderen Arbeiten, die ich möchte tun.

Ich bin auf Win7 x64, aber ich habe das gleiche Phänomen in WinXP beobachtet (ich würde sagen, dass es unter XP schlimmer ist ... zumindest in Win7, wenn ich ein einzelnes Programm für eine Weile verwende, reagiert es wieder.)

Ist es nicht nur möglich, die Auslagerungsdatei vollständig zu deaktivieren, was ohnehin einen Neustart erfordert, ist es auch möglich, den von einem einzelnen Prozess oder vom gesamten System verwendeten Festplattencache zu begrenzen?

1
Nur zur Information können Sie mit [Process Explorer] (http://technet.microsoft.com/de-de/sysinternals/bb896653) (von Microsoft Sysinternals) die Ausführung eines Prozesses unterbrechen / anhalten. Dies kann nützlich sein, wenn Sie das Programm unbedingt anhalten müssen, den Prozess jedoch nicht beenden möchten (und in den meisten Fällen dessen Fortschritt). Breakthrough vor 12 Jahren 3
Das ist wirklich nützlich, danke! Ich könnte es fortsetzen, wenn ich nachts nach Hause gehe. Qwertie vor 12 Jahren 0
Du kannst wirklich nichts tun. Wenn Sie den Festplatten-Cache zusammendrücken, bedeutet dies nur, dass der Prozess noch mehr Festplatten-E / A durchführen muss. Das Betriebssystem kann die Festplatten-E / A nicht stoppen, sobald es ausgegeben wurde. Wenn also noch mehr Festplatten-E / A erforderlich sind, wird die Latenz für andere Prozesse ungeachtet der Priorität immer schlechter. Sie können dies nur beheben, indem Sie das Design des Programms ändern oder die zu analysierenden Dateien auf die eigene physische Festplatte verschieben. David Schwartz vor 8 Jahren 0
@DavidSchwartz IIRC Es wäre vollkommen in Ordnung gewesen, _any_ disk cache nicht dem Programm zuzuordnen, da alle Dateien seriell geprüft wurden (und es war nicht genügend Speicherplatz für alle Dateien vorhanden). Das Problem war nicht die E / A selbst, sondern eher die schlechte Entscheidung des Betriebssystems, DLLs und Daten anderer _-Programme auszugeben. Qwertie vor 8 Jahren 0
@Qwertie Es liegt in der Verantwortung des Programms, dem Betriebssystem mitzuteilen, wie es die gelesenen Daten verwenden soll. Andernfalls kann das Betriebssystem nur das Beste erraten, was es kann. Sie können möglicherweise ein schlecht geschriebenes Programm umgehen, aber geben Sie die Schuld dort hin, wo sie hingehört. David Schwartz vor 8 Jahren 0

1 Antwort auf die Frage

3
MSalters

Du bist nicht aggressiv genug. Windows 7 nimmt die E / A-Priorität nicht auf, bis Sie die Priorität noch weiter verringern, von "niedrig" bis "im Leerlauf".

Windows XP hat keine E / A-Prioritäten. Es wird dieses Problem immer haben, selbst bei "Prioritätsleerlauf" -Prozessen.

Der Windows Task-Manager bietet in der Prozessliste keine Priorität "Leerlauf", sondern nur "Unter Normal" und "Niedrig". Der [Prozess-Explorer] (https://technet.microsoft.com/de-de/sysinternals/bb896653) verfügt über ein "Idle", bietet jedoch kein "Low" an. Ich werde sicher herausfinden, ob es das nächste Mal funktioniert, wenn ich dieses Problem habe. Qwertie vor 8 Jahren 0