Fedora에서 브라우저 메모리 제한

Fedora에서 브라우저 메모리 제한

모든 사용자에 대해 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=1GRUB_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.

더 편리하게 위 명령을 실행하도록 애플리케이션 시작 관리자/메뉴 항목을 바꿀 수 있습니다.

관련 정보