ClamAV drží vyhledávací řetězce pomocí klasického algoritmu řetězců (Boyer Moore) a regulárních výrazů (Aho Corasick). Vzhledem k tomu, že se jedná o algoritmy ze 70. let 20. století, jsou mimořádně paměťově efektivní.
Problémem je obrovské množství virových signatur. To vede k tomu, že datové struktury algoritmů se značně zvětšují.
Tyto datové struktury nemůžete odeslat k výměně, protože žádné části datových struktur algoritmů nejsou přístupné méně často než jiné části. Pokud přinutíte jejich stránky k výměně disku, bude se na ně odkazovat o chvíli později a jednoduše se vymění zpět. (Technicky říkáme, že „náhodný přístup datové struktury nutí celou datovou strukturu, aby byla v pracovní sadě paměti procesu ".)
Datové struktury jsou potřebné, pokud skenujete z příkazového řádku nebo skenujete z démona.
Nemůžete použít pouze část virových signatur, protože si nemůžete vybrat, které viry vám budou zaslány, a tudíž nemůžete říct, které signatury budete potřebovat.
Zde je paměť použitá na 32bitovém počítači s Debian Wheezy a je to clamd.
# ps_mem.py
Private + Shared = RAM used Program
281.7 MiB + 422.5 KiB = 282.1 MiB clamd
Edit:Vidím, že někdo navrhuje nastavit velikost rezidentní sady. Pokud se to podaří, pak velikost rezidentní sady menší, než je velikost pracovní sady, povede k tomu, že proces bude přerušován do az swapu. To výrazně sníží výkon celého systému. V každém případě linuxová manuálová stránka pro setrlimit(RLIMIT_RSS, ...) říká, že nastavení velikosti rezidentní sady již není podporováno a nikdy nemělo žádný vliv na procesy, které se rozhodly nevolat madvise(MADV_WILLNEED, ...).
Tato odpověď není ověřená a nemusí fungovat. Také neodpovídá, jak snížit využití paměti, ale jak omezit využití paměti, což je trochu jiné.
Můžete upravit iniciační skript ClamAV (int/etc/init.d/
přidejte příkaz ulimit -m amountofram
. Omezí to možnost ClamAV a pravděpodobně budete swapovat, což pravděpodobně zpomalí celý váš systém.
Narazil jsem na podobný problém při spuštění clamd na malém domácím NAS boxu s pouhými 512 MB. Z průzkumu otázek po síti se zdá, že neexistuje žádný způsob, jak snížit využití paměti. Databáze ošklivých věcí je stále větší a větší.
Je možné nakonfigurovat clamav tak, aby běžel v režimu bez démonů, instalací „clamav“ spíše než „clamav-daemon“. To vám umožní mít většinu času více paměti. Když skenujete nahraná data, vždy bude potřebovat velký kus paměti RAM.