ホームページ >バックエンド開発 >Golang >Go スケジューラが新しい M プロセッサと P プロセッサを割り当てるのはいつ、なぜですか?

Go スケジューラが新しい M プロセッサと P プロセッサを割り当てるのはいつ、なぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 17:36:03984ブラウズ

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

Go スケジューラが新しい M および P プロセッサを割り当てる時期と理由

アプリケーションのパフォーマンスを最適化するには、Go ランタイムのスケジューリング モデルを理解することが重要です。このモデルの重要な側面の 1 つは、M (マシン) と P (プロセッサ) の割り当てです。

M と P はいつ作成されますか?

M 個のプロセッサはいつ作成されますか? :

  • 新しいゴルーチンが開始されます (予備のアイドル M がない場合)
  • 既存の M が A システム コールをブロックします (M として知られる新しいオペレーティング システム スレッドを作成します) )

P プロセッサは、すべてのローカル runqueue が満杯のときに作成されます。1 つの goroutine が実行中です。実行準備ができている隣接する goroutine はグローバル キューに入れられ、単一の p が含まれます。

タスクのブロックと P 再利用

提供されたテスト コードでは、ゴルーチンはブロック データベース操作を実行します。タスクをブロックすると、P プロセッサから M プロセッサが削除されます。

この場合、ブロックされたゴルーチンを処理するには、新しい M プロセッサを作成する必要があります。最初の 8 (仮想コアの数) M プロセッサでは、2 番目のバッチには十分ではありません。新しい M プロセッサーは、必要に応じて割り当てられます。

追加リソース

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

以上がGo スケジューラが新しい M プロセッサと P プロセッサを割り当てるのはいつ、なぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。