모든 사용자에 대해 Chromium(/bin/chromium-browser) 및 Firefox(/bin/firefox)의 메모리 사용량을 제한하고 싶습니다.
Fedora로 마이그레이션하기 전에 저는 이를 달성하기 위해 cgroup을 사용했습니다. 그러나 Fedora에서는 cgroup이 더 이상 사용되지 않는다고 들었습니다. cgroup 없이 1GB RAM 제한을 설정하는 방법은 무엇입니까?
편집: 이 작업을 수행하기 위해 cgroup을 사용해 보았습니다.
/etc/cgconfig.conf
group browsers {
memory {
memory.limit_in_bytes = 1024m;
memory.memsw.limit_in_bytes = 1024m;
memory.soft_limit_in_bytes = 1024m;
}
}
/etc/cgrules.conf
*:/bin/chromium-browser memory browsers
그러나 이후에
sudo service cgconfig start
systemctl status cgconfig.service
나는 받고있다
● cgconfig.service - Control Group configuration service
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2018-06-24 13:41:07 CEST; 29min ago
Process: 9239 ExecStart=/usr/sbin/cgconfigparser -l /etc/cgconfig.conf -s 1664 (code=exited, status=87)
Main PID: 9239 (code=exited, status=87)
Jun 24 13:41:07 me systemd[1]: Starting Control Group configuration service...
Jun 24 13:41:07 me cgconfigparser[9239]: /usr/sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup, operation not allowed
Jun 24 13:41:07 me systemd[1]: cgconfig.service: Main process exited, code=exited, status=87/n/a
Jun 24 13:41:07 me systemd[1]: cgconfig.service: Failed with result 'exit-code'.
Jun 24 13:41:07 me systemd[1]: Failed to start Control Group configuration service.
나는 작동하는 cgroup이나 cgroup이 없는 대안에 만족할 것입니다.
답변1
또 다른 방법은 다음을 사용하는 것입니다 systemd-run
.MemoryHigh
리소스 제어(예:
systemd-run --user --no-block -p MemoryHigh=1G firefox
MemoryHigh
이는 CGroup V2의 기능이며 더 이상 사용되지 않습니다.systemd.resource-control(5) 맨페이지에 설명된 대로우리는 시스템에서 CGroup V2를 사용하도록 해야 합니다. 이렇게 하려면 를 추가 systemd.unified_cgroup_hierarchy=1
한 GRUB_CMDLINE_LINUX_DEFAULT
다음 /etc/default/grun
실행 해야 합니다 update-grub
. 이 리소스 제어는 손상되어 일부 버전의 systemd에서는 작동하지 않습니다.v239 (해결책도 있음).
답변2
파일 구문을 대화형으로 확인할 수 있습니다.
$ sudo cgconfigparser -l /etc/cgconfig.conf -s 640 -t your-uid:your-gid
cgroup을 생성하고 권한을 연결해야 합니다.
$ sudo cgcreate -a your-uid:your-gid -t your-uid:your-gid -g memory:browsers
그런 다음 cgroup이 활성화된 상태에서 브라우저를 시작해 보십시오.
$ cgexec -g memory:/browsers /bin/chromium-browser
답변3
어쩌면 timeout
도움이 될 수도 있습니다:https://github.com/pshved/timeout
Github 페이지에서:
-t T
-CPU+SYS 시간 제한을 T초로 설정
-m M
- 가상 메모리 제한을 M KB로 설정
그래서 당신은 실행해야합니다 timeout -m 1000000 /bin/chromium-browser
.
더 편리하게 위 명령을 실행하도록 애플리케이션 시작 관리자/메뉴 항목을 바꿀 수 있습니다.