Je voudrais désactiver l'échange pour un seul processus. Le swap devrait fonctionner comme d'habitude pour les autres processus.
Comment puis-je implémenter cela avec des groupes de contrôle?
De la documentation du noyau concernant memory.swappiness:
5.3 swappiness
Similaire à / proc / sys / vm / swappiness, mais affectant uniquement une hiérarchie de groupes.
Le swappiness des cgroups suivants ne peut pas être changé.
- root cgroup (utilise / proc / sys / vm / swappiness).
- un groupe de contrôle qui utilise la hiérarchie et il a un ou plusieurs autres groupes de contrôle en dessous.
- un groupe de contrôle qui utilise la hiérarchie et non la racine de la hiérarchie.
Depuis le portail client Red Hat:
memory.swappiness
définit la tendance du noyau à échanger la mémoire de processus utilisée par les tâches de ce groupe de contrôle au lieu de récupérer des pages du cache de pages. Il s'agit de la même tendance, calculée de la même manière, que celle définie dans / proc / sys / vm / swappiness pour le système dans son ensemble. La valeur par défaut est 60. Des valeurs inférieures à 60 diminuent la tendance du noyau à échanger de la mémoire de processus, des valeurs supérieures à 60 augmentent la tendance du noyau à échanger de la mémoire de processus et des valeurs supérieures à 100 permettent au noyau d'échanger des pages faisant partie de l'espace d'adressage des processus dans ce groupe de contrôle.
Notez qu'une valeur de 0 n'empêche pas l'échange de mémoire de processus; la permutation peut toujours se produire en cas de manque de mémoire système car la logique de gestion de la mémoire virtuelle globale ne lit pas la valeur cgroup. Pour verrouiller complètement les pages, utilisez mlock () au lieu de cgroups.
:: Vous ne pouvez pas changer le swappiness des groupes suivants:
* le groupe de contrôle racine, qui utilise le swappiness défini dans / proc / sys / vm / swappiness.
* un groupe de contrôle qui a des groupes enfants en dessous.
EDIT: Si vous êtes intéressé à savoir exactement comment le définir, vous le définissez exactement comme la plupart des autres attributs de cgroup:
# cd /mnt/cgroup/<cgroupName>
# cat memory.swappiness
60
# echo "59 " > memory.swappiness
# cat memory.swappiness
59
/tmp
montés à l' intérieurtmpfs
? unix.stackexchange.com/q/146490/56970