Comment puis-je modifier mon bureau Linux pour être plus réactif?


30

J'ai l'expérience que Linux fonctionne bien jusqu'à épuisement de la mémoire physique. Dès que l'espace de swap est utilisé, les performances sont gravement dégradées et l'interface graphique ne répond plus.

Ce problème n'est pas limité à une distribution ou un bureau spécifique, car j'en ai essayé quelques-uns (et le problème persiste).

Que puis-je faire à ce sujet?


Il s'agit d'un problème connu avec le noyau Linux ... Je crois avoir lu que récemment un correctif a été commis pour le corriger. Vous cherchez une référence à cela ...
xenoterracide

1
Cet article et celui-ci sur phoronix sont ce à quoi je pensais ... Je pense.
xenoterracide

Fondamentalement, ces articles parlent des correctifs qui vont entrer dans 2.6.36, alors quand cela sortira, obtenez cela (à moins que vous n'osiez exécuter un RC ou du maître)
xenoterracide

De combien de RAM disposez-vous? Quels programmes avez-vous si faim? VM? JVM?
tshepang

J'ai 8 Go de RAM et les coupables sont les applications habituelles (navigateurs Web comme Firefox et Chrome, clients de messagerie comme Thunderbird et clients IRC.
txwikinger

Réponses:


15

Je suggère de lire SwapFAQ , en particulier le paramètre swapiness .


3
+1, le swap est un pansement que nous espérons ne pas utiliser ...
Avery Payne

1
J'ai essayé de nombreux paramètres différents pour swappiness sans succès. J'ai également remarqué que les opinions sur la valeur de l'échange ne sont pas du tout unifiées. Pour les ordinateurs de bureau, certains recommandent 10, d'autres 100, ce qui signifie qu'ils suggèrent qu'ils suggèrent l'effet opposé total.
txwikinger

1
Après de nouveaux tests, je recommande de ne pas utiliser la swapiness 100 ni la 0. Les deux ont créé des situations dans lesquelles le bureau est tombé dans un engouement de swap qui a même fait arrêter l'horloge du panneau pendant plus de 20 minutes.
txwikinger

11

Quelques conseils:

  1. Ne lancez pas autant de programmes GUI à la fois.
  2. Assurez-vous que tous les programmes exécutés en arrière-plan dont vous n'avez pas besoin, par exemple Apache, sont arrêtés.
  3. Utilisez une distribution destinée aux situations de faible mémoire (par exemple pour un netbook)
  4. Achetez plus de mémoire.
  5. Achetez un disque dur (ou SSD) plus rapide pour votre partition de swap. :)


2
avec les SSD modernes, l'ensemble du système est susceptible d'être obsolète et prêt à être remplacé bien avant la mort du SSD. ça ne vaut vraiment pas la peine de s'inquiéter de nos jours. les sauvegardes sont bien sûr toujours nécessaires car un disque - SSD ou mécanique - peut mourir à tout moment.
cas

4

Acheter plus de mémoire? :)

Si vous exécutez des applications qui utilisent plus de mémoire que vous n'en avez dans le système, aucun système d'exploitation ne peut faire autre chose que de basculer vers la partition de swap. Si c'est une situation dans laquelle vous vous trouvez souvent, arrêtez d'exécuter certains des programmes dont vous n'avez pas besoin ou, vraiment, achetez plus de mémoire, c'est très bon marché de nos jours.


3
J'ai déjà un maximum de RAM. J'aimerais connaître quelques modifications qui rendent l'échange plus efficace qu'il ne l'est.
txwikinger

1
J'ai constaté que la désactivation de l'échange tendait à accélérer la réponse d'un système. Les applications sont informées par le noyau qu'elles n'ont pas de mémoire et répondent en conséquence.
cjac

3
@cjac: Ce n'est généralement pas le cas. Vous pouvez configurer le noyau pour cela, mais par défaut, il se surchargera (donnera à votre application la mémoire dont votre système ne dispose pas). Dès qu'une application touche la mémoire et que le noyau ne peut plus en trouver, le tueur en manque de mémoire mettra fin à un ou plusieurs processus.
Kristof Provost

@txwikinger la raison pour laquelle l'échange est lent est que les vitesses de RAM sont tellement plus rapides que les disques durs. Le temps de recherche de RAM est mesuré en nanosecondes (10 ^ -9). Les temps de recherche du disque dur sont mesurés en millisecondes (10 ^ -3). C'est six ordres de grandeur, en d'autres termes, la RAM est un million de fois plus rapide que le swap. Votre question revient à demander comment faire avancer un vélo aussi vite qu'un jet Concorde. Tu ne peux pas.
bahamat

1
@bahamat. Vous dites l'évidence, mais ce n'est pas le problème. Le problème est que l'échange est effectué de manière très inefficace et crée donc quelque chose dans le sens du problème du philosophe.
txwikinger

2

Essayez de changer les valeurs des variables du noyau «vm.swappiness» et «vm.page-cluster» en valeurs plus appropriées.

  1. Démarrez un émulateur de terminal.
  2. cd /etc/sysctl.d/
  3. sudo echo "vm.swappiness = 0" > 60-memory-management.conf
  4. sudo echo "vm.page-cluster = 1" >> 60-memory-management.conf
  5. sudo chmod 644 60-memory-management.conf
  6. Redémarrer.

Vérifiez si les nouvelles valeurs sont utilisées avec:

  1. cat /proc/sys/vm/swappiness
  2. cat /proc/sys/vm/page-cluster

1

L'échange diminuera considérablement les performances, quoi qu'il en soit, il est donc préférable d'éviter tout cela. Cela peut sembler stupide, mais une option consiste à ne pas configurer de partition de swap. J'exécute sans échange sur tous mes systèmes depuis un certain temps maintenant:

  • 1 Go sur le netbook est suffisant pour naviguer sur le Web, écouter de la musique et d'autres trucs légers.
  • 4 Go sur mon bureau suffisent pour tout ce qui précède, plus le développement (même dans Eclipse) et l'édition d'image de base.

Si vous faites quelque chose de très gourmand en mémoire (Gimp avec de grandes images, modélisation 3D, CAD), vous devriez probablement acheter de la RAM.


Oui. J'arrive lentement à la même conclusion. Il me semble que la façon dont les échanges de noyau Linux ne sont pas très efficaces pour les postes de travail (sur les serveurs tout cela fonctionne très bien). Par conséquent, la recommandation devrait peut-être être de désactiver tout l'espace d'échange sur les ordinateurs de bureau. Btw. J'utilise 8 Go de RAM :)
txwikinger

1
@txwikinger: puis-je demander pourquoi tout va bien sur les serveurs?
phunehehe

1

Vous pouvez essayer compcache , si vous pouvez comprendre comment le configurer dans votre distribution. Par exemple, sur Ubuntu, vous pouvez l'activer en éditant /etc/initramfs-tools/initramfs.conf et en éditant la ligne "COMPCACHE_SIZE".

Je ne pense pas que mon échange sur disque ait été touché une fois depuis que j'ai activé compcache. Voici mes statistiques de swap actuelles:

% swapon -s
Filename                                Type            Size    Used    Priority
/dev/ramzswap0                          partition       1028084 69504   100
/dev/sda5                               partition       3148668 0       -1

Notez que le périphérique compcache (ramzswap0) est utilisé, et le périphérique sur disque (sda5) ne l'est pas.


0

Achetez une mémoire RAM plus rapide et assurez-vous que votre système l'utilise entièrement. Quel processeur et quelle architecture utilisez-vous?


Comment cela modifie-t-il le système Linux? Le changement ou l'amélioration du matériel n'est pas le problème ici.
txwikinger

Il est possible que votre installation linux n'utilise pas tout le matériel disponible. Il s'agit d'un problème de performances et vous avez déclaré dans un commentaire précédent que vous êtes à votre limite maximale de RAM. Sans connaître plus de détails sur votre configuration, un itinéraire facile à prendre est un meilleur matériel.
Mike H

1
le "système Linux" est composé de matériel et de logiciels. L'ajout de mémoire "ajuste" le système.
cjac

Linux est un logiciel qui fonctionne sur du matériel. Le matériel n'est pas inclus sous Linux: p
txwikinger

1
Je pense que plus de RAM est plus approprié que plus rapide ... La vitesse de la RAM est généralement limitée par le Mobo aussi ...
xenoterracide

0

J'exécute l'applet System Monitor dans un dock sur le côté droit de mon écran. Chaque fois que le système semble lent, je regarde les compteurs. Si quelque chose fonctionne à une capacité supérieure à 10%, cela indique qu'un processus devient incontrôlable.

Si vous cliquez sur le moniteur système, vous pouvez vous connecter aux processus qui consomment des ressources sur votre système.

http://www.colliertech.org/~cjac/tmp/screenies/system_monitor.png


1
La plupart des moniteurs de systèmes font simplement glisser un système lent plus c'est le chat de Schrödinger. Sans augmenter la mémoire, il doit corriger les fuites de mémoire ou supprimer les programmes inutiles en cours d'exécution.
jjclarkson

0

Il y a quelques années, il était habituel d'utiliser un lecteur dédié pour l'échange, tout en étant connecté à son propre bus IDE / ATA - l'échange de données sur le même lecteur n'avait tout simplement aucun sens en termes de performances.

Cette astuce a fonctionné il y a dix ans, mais avec les vitesses de conduite, vous ne devriez vraiment pas voir une telle dégradation des performances, à moins que vous n'échangiez la bibliothèque du congrès, sinon je serais préoccupé par la santé de votre lecteur - l'avez-vous vérifié récemment?

Vous pouvez toujours l'essayer, vous n'avez pas beaucoup d'alternatives si votre RAM est déjà au maximum. Si j'espère quelque chose, cela rend votre interface graphique plus réactive.


Beaucoup d'utilisations pour le bureau ne donnent pas cette option car ce sont des ordinateurs portables ou des netbooks qui n'autorisent pas un deuxième lecteur.
txwikinger

@txwikinger évidemment vrai, mais j'ai considéré le titre de la question qui se lit "bureau", sinon je ne l'aurais pas suggéré si un ordinateur portable était spécifiquement mentionné :-)
inverser

Eh bien ... je voulais dire le bureau afin de faire la distinction avec les serveurs, où je pense que l'échange fonctionne assez bien. :)
txwikinger

0

Installez un deuxième système Linux sur votre réseau avec une bonne quantité de RAM, montez-le NFS sur votre système principal et placez le fichier d'échange sur celui-ci.


1
Avec Gigabit Ethernet, cela va être beaucoup plus lent qu'un SSD de milieu de gamme, et je ne sais pas si vous pourriez même atteindre la vitesse d'un disque dur à 7200 tr / min. Peut-être qu'avec Firewire vous pouvez atteindre la vitesse du swap local. Mais il serait plus efficace d'ajouter simplement de la RAM.
Gilles 'SO- arrête d'être méchant'

0

Une façon consiste à utiliser un noyau optimisé .


Veuillez ne pas simplement publier des liens; inclure un certain contexte afin que, si le site que vous créez un lien vers le bas, il y ait suffisamment d'informations ici pour rendre la réponse significative.
jasonwryan

0

Depuis de nombreuses années d'expérience, je peux vous dire qu'il n'y a pas grand chose à modifier

Mais ce que j'ai fait récemment m'a beaucoup aidé.

1

Je suis passé d'Ubuntu à Arch Linux, d'Unity / Gnome à xfce desktop.

Ubuntu est mortellement lent, de partout. démarrage / graphiques .. lent.

2

J'ai acheté un SSD Intel (80g) et j'ai planté mon système racine dessus.

Mon arc Linux + XFCE4 + docky + conky, démarre en 10 secondes (connexion automatique avec lxdm), toutes les applications installées sur SSD, par exemple Matlab, démarrent beaucoup plus rapidement.

L'argent en vaut la peine.

3

Faites votre / tmp ailleurs, j'utilise une taille limitée de ramdisk pour cela, pour éviter que le système de fichiers racine ne soit brouillé

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.