Wechselt der Prozess zwischen verschiedenen Kernen?

365
FunctionBlock

Wechselt ein Prozess zwischen verschiedenen Kernen, um die Leistung zu steigern? Wenn der Prozess zwischen Kernen springt, welche Komponenten werden von Kernen gemeinsam genutzt? L1-L3 Cache, Register oder Speicher?

2
Beachten Sie, dass ein Prozess nur eine Speicherstruktur ist. Ein oder mehrere Threads werden während der Prozesserstellung bootstraped. Sie werden unter Verwendung der Prozessspeicherstruktur als Ressource ausgeführt. Ein Prozess wird jedoch nicht ausgeführt. die damit verbundenen Threads tun dies. Frank Thomas vor 6 Jahren 0

3 Antworten auf die Frage

1
duDE

Wird Process zwischen verschiedenen Kernen wechseln, um die Leistung zu steigern?

Dies hängt davon ab, ob der Prozess ein Multithreading-Prozess ist oder nicht. Der Prozess selbst ist im Grunde nur ein "Container" für Threads, es muss mindestens einer zur Ausführung vorhanden sein. Jeder Thread kann einen CPU-Kern verwenden. Wenn Ihr Prozess über 2 Threads (einen GUI- und einen Arbeitsthread) verfügt, wird er auf zwei CPU-Kernen ausgeführt.

Die Frage "Wird Prozess zwischen verschiedenen Kernen wechseln" ist nicht genau richtig, da ein solcher Wechsel vom Betriebssystem (OS) geplant wird, NICHT vom Prozess selbst!

Danke duDE Wenn das Betriebssystem den Prozess A für die Fortsetzung von Core B einnimmt, wenn Core A ausgelastet ist, wie kann OS (Linux) sicherstellen, dass alle Variablen, Status und Operationen übertragen werden und wie? FunctionBlock vor 6 Jahren 0
Dies ist der sogenannte "Kontextwechsel", der vom Betriebssystem verwaltet wird. Schauen Sie dazu nach: https://en.wikipedia.org/wiki/Context_switch duDE vor 6 Jahren 0
Beachten Sie, dass Kontext-Switches vom Betriebssystem angefordert werden, wenn dies gewünscht wird, jedoch vollständig in der CPU-Hardware ausgeführt werden, und dies nach Belieben der CPUs (z. B. Interrupt-Behandlung nachschlagen). Frank Thomas vor 6 Jahren 0
0
Strangelovian

Stellen wir uns eine ausgelastete Einzel-CPU mit 2 Kernen vor, bei der die Last nahezu 100% beträgt.

Ein Prozess mit PID 1234 hat nur einen Thread (z. B. Konsolenanwendung, die Monothread-Audiokomprimierung durchführt).

Bei dieser Art von Prozess versucht das System, den Thread auf demselben Kern auszuführen, um Cache-Fehler zu minimieren. Wenn das System jedoch sehr ausgelastet ist, können ähnliche Prozesse möglicherweise auch auf denselben Kernen ausgeführt werden. In diesem Fall kann Ihr Single-Thread-Prozess im Prinzip zuerst auf Core # 1, dann auf Core # 2 usw. ausgeführt werden.

0
harrymc

Der Prozesswechsel zwischen den CPUs beeinträchtigt die Leistung, da der Switch die Prozessinformationen und Register im Speicher speichert und diese dann in die andere CPU lädt.

Diese Speicher- und Ladebefehle gehören zu den langsamsten Befehlen in der CPU, werden jedoch bei sehr seltener Ausführung nicht bemerkt.

Dieser Vorgang ist genau derselbe, als wenn ein Prozess seine Zeitscheibe beendet, vom Betriebssystem angehalten und dann mit einer neuen Zeitscheibe neu gestartet wird.