Disattivare lo scambio per un solo processo con cgroups?


15

Vorrei disattivare lo scambio per un solo processo. Lo scambio dovrebbe funzionare come al solito per gli altri processi.

Come posso implementarlo con i cgroups?

Risposte:


9

Dalla documentazione del kernel relativa a memory.swappiness:

5.3 swappiness

Simile a / proc / sys / vm / swappiness, ma riguarda solo una gerarchia di gruppi.

La swappiness dei cgroup seguenti non può essere modificata.
- root cgroup (usa / proc / sys / vm / swappiness).
- un cgroup che utilizza la gerarchia e ha altri cgroup sotto di esso.
- un cgroup che utilizza la gerarchia e non la radice della gerarchia.

Dal portale clienti di Red Hat:

memory.swappiness

imposta la tendenza del kernel a scambiare la memoria di processo utilizzata dalle attività in questo cgroup invece di recuperare le pagine dalla cache delle pagine. Questa è la stessa tendenza, calcolata allo stesso modo, impostata in / proc / sys / vm / swappiness per il sistema nel suo insieme. Il valore predefinito è 60. I valori inferiori a 60 diminuiscono la tendenza del kernel a scambiare la memoria di processo, i valori maggiori di 60 aumentano la tendenza del kernel a scambiare la memoria di processo e valori maggiori di 100 consentono al kernel di scambiare pagine che fanno parte di lo spazio degli indirizzi dei processi in questo cgroup.

Si noti che un valore pari a 0 non impedisce lo scambio della memoria di processo; lo scambio potrebbe ancora verificarsi in caso di carenza della memoria di sistema perché la logica di gestione della memoria virtuale globale non legge il valore del cgroup. Per bloccare completamente le pagine, usa mlock () invece di cgroups.

:: Non è possibile cambiare la swapiness dei seguenti gruppi:
* il root cgroup, che utilizza la swappiness impostata in / proc / sys / vm / swappiness.
* un cgroup che ha gruppi secondari sotto di esso.

EDIT: Se sei interessato a sapere esattamente come impostarlo, lo imposti esattamente come la maggior parte degli altri attributi cgroup:

 # cd /mnt/cgroup/<cgroupName>
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59

Che dire solo per i file all'interno /tmpmontati come tmpfs? unix.stackexchange.com/q/146490/56970
CMCDragonkai

È una buona cosa che tu abbia citato qui la parte rilevante della documentazione del kernel: il collegamento è interrotto.
mgarey,

Il collegamento alla documentazione del kernel Linux è interrotto. Usa questo invece kernel.org/doc/Documentation/cgroup-v1/memory.txt
Andrew Eisenberg

@AndrewEisenberg Sentiti libero di modificare la risposta se vuoi
Bratchley

Hmmm ... non me lo permette. Dice che la modifica deve contenere più di 6 caratteri. Probabilmente non abbastanza reputazione.
Andrew Eisenberg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.