Wird die Prozesspriorität vom Betriebssystem periodisch neu berechnet?

385
tom.wolanski

Ich habe eine Frage zum Zeitplan und zur Prozesspriorität von Win-7.

Das Szenario lautet: Ich habe einen Prozess, der vorrangig "Normal" ist.

Ich finde diesen Prozess oft auf Hintergrund (Low I / O) reduziert. Am Ende setze ich die Priorität wieder auf "Normal" oder "Above Normal", wird jedoch in wenigen Minuten wieder reduziert.

Ich habe versucht, die Priorität unter Verwendung des Standard-Windows-Task-Managers oder von procexp einzustellen (ich denke, es sollte keinen Unterschied geben).

Die Frage ist also: Wird die Prozesspriorität neu berechnet, um die E / A-Nutzung abzudecken? Der Prozess in dieser Situation ist Visual Studio 2015, das ziemlich viel HDD verwendet, was hier einen Engpass darstellen kann.

3

3 Antworten auf die Frage

0
Keltari

Soweit ich weiß, werden Windows-Betriebssysteme die Priorität eines Prozesses nur ändern, wenn Sie dazu aufgefordert werden. Dies bedeutet jedoch nicht, dass eine Priorität vom laufenden Programm nicht geändert werden kann. Es gibt eine .NET-Eigenschaft namens Process.PriorityClass, mit der die Priorität geändert werden kann. Vielleicht stellt VS fest, dass es die CPU-Auslastung reduzieren kann, um anderen Threads mehr CPU-Zeit zu gewähren?

Danke für diese Antwort. Ja, es ist bekannt, dass das Ändern der Priorität programmgesteuert möglich ist, dies löst jedoch das anfängliche Problem nicht. Yep, könnte auch mit VS zusammenhängen, aber die gleiche Konfiguration auf einem anderen Rechner funktioniert gut. Ich kann Ihnen also keine Prämie geben, weil Ihre Antwort das anfängliche Problem nicht löst. tym32167 vor 7 Jahren 0
0
panos415

Die Anpassung der Prozesspriorität in der von Ihnen beschriebenen Situation ist nicht ungewöhnlich.

Um die Dinge zu vereinfachen, stellen wir uns die Situation so vor: Höhere Priorität bedeutet im Allgemeinen, dass der Prozess häufiger "aufwacht" als ein Prozess mit niedrigerer Priorität (um einige Arbeiten auszuführen). In Anbetracht dessen, dass Ihr Prozess viele (zufällige) Festplatten-E / A-Vorgänge ausführt, bedeutet das Beibehalten einer hohen Priorität, dass er "aufwacht" und oft nur darauf wartet, dass die Festplatte Daten zurückgibt. Da der Prozesswechsel teuer und zeitaufwändig sein kann, führt das Herabsetzen der Priorität eines diskettenintensiven Prozesses zu einer besseren Prozessorauslastung. Mit anderen Worten: Durch die Anpassung der Prozesspriorität kann der Prozessor mehr Zeit für die Arbeit aufwenden, anstatt diese Zeit zwischen Prozessen zu wechseln.

Ich denke, es ist wahrscheinlicher, dass VS oder der Prozess selbst die erneute Priorisierung vornimmt.

Diese Antwort löst das anfängliche Problem nicht, erklärt aber zumindest, warum es passiert. Vielen Dank. tym32167 vor 7 Jahren 0
0
jan-glx

Der Scheduler von Fenstern wird wahrscheinlich die E / A-Nutzung indirekt berücksichtigen (da er weniger häufig Prozesse einplanen wird, die schnell zurückkehren, wie Prozesse, die auf E / A warten). Die Prozesspriorität sollte jedoch eine Zahl sein, die vom Benutzer [oder anderen Programmen (einschließlich des Prozesses selbst)] festgelegt wird] und den Scheduler weiter beeinflussen. ... Genug von meiner wilden Vermutung.

Diese Antworten sollten Prio verwenden, um die Priorität eines Prozesses (durch einen Hintergrunddienst erzwungen) zu sichern, es kann auch in Ihrem Fall hilfreich sein.