Désactiver l'échange pour un seul processus avec des groupes de contrôle?

15

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?

iNode
la source

Réponses:

9

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
Bratchley
la source
Qu'en est-il uniquement pour les fichiers /tmpmontés à l' intérieur tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai
C'est une bonne chose que vous ayez cité la partie pertinente de la documentation du noyau ici - le lien est rompu.
mgarey
Le lien vers la documentation du noyau Linux est rompu. Utilisez celui-ci à la place kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg
@AndrewEisenberg N'hésitez pas à modifier la réponse si vous le souhaitez
Bratchley
Hmmm ... ne me laisse pas. Dit que la modification doit être supérieure à 6 caractères. Probablement pas assez de réputation.
Andrew Eisenberg