Heim  >  Artikel  >  Backend-Entwicklung  >  Wann und warum weist der Go-Scheduler neue M- und P-Prozessoren zu?

Wann und warum weist der Go-Scheduler neue M- und P-Prozessoren zu?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 17:36:03894Durchsuche

When and Why Does the Go Scheduler Allocate New M and P Processors?

Wann und warum der Go-Scheduler neue M- und P-Prozessoren zuweist

Das Verständnis des Planungsmodells der Go-Laufzeit ist für die Optimierung der Anwendungsleistung von entscheidender Bedeutung. Ein wichtiger Aspekt dieses Modells ist die Zuordnung von M (Maschinen) und P (Prozessoren).

Wann werden M und P erstellt?

M-Prozessoren werden wann erstellt :

  • Eine neue Goroutine wird gestartet (es sei denn, es gibt ein freies M in Leerlauf)
  • Ein vorhandenes M blockiert einen A-Systemaufruf (erstellt einen neuen Betriebssystem-Thread, bekannt als M )

P-Prozessoren werden erstellt, wenn alle lokalen Runqueues voll sind. Eine Goroutine führt ihre benachbarten Goroutinen aus, die zur Ausführung bereit sind, werden in eine globale Warteschlange gestellt und enthalten ein einzelnes P.

Blockierende Aufgaben und P-Wiederverwendung

Im bereitgestellten Testcode führen die Goroutinen blockierende Datenbankoperationen durch. Blockierende Aufgaben entfernen M-Prozessoren von P-Prozessoren.

In diesem Fall ist die Erstellung neuer M-Prozessoren erforderlich, um die blockierten Goroutinen zu verarbeiten. Die anfänglichen 8 (Anzahl der virtuellen Kerne) M-Prozessoren werden für die zweite Charge nicht ausreichen. Neue M-Prozessoren werden nach Bedarf zugeteilt.

Zusätzliche Ressourcen

  • https://www.programmersought.com/article/79557885527/
  • https://blog.golang.org/go-goroutine-os-thread-and-cpu-management

Das obige ist der detaillierte Inhalt vonWann und warum weist der Go-Scheduler neue M- und P-Prozessoren zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn