Empêcher un processus Linux d'être échangé

3

Est-ce que quelqu'un connaît un utilitaire Linux qui empêchera toute la mémoire d'un processus forké d'être échangée sur un disque? J'ai vu l'appel 'mlockall', mais le piratage de l'application semble excessif.

Si j’ai besoin de ça, c’est que j’utilise Windows XP sous VirtualBox sur mon netbook linux, et je crains que deux niveaux d’échange ne se produisent, ce qui n’est pas bon sur un seul disque dur dinky netbook ...


la source

Réponses:

0

Pour un processus unique, mlocket ses proches sont le seul moyen, je crois.

Au niveau du système, vous obtiendrez peut-être de meilleures performances en jouant avec le "swappiness". Essayez sysctl vm.swappinessde lire la valeur et sysctl -w vm.swappiness=Nde la définir sur N, où est un nombre plus petit qu’il ne l’est actuellement. (Essayez 0 si vous voulez être extrême, en indiquant au noyau qu'il doit toujours exclure les pages en cache de préférence à la permutation.)

Nemo
la source
C'est excellent - semble avoir l'effet exact que je veux. Merci beaucoup. J'imagine que si l'on donne à une machine virtuelle plus de 40% de la mémoire, cela signifie que la permutation est lancée à chaque démarrage de la machine ...
2

S'il "échange" réellement (c'est-à-dire qu'il est vraiment occupé sur le disque), le système a besoin de plus de mémoire.

Si la RAM est suffisante, les systèmes d’exploitation ne seront pas échangés, mis à part la pagination de certains processus «dormants» pour libérer davantage de RAM physique.

Il ne répond pas directement à votre question, mais vous pouvez peut-être tirer parti de l’installation d’un noyau compatible avec zram / cache: cela vous fournira une certaine quantité de mémoire cache et de pages d'échange sauvegardées, sauvegardées en RAM.

De cette façon, votre système continuera à balayer ("swap") mais il en fera la plupart du temps en RAM, et grâce à la compression, la quantité de pages de mémoire conservées dans la RAM physique (en mémoire active ou dans Zcache) sera supérieure à ce que vous obtenez de la RAM normale non compressée.

Luke404
la source
Je suis content d'avoir un seul niveau d'échange. c'est-à-dire que WinXP échange sur disque ou Linux. Ce que je ne veux pas, c’est que Linux échange une partie de la mémoire que XP pense être en mémoire, puis demande à XP d’échanger la même mémoire (= disque à traiter). Je suis peut-être simplement paranoïaque à propos de ce qui se passe, mais mon disque semble beaucoup moins bruyant quand un seul des échanges est activé ... En gros, je suis heureux que XP gère son échange et que Linux gère tout sauf cela.
1
Si XP échange sur un disque, linux ne pourra pas "double échanger" la même page car elle ne se trouve plus en mémoire (pas même dans la machine virtuelle). Si Linux échange trop, il manque juste de mémoire et échangera la VM et tout ce qu’elle voudra échanger. Réduisez la quantité de RAM allouée à la machine virtuelle afin que Linux échange moins et que tous les échanges de charge de travail de machine virtuelle soient gérés par le système d'exploitation de machine virtuelle lui-même.
Luke404
@ Luke404: Linux met en cache les pages de disque dans la RAM (de manière assez agressive, en fait). Il n’est donc tout simplement pas vrai que "la même page n’a plus de mémoire en mémoire" lorsque la VM le "remplace" par "disque".
Nemo
@Nemo: Je vais essayer de clarifier ma phrase. Si l'OS XP échange une page, cette page ne sera plus dans la mémoire physique de XP. La mémoire physique de XP est en réalité la mémoire de processus de VirtualBox sur l'hôte Linux. Par conséquent, les pages déjà remplacées par XP ne seront pas du tout "mémoire" en ce qui concerne l'hôte Linux.
Luke404
1
@ Luke404: Un double échange survient lorsque Linux commence par échanger la page. Considérez ce qui suit: Linux remplace une page utilisée par l’invité. L'invité décide maintenant d'échanger également la page. La page doit d'abord être lue sur disque par Linux pour pouvoir être écrite sur le disque par l'invité.
davidg
0

Vous pouvez également contrôler à quel moment le système commence à utiliser la mémoire d'échange. Cela vous indiquera quelle est la valeur actuelle de votre ordinateur:

cat / proc / sys / vm / swappiness

La valeur par défaut de Linux était 60. Grosso modo, cela signifie que l’ordinateur commencera à utiliser les partitions d’échange dès que 40% de la RAM utilisée est utilisé. C'était une valeur par défaut sûre pour les anciennes machines. Cependant, si vous avez beaucoup de RAM, vous pouvez réduire le swappiness.

À la volée:

sudo sysctl vm.swappiness = 10

sudo swapoff -a

sudo swapon -a

Ou de façon permanente en ajoutant vm.swappiness = 10 à /etc/sysctl.conf (pour Debian).

mirix
la source
Mon installation standard de Fedora 15 a swappiness à 60. Ceci est une nouvelle machine avec 3,5 Go de RAM.
Wallyk