GNU/Linux >> Znalost Linux >  >> Linux

Jak snížit využití paměti ClamAV?

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.


Linux
  1. Využití paměti Linuxu

  2. Jak zkontrolovat využití paměti procesu pomocí příkazu Linux pmap

  3. Jak zkontrolovat využití paměti na serveru se systémem Linux

  1. Jak zobrazit nejlepší procesy seřazené podle skutečného využití paměti?

  2. Jak zjistit využití CPU

  3. Jak omezit využití paměti aplikací v linuxu?

  1. Jak potrubí omezují využití paměti?

  2. Jak zjistit využití uživatelské paměti v linuxu

  3. Jak získat % využití paměti pomocí vmstat?