Wyłączasz zamianę tylko dla jednego procesu z cgroups?

15

Chciałbym wyłączyć zamianę tylko dla jednego procesu. Zamiana powinna działać jak zwykle w przypadku innych procesów.

Jak mogę to zaimplementować w cgroups?

iNode
źródło

Odpowiedzi:

9

Z dokumentacji jądra dotyczącej pamięci.sappiness:

5.3 swappiness

Podobne do / proc / sys / vm / swappiness, ale wpływa tylko na hierarchię grup.

Po zamianie grup nie można zmienić zamiany.
- root cgroup (używa / proc / sys / vm / swappiness).
- grupa, która korzysta z hierarchii i ma pod nią inne grupy.
- grupa, która wykorzystuje hierarchię, a nie jej rdzeń.

Z portalu klienta Red Hat:

memory.swappiness

ustawia tendencję jądra do zamiany pamięci procesowej używanej przez zadania w tej grupie, zamiast odzyskiwania stron z pamięci podręcznej stron. Jest to ta sama tendencja, obliczona w ten sam sposób, jak ustawiona w / proc / sys / vm / swappiness dla systemu jako całości. Wartość domyślna to 60. Wartości niższe niż 60 zmniejszają tendencję jądra do zamiany pamięci procesu, wartości większe niż 60 zwiększają tendencję jądra do wymiany pamięci procesu, a wartości większe niż 100 pozwalają jądru na zamianę stron, które są częścią przestrzeń adresowa procesów w tej grupie.

Zauważ, że wartość 0 nie zapobiega zamianie pamięci procesu; wymiana może nadal występować, gdy brakuje pamięci systemowej, ponieważ logika globalnego zarządzania pamięcią wirtualną nie odczytuje wartości grupy. Aby całkowicie zablokować strony, użyj mlock () zamiast cgroups.

:: Nie można zmienić swapiness następujących grup:
* root cgroup, która używa swapiness ustawionego w / proc / sys / vm / swappiness.
* grupa, która ma poniżej grupy potomne.

EDYCJA: Jeśli chcesz wiedzieć dokładnie, jak to ustawić, ustaw go dokładnie tak, jak większość innych atrybutów grupy:

 # cd /mnt/cgroup/<cgroupName>
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59
Bratchley
źródło
A co z plikami wewnątrz /tmpzamontowanymi jako tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai
Dobrze, że zacytowałeś tutaj odpowiednią część dokumentacji jądra - link jest zepsuty.
mgarey
Link do dokumentacji jądra Linuksa jest zepsuty. Zamiast tego użyj tego kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg,
@AndrewEisenberg Jeśli chcesz, możesz edytować odpowiedź
Bratchley,
Hmmm ... nie pozwala mi. Mówi, że edycja musi mieć więcej niż 6 znaków. Prawdopodobnie za mało reputacji.
Andrew Eisenberg,