0

/cgroup/memory/tasks と /cgroup/cpuset/tasks を分類したところ、多くの重複したタスクが見つかりました。タスクは 1 つの cgroup 階層にしか表示されないのではないですか? 私は cgroup メカニズムにあまり詳しくありません。メモリと cpuset は、タスクの動作のさまざまな側面を制御するだけですか?

より具体的には、異なるサブシステムの動作が、両方のタスクが関係する別のサブシステムと競合するとどうなるでしょうか?

4

1 に答える 1

0

2 つの原則が混在しています。どのプロセスも常に何らかの cgroup のメンバーですが、これは cgroup 階層 (互いに独立している) に関して機能します。したがって、すべてのプロセスは、定義した各 cgroup 階層内の cgroup のメンバーになります (通常は にマウントされます/cgroup/HIERARCHY_NAME)。

例えば。2 つの階層を持つようにマシンを構成する場合:

  • cgroup コントローラーに/cgroup/memory関連付けてマウントmemory
  • cgroup コントローラーに/cgroup/cpuset関連付けてマウントcpuset

新しいcgroupを作成してその中にプロセスを入れるまで、実行中のすべてのプロセスのpidを含む/cgroup/cpuset/tasks両方のファイルから始めます。/cgroup/memory/tasksしたがって、ここで同じ pid が表示されるのも不思議ではありません。

さらに、cgroup 階層は独立しているため、cgroup コントローラーを複数の階層に接続することはできません。これにより、明らかな競合がなくなります。

于 2014-03-29T01:27:49.707 に答える