Я хотел бы отключить обмен только для одного процесса. Обмен должен работать как обычно для других процессов.
Как я могу реализовать это с cgroups?
Из документации ядра относительно memory.swappiness:
5.3 swappiness
Аналогично / proc / sys / vm / swappiness, но влияет только на иерархию групп.
Перестановка следующих групп не может быть изменена.
- корневая группа (использует / proc / sys / vm / swappiness).
- cgroup, которая использует иерархию, и под ней находятся другие cgroup.
- группа, которая использует иерархию, а не корень иерархии.
Из портала клиентов Red Hat:
memory.swappiness
задает тенденцию ядра выгружать память процесса, используемую задачами в этой группе вместо того, чтобы восстанавливать страницы из кэша страниц. Это та же тенденция, которая рассчитывается так же, как и в / proc / sys / vm / swappiness для системы в целом. Значение по умолчанию - 60. Значения ниже 60 уменьшают тенденцию ядра к выгрузке памяти процесса, значения больше 60 увеличивают тенденцию ядра к выгрузке памяти процесса, а значения больше 100 позволяют ядру выгружать страницы, которые являются частью адресное пространство процессов в этой группе.
Обратите внимание, что значение 0 не предотвращает выгрузку памяти процесса; Выключение может все еще произойти, когда существует нехватка системной памяти, потому что глобальная логика управления виртуальной памятью не читает значение cgroup. Чтобы полностью заблокировать страницы, используйте mlock () вместо cgroups.
:: Вы не можете изменить swappiness следующих групп:
* корневая cgroup, которая использует swappiness, установленную в / proc / sys / vm / swappiness.
* cgroup, у которой есть дочерние группы ниже.
РЕДАКТИРОВАТЬ: Если вы хотите точно знать, как его установить, вы установите его точно так же, как большинство других атрибутов cgroup:
# cd /mnt/cgroup/<cgroupName>
# cat memory.swappiness
60
# echo "59 " > memory.swappiness
# cat memory.swappiness
59
/tmp
смонтированных какtmpfs
? unix.stackexchange.com/q/146490/56970