limite de memória systemd não funciona / exemplo

1

Estou tentando usar a infraestrutura do systemd para eliminar minha memória vazamento de serviço quando seu uso de memória atinge algum valor. O arquivo de configuração usado é o seguinte:

[Unit]
Description="Start memory gobbler"
After=network.target
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K

[Service]
ExecStart=/data/memgoble 8388600

systemd versão é 237. No entanto, não importa o que eu defina no MemoryMax , o kernel mataria o processo em seus próprios termos, geralmente quando seu consumo de memória atinge quase toda a RAM física. Estou executando isso em um sistema embarcado sem troca.

Alguém vê um erro óbvio na configuração? Talvez existam outras configurações que estão faltando.

    
por ilya1725 12.06.2018 / 00:41

1 resposta

4

Você tem os parâmetros de configuração na seção errada.

Se você procurar nos seus registros, deverá ver:

Unknown lvalue 'MemoryAccounting' in section 'Unit'
Unknown lvalue 'MemoryHigh' in section 'Unit'
Unknown lvalue 'MemoryMax' in section 'Unit'

link

The resource control configuration options are configured in the [Slice], [Scope], [Service], [Socket], [Mount], or [Swap] sections, depending on the unit type.

Assim você quer:

[Unit]
Description="Start memory gobbler"
After=network.target

[Service]
ExecStart=/data/memgoble 8388600
MemoryAccounting=true
MemoryHigh=1024K
MemoryMax=4096K
    
por 12.06.2018 / 03:55