GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit využití paměti aplikace?

Ano, VSZ je virtuální paměť. Pokud jde o RLIMIT_AS, kde jste našli výše uvedený odstavec? Protože setrlimit(2) je systémové volání Linuxu, nechápu, jak by mohlo monitorovat malloc(3), funkci knihovny. Místo toho může pracovat pouze s brk(2), sbrk(2) a mmap(2) - to také naznačuje jeho manuálová stránka (kontrolovaná na Scientific Linux). Celkové množství paměti požadované těmito funkcemi však je virtuální paměť, takže RLIMIT_AS skutečně omezuje virtuální paměť. (To je opět v souladu s manuálovou stránkou setrlimit(2).)

Bohužel nemůžete omezit RSS pod Linuxem (to by bylo ulimit -m ). Můžete zkusit ulimit -d (RLIMIT_DATA), ale to bude zahrnovat mmap(2) pouze od Linuxu 4.7, typicky používané pro velké alokace. Další možností by bylo omezení virtuální paměti, ale s tak velkým rozdílem mezi RSS a VSZ to může být obtížné.


Mnoho procesů sdílí část své paměti s jinými procesy, např. libc je používán téměř každým procesem, ale pouze jednou mapován v paměti, ale započítává se do využití virtuální paměti každého procesu. Omezení využití paměti, kterou používá pouze určitý proces (většinou RSS), lze provést pomocí cgroups. Viz odpovědi na Jak omezit celkové zdroje (paměť) procesu a jeho potomků, jak to udělat. To omezí celkovou paměť procesu a jeho potomků.


Linux
  1. Jak zvýšit limit paměti PHP

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

  3. Jak omezit využití CPU ve fondu aplikací ve službě IIS

  1. Využití paměti Linuxu

  2. Limit paměti PHP

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

  1. Jak omezit využití CPU procesu v Linuxu

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

  3. Jak se v Linuxu hlásí využití paměti?