1

cgroups で管理されたサービスがいくつかあります (実際には docker で実行されています)。リソースを必要とするいくつかのタスクを公平にスケジュールするために、コンテナー化されたサービスは、(可能な限り) 正確なリソース使用量を知る必要があります。このメトリクスを cgroups から読み取ることにしました。

しかし問題がある。docker コンテナーから cgroup データにアクセスする方法は 2 つあります。

  1. コンテナーの内部から cgroup を直接マウントします。これを実現するには、コンテナーに CAP_SYS_ADMIN 機能を付与する必要があります。これは、リソースの使用状況の指標のみを読み取るにはハードボイルドすぎる方法だと思います。

  2. ホスト cgroups マウントポイントを指す docker volume を使用します。このソリューションは多かれ少なかれ適切ですが、私はよりエレガントな方法を探しています。

私は「カーネルの人」ではなく、カーネルのソースとドキュメントに精通していないので、noob の質問をすることができます。

cgroups ファイルシステムをマウントせずに cgroups メトリックを読み取ることができるカーネル インターフェイスはありますか?

4

1 に答える 1

2

ユーザー空間で得られる唯一のインターフェースは、cgroup をマウントするか、 からのもの/proc/<pid>/cgourpsです (ただし、プロセスが属する cgroup に限定されます)。cgroups データを読み取るための syscall() を探している場合、その IMU は利用できません。Docker では cgroups サービス (cgconfig、cgred など) が実行されている必要があるため、cgroup をマウントする必要があります。

于 2014-09-17T13:30:02.390 に答える