3.7. memory

Подсистема memory создает отчеты об использовании ресурсов памяти и позволяет наложить ограничения с помощью следующих параметров:
memory.stat
Возвращает статистику памяти (см. таблицу).

Таблица 3.1. memory.stat

Значение Описание
cache кэш страниц (в байтах), включая tmpfs (shmem)
rss анонимный кэш и кэш подкачки (в байтах) за исключением tmpfs (shmem)
mapped_file размер файлов в карте памяти (в байтах), включая tmpfs (shmem)
pgpgin число страниц, помещаемых в память
pgpgout число страниц, извлекаемых из памяти
swap использование пространства подкачки (в байтах)
active_anon анонимный кэш и кэш подкачки (в байтах) в активном списке LRU (Least Recently Used) включая tmpfs (shmem)
inactive_anon анонимный кэш и кэш подкачки (в байтах) в неактивном списке LRU (Least Recently Used) включая tmpfs (shmem)
active_file память с файловой поддержкой в активном списке LRU (в байтах)
inactive_file память с файловой поддержкой в неактивном списке LRU (в байтах)
unevictable память, которую нельзя вернуть (в байтах)
hierarchical_memory_limit лимит памяти для иерархии, содержащей контрольную группу memory (в байтах)
hierarchical_memsw_limit суммарный лимит памяти и пространства подкачки для иерархии, содержащей контрольную группу memory (в байтах)
Перечисленным файлам за исключением hierarchical_memory_limit и hierarchical_memsw_limit соответствует файл total_ с аналогичной информацией для всех дочерних групп. Так, если swap сообщает об использовании пространства подкачки группой, то total_swap — о суммарном использовании пространства и группой, и ее подчиненными группами.
Значения соотносятся следующим образом:
  • active_anon + inactive_anon = (анонимная память) + (файловый кэш для tmpfs) + (кэш подкачки).
    Как следствие, active_anon + inactive_anonrss, так как rss не включает tmpfs.
  • active_file + inactive_file = (размер кэша tmpfs).
memory.usage_in_bytes
Суммарный размер памяти, занятой процессами заданной контрольной группы (в байтах).
memory.memsw.usage_in_bytes
Суммарный размер пространства подкачки, занятого процессами заданной контрольной группы (в байтах).
memory.max_usage_in_bytes
Максимальный размер памяти, занятой процессами заданной контрольной группы (в байтах).
memory.memsw.max_usage_in_bytes
Максимальный размер пространства подкачки, занятого процессами заданной контрольной группы (в байтах).
memory.limit_in_bytes
Задает максимальный размер памяти (включая файловый кэш). По умолчанию используются байты. Допускается использование приставок k и K для килобайтов, m и M для мегабайтов, g и G для гигабайтов.
memory.limit_in_bytes накладывает ограничения не на корневую группу, а на группы нижних уровней.
Для отмены ограничений присвойте значение -1.
memory.memsw.limit_in_bytes
Задает максимальный размер памяти и пространства подкачки. Если единицы не указаны, по умолчанию используются байты. Допускается использование приставок k и K для килобайтов, m и M для мегабайтов, g и G для гигабайтов.
memory.memsw.limit_in_bytes накладывает ограничения не на корневую группу, а на группы нижних уровней.
Для отмены ограничений присвойте значение -1.
memory.failcnt
Счетчик случаев достижения лимита, заданного в memory.limit_in_bytes.
memory.memsw.failcnt
Возвращает число случаев, когда лимит, заданный в memory.memsw.limit_in_bytes, был достигнут.
memory.force_empty
Если 0, память будет очищена от страниц, которые использовались заданиями контрольной группы. Если же память невозможно освободить, содержимое будет перенесено в родительскую группу. Прежде чем удалять группу, рекомендуется очистить память.
memory.swappiness
Заставляет ядро осуществлять подкачку памяти, используемой заданиями контрольной группы, вместо возврата страниц из кэша страниц. Это аналогично поведению, определенному для всей системы в файле /proc/sys/vm/swappiness. Значение по умолчанию — 60. Значения меньше 60 уменьшают вероятность подкачки, а более высокие — увеличивают вероятность подкачки, а значения больше 100 приводят к подкачке страниц пространства адресов.
0 не отменяет подкачку полностью — в силу того глобальная логика управления виртуальной памятью не использует это значение, страницы будут подкачиваться при недостатке памяти. Чтобы запретить подкачку, рекомендуется использовать mlock().
Это поведение нельзя изменить для следующих групп:
  • для корневой группы, настройки которой определены в /proc/sys/vm/swappiness,
  • для контрольной группы с существующими подчиненными группами.
memory.use_hierarchy
Флаг, отвечающий за возврат памяти. 1 заставляет подсистему memory освободить память, используемую процессом, который превышает максимально разрешенную квоту, и его потомками. По умолчанию (0) память освобождаться не будет.