web-dev-qa-db-ja.com

root以外のユーザーとしてLinux cgroupを作成して使用するにはどうすればよいですか?

Root以外のユーザーとして cgroups を作成して使用するにはどうすればよいですか?

たとえば、完全に非rootユーザーとして私はできますか?

  • 1つのCPUにアクセスできるcgroupを作成する
  • そのcgroupに新しいプロセスを作成する

私は最初に here と尋ねましたが、完全な回答が得られませんでした。私も stackoverflowで尋ねた ですが、質問はトピック外としてクローズされました。

21
Adam Monsen

通常のユーザーとしてそれを行うことはできません。しかし、cgroupをrootとしてセットアップし、ユーザーが構成できるようにすることができます。

まだデフォルトのcgroupsコントローラーをマウントしていない場合は、 systemd:

$ Sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ Sudo mkdir /sys/fs/cgroup/cpuset
$ Sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

Cgroupを作成します。

$ Sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ Sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

これで、cgroupの構成を通常のユーザーとして変更できます。

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

そのグループにプロセスを追加します。

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

または、サブグループを作成します。

$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks
18
chris

Ubuntuを使用している場合、あなた(ルートユーザー)はcgroup-liteをインストールし、/ etc/cgconfig.confに必要なものを追加できます。これには、cgroupの構成を変更できるユーザーも含まれます。起動時に実行されます。

あなた(rootユーザー)がブート中に実行する独自のスクリプトを追加できない場合。

1
Ken Sharp

[〜#〜] lwn [〜#〜] に関する一連の記事がcgroupsにあります。 part 1 を参照するか、検索をご覧ください。 Systemd には、cgroupを管理する(ケージ化されたプロセス)ヘルパーのセットが含まれています。

0
vonbrand