私はいくつかのチュートリアル/レビュー/ Googleで見つけることができるすべてを介してcgroupの実行を管理することができなかったので参加しました。特定のユーザーが使用できるメモリ量を制限したいです。インターネットには「cgroups」と記載されています。私のテストサーバーはUbuntu 14.04を実行しています。上記のチュートリアルを2つのカテゴリに分けることができます。制限を直接設定して特定の設定を使用するには、echoを使用してください。どちらも私には適していません。
エコーを使って制限を設定する
cgcreate -g cpu,cpuacct,...:/my_group
終了すると、何の通知もありません。私が走ろうとしたとき
echo 100M > memory.limit_in_bytes
sudoを使用しても「許可されていません」としか表示されません。何らかの方法で他のユーザーを制限するポイントまで到達できませんでした。
構成を使用した制限の設定
2つの設定ファイルを読みました。これは私の設定ファイルです。
cgconfig.conf
mount {
memory = /cgroup/memory;
}
group limit_grp {
memory {
memory.limit_in_bytes=100M;
memory.memsw.limit_in_bytes=125M;
}
}
cgrules.conf
testuser memory limit_grp
私が走るとき
cgconfigparser -l /etc/cgconfig.conf
systemdにインストールされます。私はtestuserとしてログインしてメモリ集約的なタスクを実行しています。これは私の制限に関係なく実行されます。
再起動しても何も変わりませんでした。カーネル構成に対する奇妙な試みでさえうまくいきませんでした。私は初めてcgroupsに触れ、これがそれほど複雑になるとは思わなかった。私のトピックに関する提案をいただきありがとうございます。よろしくお願いします!
答え1
この現象が発生するのは、ログインセッションにすでに関連付けられているメモリ制限グループがあり、システム構成によってはプロセスがそのメモリ制限グループを継承しているためです。
次のコマンドを使用して、実行中のプロセスcgroupを確認します。
cat /proc/pid/cgroup
...次のような内容が表示されることがあります。
13:name=systemd:/user/0.user/2.session
12:debug:/
11:pids:/
10:net_prio:/user/0.user/2.session
9:perf_event:/user/0.user/2.session
8:net_cls:/user/0.user/2.session
7:freezer:/user/0.user/2.session
6:devices:/user/0.user/2.session
5:memory:/user/0.user/2.session
4:blkio:/user/0.user/2.session
3:cpuacct:/user/0.user/2.session
2:cpu:/
1:cpuset:/
この動作を望まないと仮定すると、メモリコントローラの編集および/etc/systemd/logind.conf
行memory
削除にカスタムcgroupを使用できますControllers
。
答え2
同様の問題がありました(しかしFedora 29では):私の質問は/etc/cgconfig.conf
完全に無視されたようです。走る
sudo systemctl enable cgconfig
再起動すると問題が解決しました。