Как Вы видите в этом снимке экрана, лучший хром отчетов использует больше чем 11 ГБ виртуальной памяти, и все же только 0,417 Гбит области подкачки используются. Какова причина этого? Разве виртуальная память не хранится в области подкачки? Почему мое использование подкачки не соответствует моему использованию виртуальной памяти?
Я не вижу много от этого, но что важно, RES
столбец, который является "размером резидентного набора". Заключить вершину человека в кавычки:
RES - anything occupying physical memory which, beginning with
Linux-4.5, is the sum of the following three fields:
RSan - quadrant 1 pages, which include any
former quadrant 3 pages if modified
RSfd - quadrant 3 and quadrant 4 pages
RSsh - quadrant 2 pages
.
.
VIRT - everything in-use and/or reserved (all quadrants)
В то время как VIRT
столбец показывает 11,740 ГБ, RES
колонны составляют только 120,0 МБ. Большой VIRT
может составить все файлы кэша с отображенной памятью и все malloc()
сгенерированное анонимное отображение, которое еще не было выделено странице физической памяти, из-за "оптимистического средства выделения памяти Linux". Попытка получить доступ к некоторым из таких страниц может все еще привести к SIGSEGV
(Отказ сегментации), если никакие физические страницы не доступны.
Посмотрите объяснение в NOTES
раздел man malloc
:
NOTES
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. In
case it turns out that the system is out of memory, one or more processes will be killed
by the OOM killer. For more information, see the description of /proc/sys/vm/overcom‐
mit_memory and /proc/sys/vm/oom_adj in proc(5), and the Linux kernel source file Documen‐
tation/vm/overcommit-accounting.
Надеюсь, это поможет.
gmt42