私はcgroupをよりよく理解し、cgroupを適用するユースケースを理解したいと思います。
cgroupは、さまざまなアプリケーションの優先順位を指定する良い方法ですか(つまり、特定の種類のアプリケーション(Webサーバーなど)に高い優先順位を付けること)?
ベストアンサー1
用途が多いcgroup。システム管理の観点から最も重要なのは、リソースを制限することです。典型的な例はCPUアクセスです。たとえば、グループを作成してsshd
無視できないCPU時間共有を提供すると(他のグループまたはすべてのソートされていないプロセスが属するデフォルトと比較して)、CPUを多用するタスクにログインできます。機械が作動中です。
もっと興味深いのは、この「リモートアクセス」プロセスに他のプロセスよりも高いCPU共有を提供すると、すぐにログインできることです(sshデーモンが実行中の残りのプロセスよりも優先されるため)。創傷リソースは必要な場合にのみ割り当てられるため、システムの全体的な計算強度です。通常、I / O(ネットワークを含む)優先順位でこれを実行しようとしています。しかし、ジョンが以下の説明で正しく指摘したように、これらの操作を不注意に実行することは望ましくありません(予期しない方法で再度発生する可能性があります)。覚えておくべき重要な点は、これらのグループが基本的に継承されることです。つまり、これらのSSHセッションでメモリ/ CPUの使用を開始したくありません。ただし、これを行うには、プロセスの開始時にcgroupにプロセスを割り当てるメカニズムがあります。
別の用途は、プロセスを互いに分離することです。最新のLinuxカーネルの他の機能(名前空間の分離)と組み合わせて、オペレーティングシステムレベルの仮想化を作成するために使用されます。LXC(Linuxコンテナ)。
これに加えて、さまざまな統計および制御タスク(特定のプロセスグループの凍結、特定のCPUコアへの割り当てなど)を実行できます。
より多くの情報を探している場合は、ここにある2つのリンクが合理的な出発点になります。Documentation/cgroups
Linuxカーネルソースツリーでディレクトリを確認することもできます。