Was ist Windows-Priorität und Affinität und welche Vorteile bietet es?

29408
KronoS

Was genau ist Priorität und Affinität (im Task-Manager zu finden) und wofür werden sie verwendet?

Im Task-Manager gefunden

In welchen Situationen sollen / können sie verwendet werden und welche Vorteile ergeben sich beim Anpassen dieser Einstellungen?

9

4 Antworten auf die Frage

3
shf301

Das Einstellen der Affinität bewirkt etwas, aber Sie möchten es niemals verwenden.

Durch die Einstellung der CPU-Affinität wird von Windows nur die ausgewählte CPU (oder die ausgewählten Kerne) verwendet. Wenn Sie die Affinität auf eine einzelne CPU einstellen, führt Windows diese Anwendung nur auf dieser CPU aus, niemals auf einer anderen CPU.

Windows setzt ausgeführte Anwendungen automatisch auf den am wenigsten ausgelasteten Prozessor. Wenn Windows auf einen einzelnen Prozessor beschränkt wird, kann Windows dies nicht tun. Selbst wenn CPU / Core 1 andere Anwendungen ausführt, kann Windows keine Anwendung ausführen, deren Affinität auf CPU / Core 2 eingestellt ist.

Der einzige Grund, warum Sie das tun möchten, ist die Ausführung einer alten Anwendung, die bei einem Multi-CPU / Core-System nicht ordnungsgemäß funktioniert.

*> Du wirst es nie benutzen wollen. * Nicht wahr. Wenn Sie über eine Single-Threaded-Anwendung verfügen, kann * sie * die Threads / Kerne der CPU nicht vollständig nutzen, und es gibt nichts, was Windows tun kann, um sie zu zwingen / zu betrügen. Wenn Sie über zwei Singlethread-Anwendungen verfügen, können Sie Windows so einrichten, dass für jede einzelne Anwendung ein separater Thread / Kern verwendet wird, sodass die Gesamtauslastung der CPU nicht zwischen 50 und 75% liegt, sondern maximal 100% (jeder Kern) von einem Programm maximal genutzt werden). Ja, Sie können die Einstellung tatsächlich verwenden, aber es ist ein bestimmtes Szenario, das die meisten Leute nicht kennen / erkennen / brauchen. Synetech vor 11 Jahren 5
Wenn Sie zwei Single-Threaded-Anwendungen haben, läuft Windows jeweils auf einem anderen Thread / Core und Sie erhalten eine 100% -ige CPU-Auslastung, ohne die Affinität einzustellen. Zum Testen habe ich nur 4 Instanzen eines einzelnen Thread-Programms auf meinem 4-Kern-Computer ausgeführt und eine CPU-Auslastung von 100% erhalten. Windows ist intelligent genug, um die CPU effizient zu planen. shf301 vor 11 Jahren 1
Ich denke, es hängt vom System und / oder der Version von Windows ab. Ich habe gesehen, dass (XP) beide Kerne bei 50-75% schweben, wobei beide Prozesse auf beide Kerne eingestellt waren und die CPU durch manuelles Auslegen maximal ausgenutzt wurde. Synetech vor 11 Jahren 0
@Synetech: Das scheint fast unmöglich zu sein. Es hätte die beiden Prozesse von Kern zu Kern verlagern müssen, immer beide gleichzeitig. David Schwartz vor 11 Jahren 0
Ein weiterer gültiger Anwendungsfall dafür: Es gibt Anwendungen, die alle verfügbaren CPUs nutzen und andere Programme möglicherweise nicht ordnungsgemäß ausführen und / oder das Betriebssystem dazu veranlassen, sehr langsam auf Benutzereingaben zu reagieren. In diesem Fall kann sich jemand dafür entscheiden, eine solche Anwendung auf nur einige der CPUs zu beschränken. Als Entwickler verwende ich diese Funktion häufig, um meine CPU-intensiven Anwendungen zu profilieren, da das Profilieren selbst CPU erfordert. Eyal Roth vor 5 Jahren 0
3
Jim W

Dies ist in bestimmten Szenarien eine sehr nützliche Funktion. Nehmen wir an, Sie haben eine Multithread-Anwendung, die entweder im Leerlauf ist oder mehrere Minuten lang proaktiv 100% der CPU beansprucht, Suchen, Builds usw. durchführt. Lassen Sie uns diese Anwendung "Eclipse" nennen.

Nehmen wir außerdem an, dass Sie während der Arbeit an dieser Anwendung eine Reihe anderer Anwendungen haben, die bescheidene CPU-Anforderungen haben, im Wesentlichen jedoch Echtzeitanwendungen sind. Während Sie beispielsweise Eclipse verwenden und zufällig Builds starten oder gwt-Kompilierungen ausführen, verwenden Sie Ihren Computer auch zum Streamen von Musik oder zum Durchsuchen in einem Browserfenster (z. B. Erforschung der Ursache eines Buildproblems). . Sicher, Sie werden nicht sterben, wenn Ihre Musik ausfällt oder Ihr Browser nicht mehr reagiert, aber es ist ärgerlich.

Durch die Affinität können Sie Ihre CPU-Essen-App auf 7/8 Kerne beschränken, sodass allen anderen Zugriff auf eine relativ ungenutzte CPU gewährleistet ist und Sie nicht ständig mit Stottern und Unterbrechungen für die Verwendbarkeit aller anderen Komponenten auf Ihrem Computer umgehen müssen während die Eklipse dahinschleift.

2
Evan Plaice

Durch die Einstellung der Affinität wird diesem Prozess mitgeteilt, auf welchen Prozessoren er laufen darf.

Obwohl es für einige Nischenfälle sehr nützlich ist, sollte der durchschnittliche Benutzer dies wahrscheinlich nicht tun.

Wenn zum Beispiel einem Prozess erlaubt wurde, dass sein eigener Kern ausgeführt wird, kann er in (nahezu) Echtzeit ausgeführt werden, ohne dass diese 70 Windows-Dienstprogramme den Prozessor für ihre eigene Zeitscheibe ständig unterbrechen und stapeln müssen. Echtzeitanwendungen waren etwas, was Windows niemals tun konnte, bevor Multiprozessor- / Multicore-Systeme auf den Markt kamen, da das Betriebssystem die Anwendung ständig für ihre eigenen Zwecke unterbrach / die Aufgabe umschaltete. Dies kann nun meistens überwunden werden, indem die Echtzeitanwendung mit einem Prozessor isoliert wird, während verhindert wird, dass alle anderen Anwendungen im System diesen Prozessor verwenden. Dies ist ein sehr Nischenthema, aber Systeme wie (echte) Flugsimulatoren, Fabrikautomation und Regelfeedbacksysteme hängen von der Echtzeitarchitektur ab.

Prozessorintensive Anwendungen (wie VMs) können auf ihren eigenen Kern isoliert werden, so dass Sie sie verwenden können, ohne den Rest Ihres Systems zu kriechen. Theoretisch kann ein Hypervisor, der auf einem Prozessor läuft, der Bare-Metal-Hypervisor-Interaktion unterstützt, eine Prozessorleistung erreichen, die der eines unabhängigen Betriebssystems entspricht (abzüglich des für das Host-Betriebssystem erforderlichen Prozessors). In der Praxis muss natürlich auch eine VM, die auf einem eigenen, isolierten Core / Prozessor ausgeführt wird, einen geringen Overhead des Host-Betriebssystems akzeptieren.

Bei Anwendungen, die eine große Menge an Daten verarbeiten, wird durch das Isolieren der Anwendung für ihren eigenen Prozessor (und möglicherweise immer noch mehrere Kerne) das Cache-Swapping reduziert.

Ältere Anwendungen, die kaputt gehen, wenn sie auf mehrere Prozessoren verteilt sind, können effektiv auf einen Core / Prozessor beschränkt sein, um das Problem zu beheben.

Wenn Sie Leistungsmessungen für eine bestimmte Anwendung durchgeführt haben, ist es nahezu unmöglich, konsistente Ergebnisse für verschiedene Systeme zu erhalten, es sei denn, Sie können den Prozess isolieren, da Sie sonst keine Kontrolle darüber haben, wie viel Zeit das Betriebssystem Ihrer Anwendung gibt. Die meisten Leute sind sich einig, dass die Messung der Laufzeitleistung keine guten Ergebnisse liefert, aber diese Leute haben nie in Betracht gezogen, dass der Eingriff des Betriebssystems (das führt zu inkonsistenten Ergebnissen) durch die Verwendung von Affinität eingeschränkt werden kann.

Es gibt viele Fälle, in denen Affinität von entscheidender Bedeutung ist, aber wenn Sie nicht wissen, was sie sind, werden Sie sie wahrscheinlich nicht brauchen.

1
David M

Höhere Priorität bedeutet, dass die Verarbeitung einer Aufgabe gegenüber Aufgaben mit niedriger Priorität bevorzugt wird. Wenn Sie eine Anwendung ausführen, die sehr reaktionsschnell sein soll, und eine Reihe anderer nicht interaktiver Prozesse, können Prioritäten dazu beitragen, Ihren Prozess mit hoher Priorität besser zu erleben.

Beispiel: Seit Windows Vista erhält Windows Media Player automatisch eine höhere Priorität, um eine reibungslose und kontinuierliche Wiedergabe von Mediendateien zu gewährleisten. Standardmäßig sind nur etwa 20% der CPU-Zeit für andere Prozesse verfügbar. Dies ist nur ein Beispiel, das Ihnen hilft, die Prioritäten zu verstehen. (Weitere Informationen zu Media Player-Prioritäten in Vista finden Sie auf Technet .)

Weiche oder harte Affinität kann die Verarbeitungsgeschwindigkeit erhöhen, da der Cache der CPU noch Reste des Prozesses enthalten kann, wenn ein Prozess zuvor unterbrochen und später wieder aufgenommen wurde.

Süßer Dank! Was ist also ein guter Leitfaden für die Verwendung von afinity? KronoS vor 13 Jahren 0
http://www.addictivetips.com/windows-tips/how-to-set-prozessor-affinity-to-an-application-in-windows/ Moab vor 13 Jahren 0
Ein guter Leitfaden zur Verwendung von Affinität: "Nicht". Jamie Hanrahan vor 9 Jahren 0
Die "nur 20% CPU-Zeit, die für andere Prozesse verfügbar ist" ist keine genaue Beschreibung. Die tatsächliche Implementierung ist, dass ein Thread, der sich für den Multimedia-Klassen-Scheduler entscheidet, für _up bis 80% jedes Scheduling-Intervalls in der Echtzeit-Prioritätsklasse laufen darf. Es muss nicht unbedingt so viel verwendet werden und wenn nicht. mehr als 20% stehen anderen Threads zur Verfügung. Jamie Hanrahan vor 8 Jahren 0