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


21

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

たとえば、完全に非rootユーザーとして次のことができます。

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

私は最初にここで尋ねましたが、完全な答えを受け取りませんでした。また、stackoverflowについて質問しましたが、質問はトピック外としてクローズされました。

回答:


18

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

systemdによってマウントされたデフォルトのcgroupsコントローラーがまだない場合:

$ 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

サブグループをどのように削除しますか?rm -r私にとって失敗
-hbogert

1
rm -r最初にファイルを削除しようとしますが、失敗します。rmdircgroupを削除するために使用します。
デニスB.

ファイルが空になるrmdirまでできませんtasks。rootはサブグループ内のタスクファイルを確認し、そこにある各pidをルートcgroupのタスクファイルにエコーする必要があります(/dev/cpuset/tasksRHEL 6.7 [kernel 2.6.32-358]ボックスにありますが、/sys/fs/cgroup/cpuset/tasksここでは適切なように見えます)。
マイクS

1

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

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


0

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


パート1のリンクは、代わりにlwn.net/Articles/531114を指しているはずです。
クリス

リンクされたLWNの記事は名前空間に関するものであり、lwn.net / Articles / 604609cgroupに関するものです。
デニスB.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.