cgroupsを使用してアプリケーションの優先度を制御する


8

cgroupをよりよく理解し、cgroupを適用するためのユースケースを理解したいと思います。

cgroupsは、さまざまなアプリケーションに優先順位を付ける(つまり、Webサーバーなどの特定のタイプのアプリケーションに高い優先順位を与える)ための良い方法ですか?


CPUスロットリングはcgroupsの良い使用例です:kennystechtalk.blogspot.co.uk/2015_04_01_archive.html
Ken Sharp

回答:


8

cgroupsにはいくつかの用途があります。システム管理からおそらく最も重要なのはリソースの制限です-ここでの古典的な例はCPUアクセスです。egのグループを作成して、sshd無視できないCPUタイムシェアを(他のグループまたはすべてのソートされていないプロセスに該当するデフォルトと比較して)与えると、マシンが実行されているときでもログインできることが保証されますCPUを集中的に使用するタスク。

さらに興味深いことに、この「リモートアクセス」プロセスに残りのCPUシェアよりもはるかに高いCPUシェアを与えると、ほとんど瞬時にログインできます(sshデーモンは実行中の残りのプロセスよりも優先されるため)。リソースは必要に応じてのみ割り当てられるため、マシンの全体的な計算強度。通常、これをI / O(ネットワークを含む)優先順位付けと一緒に行います。ただし、下のコメントでジョンが正しく指摘しているように、不用意にこれらのことをしたくありません(予期しない方法で起動する可能性があるため)。覚えておくべき重要なことは、グループはデフォルトで継承されるということです-つまり、そのようなsshセッションからメモリ/ CPUの独占を開始したくないのです。しかし、これには、プロセスの開始時にプロセスをcgroupに割り当てることができるメカニズムがあります。

別の用途は、プロセスを互いに分離することです。最近のLinuxカーネルの他の機能(名前空間の分離)と組み合わせて、LXC(Linux Containers)などのOSレベルの仮想化を作成するために使用されます。

それ以外にも、さまざまなアカウンティングや制御を行うことができます(一部のプロセスグループをフリーズしたり、特定のCPUコアに割り当てたりするなど)。

ここにある2つのリンクは、詳細情報を探している場合は、妥当な出発点になるはずです。Documentation/cgroupsLinuxカーネルソースツリーのディレクトリを確認することもできます。


ありがとうございました。sshdの例は興味深いものであり、別の関連する考えを持ち出します。私が考慮しなかった1つの側面は、他のリソースが適切に割り当てられるようにすることです-アプリケーションのプロファイルについて不完全な知識を持つ誰かが、CPUにリソースを割り当てるだけで(この例では)、I / O(たとえばネットワーク)。もしそうなら-どこかに公開されているcgroupのよく知られたプロファイルはありますか?
ジョニー

@ジョン興味深い質問です。を持つディストリビューションをチェックしたい場合がありますsystemd。これは、独自の目的でcgroupを(ab)使用します。サービスのsystemdユニットファイルは、妥当である可能性があることについていくつかの手掛かりを与える可能性があります。しかし、結局のところ、実際に「グッドアイデア(TM)」ではないものを理解するのは、システム管理者の責任です。
peterph 2012年

1
@kokbiraはどのレベルに依存します-通常、cgroup最初にマウントする必要がある疑似ファイルシステムに書き込みます。今日のほとんどの場合、initシステムはあなたのためにそれを行い、多くの場合、すでに何らかの方法でcgroupを使用しています。唯一の決定的な答えは、ドキュメントを読むことです:kernel docsOpenRC @ Gentoosystemd @ freedesktop
peterph 2018

1
@kokbiraオペレーティングシステムは、ユーザーが指示したことを実行します(少なくとも良いもの-指示されていない他の多くのことを実行するものもありますが、それは別の話です)。アイデアは、アプリケーションを実行する場合、期待どおりに実行するために必要なものをすべて取得することです。アプリケーションが正常に動作しない場合、システムオペレーター(この場合はたまたまあなた)がそれについて何かをする必要があります。ディストリビューションの作成者は、この種の問題を捕捉する方法をいくつかの発見的方法で思いつくかもしれませんが、修正するより多くの問題を引き起こすでしょう。
peterph 2018

1
@kokbira Firefox自体については、ブラウザとその結果としてシステム全体にかかる負荷を軽減するいくつかのアドオンを使用することをお勧めします。私の経験から、NoScriptとuBlockの起源で十分です。特に「デフォルトですべてをブロックする」のNoScriptは不思議です-使用しているWebサイトで作業するために必要な最低限を有効にするだけで、8 GBのRAMシステムで数百のタブに簡単にアクセスでき、それでも十分に機能します。さらに、ほとんどのWebサイトが不必要な奇妙な効果のために最近使用しているすべてのJSのゴミからの保護の追加レベルがあります。
peterph
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.