시스템 메모리 제한 사용자 인스턴스가 작동하지 않습니다.

시스템 메모리 제한 사용자 인스턴스가 작동하지 않습니다.

저는 Arch Linux를 사용하고 있으며 systemd 버전은 239입니다. systemd.unified_cgroup_hierarchy=1 커널 매개변수를 사용하여 시스템을 부팅합니다.

Limit.slice와 malloc.service라는 두 개의 유닛 파일을 만들었습니다.

Limit.slice는

[Unit]
Description=limit memory slice.

[Slice]
MemoryAccounting=yes
MemoryMax=100M

malloc.service는

[Unit]
Description=memory consuming process

[Service]
ExecStart=/home/example/malloc_program
Slice=limit.slice

malloc_program은 메모리를 소비하기 위해 계속 malloc()을 호출합니다.

이 파일들을 /home/example/.config/systemd/user/에 넣고 실행했습니다 systemctl --user start malloc.service. 서비스의 CGroup이 예상보다 낮습니다 limit.slice.

CGroup: /user.slice/user-1000.slice/[email protected]/limit.slice/malloc.service

그러나 100MB 이상의 메모리를 사용해도 프로세스는 계속 실행됩니다.

사용자 인스턴스에서 메모리 제한이 작동하지 않는 이유를 이해할 수 없습니다 ...

답변1

.slice 파일에서 malloc 서비스를 설정해 보세요.

[Slice]
MemoryAccounting=true
MemoryLimit=100M
MemoryMax=100M
MemoryHigh=50M

관련 정보