Maison >développement back-end >Golang >Quand et pourquoi le Go Scheduler alloue-t-il de nouveaux processeurs M et P ?

Quand et pourquoi le Go Scheduler alloue-t-il de nouveaux processeurs M et P ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 17:36:03981parcourir

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

Quand et pourquoi le planificateur Go alloue de nouveaux processeurs M et P

Comprendre le modèle de planification du runtime Go est crucial pour optimiser les performances des applications. Un aspect clé de ce modèle est l'allocation de M (machines) et P (processeurs).

Quand M et P sont-ils créés ?

Les processeurs M sont créés lorsque :

  • Une nouvelle goroutine est démarrée (sauf s'il y a un M inactif de rechange)
  • Un M existant bloque sur un appel système A (crée un nouveau thread de système d'exploitation connu sous le nom de M )

Les processeurs P sont créés lorsque toutes les files d'attente d'exécution locales sont pleines, une goroutine exécute ses goroutines voisines prêtes à s'exécuter sont placées dans une file d'attente globale et elle contient un seul p.

Tâches de blocage et réutilisation

Dans le code de test fourni, les goroutines effectuent des opérations de blocage de la base de données. Les tâches bloquantes suppriment les processeurs M des processeurs P.

Dans ce cas, la création de nouveaux processeurs M est nécessaire pour gérer les goroutines bloquées. Les 8 processeurs M (nombre de cœurs virtuels) initiaux ne suffiront pas pour le deuxième lot. De nouveaux processeurs M seront alloués selon les besoins.

Ressources supplémentaires

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn