cgroup이 작동하지 않는 사용자 램 제한(나를 위해)

cgroup이 작동하지 않는 사용자 램 제한(나를 위해)

여러 튜토리얼/댓글/Google에서 찾은 내용으로 cgroup 실행을 관리하지 않았기 때문에 등록했습니다. 특정 사용자가 사용할 수 있는 RAM의 양을 제한하고 싶습니다. 인터넷은 "cgroups"라고 말합니다. 내 테스트 서버는 Ubuntu 14.04를 실행하고 있습니다. 언급된 튜토리얼을 두 가지 범주로 나눌 수 있습니다. echo를 사용하여 직접 제한을 설정하고 특정 구성을 사용합니다. 둘 다 나를 위해 일하지 않습니다.

에코를 사용하여 제한 설정

cgcreate -g cpu,cpuacct,...:/my_group

아무런 공지 없이 종료됩니다. 내가 달리려고 할 때

echo 100M > memory.limit_in_bytes

sudo를 사용하는 경우에도 "허용되지 않음"이라고 표시됩니다. 다른 사용자를 제한하는 지점에도 도달하지 못했습니다.

구성을 사용하여 제한 설정

두 개의 구성 파일에 대해 읽었습니다. 내 구성 파일은 다음과 같습니다.

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제거하는 사용자 정의 cgroup을 사용할 수 있습니다 .memoryControllers

답변2

/etc/cgconfig.conf저도 비슷한 문제를 겪었습니다(Fedora 29에서는). my가 완전히 무시되는 것 같았습니다 . 달리기

sudo systemctl enable cgconfig

재부팅하면 문제가 해결되었습니다.

관련 정보