ClamAV contiene le stringhe di ricerca utilizzando gli algoritmi di stringhe classiche (Boyer Moore) e di espressioni regolari (Aho Corasick). Essendo algoritmi degli anni '70, sono estremamente efficienti in termini di memoria.
Il problema è l'enorme numero di firme dei virus. Questo fa sì che le strutture dati degli algoritmi diventino piuttosto grandi.
Non è possibile inviare tali strutture di dati allo scambio, poiché non vi sono parti delle strutture di dati degli algoritmi a cui si accede meno spesso di altre parti. Se costringi le pagine di esse a scambiare il disco, allora verranno referenziate pochi istanti dopo e verranno semplicemente scambiate di nuovo. ".)
Le strutture dati sono necessarie se esegui la scansione dalla riga di comando o da un demone.
Non puoi utilizzare solo una parte delle firme dei virus, poiché non puoi scegliere quali virus ti verranno inviati e quindi non puoi sapere quali firme ti serviranno.
Ecco la memoria utilizzata su una macchina a 32 bit che esegue Debian Wheezy ed è chiusa.
# ps_mem.py
Private + Shared = RAM used Program
281.7 MiB + 422.5 KiB = 282.1 MiB clamd
Modifica:vedo che qualcuno suggerisce di impostare la dimensione del set residente. Se ciò riesce, avere una dimensione del set residente inferiore alla dimensione del set di lavoro porterà al thrashing del processo da e verso lo swap. Ciò ridurrà sostanzialmente le prestazioni dell'intero sistema. In ogni caso la pagina di manuale di Linux per setrlimit(RLIMIT_RSS, ...) dice che l'impostazione della dimensione del resident set non è più supportata e non ha mai avuto alcun effetto sui processi che hanno scelto di non chiamare madvise(MADV_WILLNEED, ...).
Questa risposta non è verificata e potrebbe non funzionare. Inoltre non spiega come ridurre l'utilizzo della memoria, ma come limitare l'utilizzo della memoria, che è un po' diverso.
Puoi modificare lo script init di ClamAV (int/etc/init.d/
per aggiungere il comando ulimit -m amountofram
. Limiterà la possibilità di ClamAV e probabilmente cambierai, il che probabilmente rallenterà l'intero sistema.
Ho riscontrato un problema simile eseguendo clad su una piccola scatola NAS domestica con solo 512 MB. Da un sondaggio di domande in rete sembra che non ci sia alcun modo per ridurre l'utilizzo della memoria. Il database delle cose brutte continua a diventare sempre più grande.
È possibile configurare clamav per l'esecuzione in modalità non demone installando "clamav" anziché "clamav-daemon". Ciò potrebbe consentire di avere più memoria per la maggior parte del tempo. Quando esegui la scansione dei caricamenti, avrai sempre bisogno di una grossa fetta di RAM.