テラバイトの RAM による Go ガベージ コレクションのパフォーマンス
Go プログラミング言語は、特に長時間の GC 一時停止により、大量の RAM を処理する際に制限に直面していました。バージョン 1.5 での新しい Go ガベージ コレクターの導入により、テラバイト規模のメモリ管理の効率性について懸念が生じています。
この改善に関するベンチマークはありますか?
ベンチマークはほとんどありませんが、いくつかの観察が行われています:
- Go プロセスは現在、以下を超える量を使用できません。 512 GB の RAM (Linux)。テストされた最大ヒープ サイズは約 240 GB です。
- Go GC は、全体的なワークロードよりも GC 一時停止の削減を優先します。
- GC 一時停止が長くなるのは、通常、ポインターが少なく、割り当て率が高く、可用性が低い場合に発生します。 RAM は存在します。
への影響使用法:
改良された GC により一時停止時間が短縮されますが、ワークロードがなくなるわけではありません。 TB の RAM で実行されているアプリケーション、特にポインタの使用率と割り当て率がかなり高いアプリケーションでは、依然として GC の大きな影響が発生する可能性があります。
代替ソリューション:
GC のスケーラビリティが重要な状況の場合
- C などの低レベル言語の採用.
- 埋め込みデータベースやキャッシュ システムなどの外部サービスに大量のデータをアウトソーシングします。
- 単一の大きなプロセスではなく、より小さいヒープ サイズを持つ複数のプロセスをデプロイします。
- 徹底的なテストを実装します。メモリ関連を防ぐための最適化
追加情報:
- GC ワークロードは、ポインターの乗算、割り当て率、および予備 RAM の逆数として概念化できます。
- Go 1.5 より前では、一時停止はスタック上のポインターをスキャンすることによってトリガーされていました。グローバル。
- Go 1.6 では、バックグラウンド作業がさらに最適化され、最大 200 GB のヒープでの一時停止が削減されました。
- Go 1.8 では、スタック スキャンをグローバル一時停止とは別に処理することで、1 ミリ秒未満のほとんどの一時停止が軽減されました。
以上がテラバイトの RAM を備えた Go のガベージ コレクションはどのくらい効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。