O ClamAV mantém as cadeias de pesquisa usando os algoritmos de cadeia clássica (Boyer Moore) e de expressão regular (Aho Corasick). Sendo algoritmos da década de 1970, eles são extremamente eficientes em termos de memória.
O problema é o grande número de assinaturas de vírus. Isso leva as estruturas de dados dos algoritmos a crescer bastante.
Você não pode enviar essas estruturas de dados para troca, pois não há partes das estruturas de dados dos algoritmos acessadas com menos frequência do que outras partes. Se você forçar as páginas a trocarem de disco, elas serão referenciadas momentos depois e serão trocadas novamente. (Tecnicamente, dizemos "o acesso aleatório da estrutura de dados força toda a estrutura de dados a estar no conjunto de memória de trabalho do processo. ".)
As estruturas de dados são necessárias se você estiver verificando a partir da linha de comandos ou a partir de um daemon.
Você não pode usar apenas uma parte das assinaturas de vírus, pois não pode escolher quais vírus serão enviados e, portanto, não pode dizer de que assinaturas precisará.
Aqui está a memória usada em uma máquina de 32 bits executando o Debian Wheezy e é clamd.
# ps_mem.py
Private + Shared = RAM used Program
281.7 MiB + 422.5 KiB = 282.1 MiB clamd
Editar: vejo alguém sugerir definir o tamanho do conjunto residente. Se isso for bem-sucedido, ter um tamanho de conjunto residente menor que o tamanho do conjunto de trabalho levará ao processo de troca para e da troca. Isso reduzirá substancialmente o desempenho de todo o sistema. De qualquer forma, a página de manual do Linux para setrlimit (RLIMIT_RSS, ...) diz que definir o tamanho do conjunto residente não é mais suportado e nunca teve nenhum efeito nos processos que optaram por não chamar madvise (MADV_WILLNEED, ...).
Esta resposta não foi verificada e pode não funcionar. Ele também não responde como reduzir o uso da memória, mas como limitar o uso da memória, que é um pouco diferente.
Você pode editar o script init do ClamAV (int
/etc/init.d/
para adicionar o comandoulimit -m amountofram
.Isso limitará a possibilidade do ClamAV e você provavelmente trocará o que provavelmente reduzirá a velocidade de todo o sistema.
fonte