GNU/Linux >> Tutoriels Linux >  >> Linux

Comment empêcher un programme spécifique d'échanger?

Je pense que le problème de hoquet n'est pas nécessairement causé par l'échange. Si un programme joue quelque chose, Linux devrait le remarquer et ne pas l'échanger. Les programmes qui ne font pas grand-chose sont les premiers à être échangés. Vous pouvez vérifier si le programme est vraiment échangé en regardant le RSS /RES champ de ps ou haut . RSS est la taille de l'ensemble résident, la mémoire physique non échangée qu'une tâche utilise (en kilooctets).

Je pense que votre problème est très probablement causé par une mauvaise planification du processeur et des E/S et un peu d'inefficacité de Rhythmbox qui le rend sensible aux charges système élevées. La priorité du processeur peut être modifiée avec les commandes nice et renice . La priorité d'E/S peut être modifiée avec ionice commande. Seul le super utilisateur peut utiliser des priorités élevées. Vous devez également savoir que les gars du noyau Linux essaient d'améliorer la réactivité des systèmes de bureau avec divers correctifs à faible latence, vous pouvez donc envisager de les utiliser. L'un d'eux est un patch d'environ 200 lignes écrit par Mike Galbraith qui a impressionné même Linus. L'alternative à ce patch est l'astuce des cgroups de Lennart Poettering qui, je pense, sera la valeur par défaut dans Fedora 15.

Quoi qu'il en soit, sans ces correctifs, il y a deux options :démarrer le programme avec une priorité élevée ou le modifier par la suite. Pour la première option, vous pouvez utiliser un script wrapper autour de Rhythmbox :

#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei

Vous devrez l'exécuter en tant que root. Si vous ne voulez pas vous connecter en tant que root juste pour commencer, vous pouvez utiliser soit su ou sudo .

En ce qui concerne la modification de la priorité par la suite, si vous êtes trop paresseux pour vous connecter en tant que root pour la modifier, vous pouvez essayer d'utiliser une tâche cron qui s'exécute toutes les 5 minutes et définit la priorité du rhythmbox processus, mais je ne recommanderais pas de faire ceci :

#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`

Réponse courte :vous ne pouvez pas et ne devriez pas.

Il y a longtemps, les fichiers exécutables respectaient le sticky bit +t qui dirait au noyau de ne pas échanger, mais aujourd'hui, il est ignoré.

Si le noyau décide qu'il doit échanger, il a certainement une raison valable. Linux est très agressif sur l'utilisation de la mémoire, car la RAM qui est inactive est une ressource gaspillée.

Si vous ne voulez vraiment pas échanger, obtenez plus de RAM, ou juste # swapoff -a (non recommandé, peut rendre votre système inutilisable si vous avez déjà des problèmes).

Shouldn't va quand vous développez une application et que vous ne voulez pas du tout qu'elle soit échangée. Jetez un œil à ce post sur stackoverflow.


Il y a plusieurs façons de le faire. Vous pouvez essayer de "dire" que Linux fonctionne moins avec swap (généralement):

echo 10 > /proc/sys/vm/swappiness

Depuis :https://www.kernel.org/doc/Documentation/sysctl/vm.txt

échange

Ce contrôle est utilisé pour définir à quel point le noyau permutera les pages de mémoire. Des valeurs plus élevées augmenteront l'agressivité, des valeurs plus faibles diminueront le montant de l'échange.

La valeur par défaut est 60.

Une autre option est d'utiliser le gestionnaire de noyau cgroups, ceci est spécifique à chaque processus mais vous aurez du "travail" à faire :Réponse ici :https://unix.stackexchange.com/questions/10214/per-process-swapiness-for -linux#10227


Linux
  1. Comment effacer une commande spécifique de l'historique Bash sous Linux

  2. Comment exclure des répertoires spécifiques de la copie sous Linux

  3. Comment charger les modules du noyau Linux à partir du code C ?

  4. Comment empêcher les messages du noyau d'inonder ma console ?

  5. Comment arrêter Linux à une date et heure spécifique depuis le terminal ?

Comment construire le noyau Linux à partir de zéro {Guide étape par étape}

Comment installer un programme à partir de la source sous Linux

Comment construire le noyau Linux à partir de zéro

Comment supprimer Swap Space de Centos 7.x ?

Comment compiler le noyau Linux à partir de la source pour créer un noyau personnalisé

Comment empêcher un processus d'écrire des fichiers