Почему вершина сообщает об использовании пространства виртуальной памяти и области подкачки по-другому?

Как Вы видите в этом снимке экрана, лучший хром отчетов использует больше чем 11 ГБ виртуальной памяти, и все же только 0,417 Гбит области подкачки используются. Какова причина этого? Разве виртуальная память не хранится в области подкачки? Почему мое использование подкачки не соответствует моему использованию виртуальной памяти?

screenshot of top

0
задан 3 December 2019 в 12:44

1 ответ

Я не вижу много от этого, но что важно, 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

1
ответ дан 21 December 2019 в 23:43

Другие вопросы по тегам:

Похожие вопросы: