Отключить обмен только для одного процесса с cgroups?

15

Я хотел бы отключить обмен только для одного процесса. Обмен должен работать как обычно для других процессов.

Как я могу реализовать это с cgroups?

INode
источник

Ответы:

9

Из документации ядра относительно 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
Bratchley
источник
А как насчет файлов внутри /tmpсмонтированных как tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai
Хорошо, что вы процитировали здесь соответствующую часть документации ядра - ссылка не работает.
mgarey
Ссылка на документацию ядра Linux не работает. Используйте этот вместо kernel.org/doc/Documentation/cgroup-v1/memory.txt
Эндрю Айзенберг
@ AndrewEisenberg Не стесняйтесь редактировать ответ, если хотите
Братчли
Хммм ... не позволит мне. Говорит, что редактирование должно быть больше 6 символов. Наверное, недостаточно репутации.
Андрей Айзенберг