Что произойдет, если утечки памяти на rootfs? - PullRequest
0 голосов
/ 10 апреля 2011

У меня Linux полностью на rootfs (который, как я понимаю, является экземпляром ramfs). Там нет жесткого диска и нет подкачки. И у меня есть процесс, который постоянно пропускает память. Вирусная память со временем увеличивается в 4 раза по сравнению с физической памятью, показанной сверху. Я не могу понять, что происходит. Предполагается, что rootfs занимает только оперативную память, верно? Если у меня нет диска для обмена, как виртуальная память увеличивается в 4 раза по сравнению с физической памятью?

1 Ответ

1 голос
/ 10 апреля 2011

Не вся выделенная память должна поддерживаться блочным устройством;glibc-люди считают это поведение ошибкой:

BUGS
   By default, Linux follows an optimistic memory allocation
   strategy.  This means that when malloc() returns non-NULL
   there is no guarantee that the memory really is available.
   This is a really bad bug.  In case it turns out that the
   system is out of memory, one or more processes will be killed
   by the infamous OOM killer.  In case Linux is employed under
   circumstances where it would be less desirable to suddenly
   lose some randomly picked processes, and moreover the kernel
   version is sufficiently recent, one can switch off this
   overcommitting behavior using a command like:

       # echo 2 > /proc/sys/vm/overcommit_memory

   See also the kernel Documentation directory, files
   vm/overcommit-accounting and sysctl/vm.txt.
...