2017-12-07 2 views
0

Auf der documentation-page von Node.js Clustern gibt es einige Beispiele, in denen die Arbeiter „hervorgebracht“ werden wie folgt aus:Master und Worker Clustering: Auf welchem ​​Kern läuft der Master?

// Start workers and listen for messages containing notifyRequest 
    const numCPUs = require('os').cpus().length; 
    for (let i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

Dies bedeutet, dass für jede CPU - Kern ein Arbeiter hervorgebracht wird, nicht wahr? Auf welchem ​​CPU-Core ist der Master? Node.js ist single-threaded. Wenn es nur einen Master gibt, dann muss es mindestens 2 Prozesse auf mindestens einer CPU geben - Core, weil der Master auf einem der CPU-Cores laufen muss. Ist meine Annahme richtig?

+0

Ich bin kein Experte, aber ich glaube nicht, dass ein Programm auf einem bestimmten CPU-Core läuft. Ich denke, seine OS Verantwortung zu teilen und zu entscheiden, welchen Kern es jedes Mal verwenden wird. – Stamos

+0

Dann verstehe ich nicht, warum ich für 'schreiben würde (lassen Sie i = 0; i

+0

Weil wenn Sie aus irgendeinem Grund 100% der CPU alle verwenden Zeit, wenn Sie 4 Kerne mit 4 Threads haben, können Sie maximal 4 Instanzen Ihrer App ausführen – Stamos

Antwort

1

Ja, wenn Sie zum Beispiel 4 logische Kerne haben, teilt ein Master-Knoten einen Kern mit einem von 4 Arbeitern, was keine große Sache ist, da der Master-Knoten keine schwere Last behandeln sollte .

Aber hier ist ein Fang os.cpus eine Menge an logische Kerne zurückgibt, nicht körperlich, es sollte noch in Ordnung sein, wenn Ihre Anwendung I/O gebunden ist, aber für schwere Rechenaufgaben, werden Sie wahrscheinlich sollte die Begrenzung der Anzahl der Arbeitnehmer berücksichtigen um stattdessen physikalische Kerne zu berechnen (oder eine andere Laufzeit zu verwenden).

0

Hoffnung hilft dies genommen von How do multi core processors handle programs

prüfen zweiter Absatz. Sagt man über Single-CPU-Programme wie NodeJs.

Jeder CPU Kern eine vorher festgelegte Anzahl von Threads, die beispielsweise ein Dual-Core CPU könnte potentiell 4 Threads (Hyper-Threading), was bedeuten, dass jedes Programm läuft seine zugewiesene Menge verwenden CPU-Ressourcen auf einem zugewiesenen Kern. (Die Ressourcenzuweisung wird hauptsächlich vom System selbst bestimmt, und ob der Benutzer und daher die CPU Ressourcen für die Auslastung zugewiesen hat oder nicht). Die CPU Threads und Kerne laufen alle mit der Nennfrequenz der CPU, dh Milliarden Zyklen pro Sekunde. Je schneller die Taktgeschwindigkeit ist, desto schneller sind die Prozesse abgeschlossen. Eine CPU mit mehr Kernen kann die Arbeitslast effizienter aufteilen. Zum Beispiel kann ein 8-Core-Prozessor, der mit 1,5 GHz läuft, einen Prozess schneller abschließen, wenn der Prozess alle 8 Kerne gleichzeitig verwendet. ABER, ein Single-Thread-Programm (Ein Programm mit nur einen Thread), wird einen viel höheren Vorteil einer CPU mit sagen, 2 Kerne bei 3 Ghz laufen.

Wenn zwei Programme geöffnet sind, die so programmiert sind, dass nur 1 CPU-Kern verwendet wird, wird das Programm mit der höchsten Priorität dem Kern 0 zugewiesen (Kern Null ist der erste Kern). Alle anderen geöffneten Programme werden dem Prozessorkern zugewiesen, der den Prozess am schnellsten abschließen wird. In den meisten Fällen funktioniert das Betriebssystem des Computers relativ gut, um Arbeitsbelastungen über mehrere Kerne aufzuteilen, leider sind einige Programme nur programmiert, um einen Kern zu nutzen. Wenn dies der Fall ist, benötigt das Programm wahrscheinlich nicht mehrere Kerne, im Gegensatz zu einem Videobearbeitungsprogramm oder 3D-Entwicklung Programm.

Wenn 8 Programme waren auf einmal offen, und wenn sie alle eine beträchtliche Menge der CPU-Ressourcen auf einem 4-Core-CPU mit waren, für 1, der Computer wäre deutlich langsamer, als wenn sie im Leerlauf.Jedem Prozess wird eine zugewiesene Menge an CPU-Ressourcen zugewiesen, und jedes Programm würde dementsprechend priorisiert werden und Anweisungen würden in CPU-Cache gespeichert werden, aber wenn die geöffneten Programme 100% der CPU Nutzung verwenden, und ist läuft mit seiner maximalen Frequenz, dann werden die Programme verlangsamen, wie sie in einer "Warteschlange" gehalten werden und eine erhebliche Verzögerung würde impliziert werden, bis die CPU ihre Anweisungen abgeschlossen hat. Beachten Sie, ein ähnlicher Effekt kann beim Herunterladen von Dateien beobachtet werden; 8 gleichzeitige Downloads werden langsamer heruntergeladen als 2, wenn die Dateien die Download-Geschwindigkeitsbegrenzung erreichen.

hoffte, das hilft, und als allgemeine Faustregel für den Grund Anwendungen CPU-Geschwindigkeit ist wichtiger als Kernzahl, obwohl allgemein gesprochen, eine CPU mit 2 oder mehr Kern ist ziemlich gut für die allgemeinen Gebrauch.

Verwandte Themen