質問
現在、AWS EC2インスタンスで特定のユーザーのリソースを制限しようとしています。オンラインでいくつかの調査をした後、メモリが制限されたcgroupにユーザーを追加するのに次の内容で十分であると思います。
$ sudo apt-get install cgroup-bin cgroup-lite libcgroup1
$ cgcreate -a root -t ray_zhang -g memory:limitgroup
cgcreate: can't create cgroup limitgroup: Cgroup, operation not allowed
エラーメッセージを検索しましたが、重要なコンテンツが見つかりませんでした。私はこれを実行しており、root
ユーザーのメモリ使用量を100%に制限したいと思いますray_zhang
。
修正も試みましたが、cgrules.conf
メモリ制限を観察できませんでしたcgconfig.conf
。/etc
私は次のことをしました。
/etc$ cat cgrules.conf
ray_zhang memory memlimit/
/etc$ cat cgconfig.conf
group memlimit {
memory {
memory.limit_in_bytes = 1024m;
}
}
テストするには、次のようにしました(userにray_zhang
渡されますsudo su ray_zhang
)。
$ python
Python 2.7.12 (default, Jul 18 2016, 15:02:52)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x = ' '*3000000000
htopでは、約3GBのRAMを使用することがわかりました。これは、1024mの制限が遵守されないことを意味します。
努力する
もう一つの試みはこの回答 。指示に従って同じPythonテストを実行すると、メモリは再び無制限になり、次に観察されます。
$ cat /var/log/cgrulesengd.log | grep python
Cgroup change for PID: 22745, UID: 16975, GID: 996, PROCNAME: /usr/bin/python2.7 FAILED! (Error Code: 50002)
環境
私はかなり古いDebian OSバージョンを実行しています。
/etc$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
/etc$ uname -a
Linux <redacted> 4.4.0-154-generic #181~14.04.1-Ubuntu SMP Tue Jun 25 16:40:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
ただし、そのインスタンス内でUbuntu 18.04を使用してDockerコンテナ内でこれを試しましたが、まだ同じCgroup, operation not allowed
エラーで失敗しました。
追加
私が疑うことの一つは仮想化された環境では、cgroupに問題があります。私がEC2で実行していることは、おそらく仮想マシンやコンテナ内で作業しているということです。おそらく、これはcgroupを使用できなくなりますか?
cgred
onを使用するオンラインフォーラムも見ましたが、systemd
次の3つをインストールしてもインストールされないようですapt-get
。
/etc$ which cgred
/etc$ sudo service cgred start
cgred: unrecognized service
どんなアドバイスも本当にありがとうございます。