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