질문
현재 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)
환경
저는 상당히 오래된 데비안 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
어떤 조언이라도 대단히 감사하겠습니다.