システムメモリの制限ユーザーインスタンスが機能していません。

システムメモリの制限ユーザーインスタンスが機能していません。

私はArch Linuxを使用しており、systemdバージョンは239です。 systemd.unified_cgroup_hierarchy = 1カーネルパラメータを使用してシステムを起動します。

Limit.sliceとmalloc.serviceという2つのユニットファイルを作成しました。

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

ただし、100 MB 以上のメモリを使用してもプロセスは実行され続けます。

ユーザーインスタンスでメモリ制限が機能しない理由を理解できません...

答え1

.sliceファイルでmallocサービスを設定してみてください。

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

関連情報