neologix Posté(e) le 7 octobre 2005 Partager Posté(e) le 7 octobre 2005 L'optimisation sous GNU/Linux Bon, je vais faire court: le principe est de faire en sorte que votre machine tourne le "mieux" possible, qu'elle soit la plus réactive possible, sans pour autant jouer avec sa stabilité. On va s'attaquer à différents points: disques durs, services, CPU, ordonnanceur d'entrées-sorties, modules, et enfin, pour ceux qui aiment ça, au prelink et à la recompilation des programmes eux-même. L'ordre de présentation ci-desssus est (selon moi), par priorité décroissante, sauf pour le prelink et la recompilation des programmes. Par contre, je vais essayer de les présenter par "difficulté" croissante, histoire que les newbies ne fassent pas de conneries. Enfin, je ne suis pas un geek, je ne veux pas risquer de bousiller mon système ou d'en compromettre la stabilité pour gagner 1/10éme de seconde au lancement d'OOo. Les "astuces" données ici sont donc éprouvées, et si elles sont suivies correctement, il ne devrait y avoir aucun problème. Voilà, on est parti. I. Les services Un service est processus qui tourne en tâche de fond, et qui est généralement lancé au démarrage du système, selon le runlevel considéré. Or, toute tâche consomme de la mémoire et du temps processeur. L'idée est donc simple: on vire ce dont on n'a pas besoin. Par exemple, sur une installe de Debian par défaut, on se retrouve avec pas mal de services lancés par défaut. Outre le problème de ressources, se pose le problème de la sécurité. Pour identifier les services, un simple: # ps aux Là, on voit un certain nombre de choses. Par exemple, on peut voir une ligne qui contient "sshd": c'est un serveur ssh. Si vous ne savez pas ce que c'est, c'est que vous n'en avez pas besoin. "exim4", ou "postfix": un serveur de mail. A moins d'héberger un serveur mail, celui-ci ne sert à rien (enfin il peut servir pour le mail au sein du système, mais je m'en passe très bien. "cupsd": serveur d'impression. Si vous n'avez pas d'imprimante... [liste à compléter] C'est bien beau, il y a des services inutiles qui tournent. Mais qu'est-ce que j'en fais? Là, cela dépend de la distribution. Comme je tourne sous Debian (c'est pareil pour les distribution basée dessus, comme Ubuntu), je fais: /etc/init.d/nom_service stop Pour l'arrêter. Pour le rendre définitif: update-rc.d -f nom_service remove [Pour les autres distributions, à compléter] Voilà, on n'a plus de services inutiles. II. Le disque dur (hdparm) Bon, on va passer au disque dur, qui est souvent le goulot d'étranglement dans un pc. hdparm est un outil qui permet de régler très finement son disque dur. La première chose à faire, c'est obtenir des informations: # hdparm /dev/hda /dev/hda: multcount = 16 (on) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 16383/255/63, sectors = 78140160, start = 0 Le paramètre le plus important est sans doute la ligne using_dma = 1 (on). Cela montre que le DMA est activé sur le disque, ce qui permet d'accélérer les entrées-sorties, et de soulager le processeur. Si ce n'est pas activer, faire un: hdparm -d 1 /chemin_vers_disque Ensuite, on peut regarder la ligne readahead : si c'est sur off, on l'active avec: hdparm -A 1 /chemin_vers_disque Ensuite, on peut mettre une valeur, entre 8 et 264, par: hdparm -a n /chemin_vers_disque Oui, mais quelle valeur mettre? Là, cela dépend de votre utilisation: pour ne pas réinventer la roue, voici ce que dit le man: Get/set sector count for filesystem read-ahead. This is used to improve performance in sequential reads of large files, by prefetching additional blocks in anticipation of them being needed by the running task. In the current kernel version (2.0.10) this has a default setting of 8 sectors (4KB). This value seems good for most purposes, but in a system where most file accesses are random seeks, a smaller setting might provide better performance. Also, many IDE drives also have a separate built-in read-ahead function, which alleviates the need for a filesystem read-ahead in many situations. Pour information, Debian choisit 256 par défaut, et cela me convient. III. L'ordonnanceur d'entrées-sorties -Bon, c'est quoi ce machin? -Pour faire simple, c'est ce qui répartit l'accès aux disques aux différents processus. C'est très important dans un système multi-utilisateurs. -D'accord, et comment je l'améliore? -On ne va pas l'améliorer, on va le changer! Oui. En fait, linux comporte plusieurs ordonnanceurs d'entrées-sorties (I/O schedulers), et utilise anticipatory. Seulement voilà, il semblerait que pour une utilisation desktop, cfq soit plus réactif, ce qui exactement ce que l'on recherche! Si vous ne me croyez pas, regardez l'aide dans la catégorie I/O schedulers du noyau, on y lit que cfq convient particulièrement aux desktops. Enfin, cfq a été réécrit pour le noyau 2.6.13, et est encore plus performant: à tel point qu'on commence à dire qu'il devrait devenir le scheduler par défaut. Comme sur PCI on est toujours en avance ;-) et bah on le fait maintenant! pour connaître l'I/O scheduler utilisé: # cat /sys/block/hda/queue/scheduler Celui utilisé est entre crochets. pour le changer: # echo cfq > /sys/block/hda/queue/scheduler Pour rendre ce changement permanent, ajouter : elevator=cfq à la fin de la ligne "kernel" de grub (ou LILO) [si quelqu'un connaît un moyen ne passant pas par le bootloader, je suis preneur] IV. Modules et noyau [à compléter] [options: en fonction de l'architecure, de la quantité de mémoire, "4kB stacks",etc] V. Prelink [à compléter] VI. Pour les Gentooistes... [à compléter] Lien vers le commentaire Partager sur d’autres sites More sharing options...
neologix Posté(e) le 7 octobre 2005 Auteur Partager Posté(e) le 7 octobre 2005 [réservé] Lien vers le commentaire Partager sur d’autres sites More sharing options...
neologix Posté(e) le 7 octobre 2005 Auteur Partager Posté(e) le 7 octobre 2005 [réservé] Lien vers le commentaire Partager sur d’autres sites More sharing options...
fubiga Posté(e) le 7 octobre 2005 Partager Posté(e) le 7 octobre 2005 tres bonne initiative !!! pour un gain de performance assez eleve selon l'utilisation, ya aussi le choix et l'optimisation du file system Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 7 octobre 2005 Partager Posté(e) le 7 octobre 2005 Bonne idée ! Petit complément Gentoo (bien que soit une distri fait pour les perfs et donc bien optimisée de base) : listage des services : # rc-update show suppression d'un service : # rc-update del nom_service Voilà, bon courage ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
an0nyme Posté(e) le 7 octobre 2005 Partager Posté(e) le 7 octobre 2005 Génial ce topic. J'ai une question : j'utilise gentoo et j'ai essayé de suivre ta méthode pour changer le scheduler. Voila ce que j'ai : #cat /sys/block/hdb/queue/scheduler noop [deadline] #uname -a Linux tux 2.6.12-gentoo-r10 #1 SMP Sun Oct 2 15:24:22 UTC 2005 i686 Intel(R) Pentium(R) 4 CPU 1500MHz GenuineIntel GNU/Linux (j'ai compilé mon noyau avec les gentoo-sources et genkernel) Et donc j'aimerais savoir lequel je dois utiliser ou si il vaut mieux que j'en mette un autre. (tu as petit problème de mise en page dans ton post dans la partie ordonanceur d'entrèes sortie, je pense que tu as mal fermé ta balise [/code] ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 7 octobre 2005 Partager Posté(e) le 7 octobre 2005 Y'a encore du boulot pour le support correct du S-ATA Bonne idée ce tut' Lien vers le commentaire Partager sur d’autres sites More sharing options...
neologix Posté(e) le 7 octobre 2005 Auteur Partager Posté(e) le 7 octobre 2005 Génial ce topic. J'ai une question : j'utilise gentoo et j'ai essayé de suivre ta méthode pour changer le scheduler. Voila ce que j'ai : #cat /sys/block/hdb/queue/scheduler noop [deadline] #uname -a Linux tux 2.6.12-gentoo-r10 #1 SMP Sun Oct 2 15:24:22 UTC 2005 i686 Intel(R) Pentium(R) 4 CPU 1500MHz GenuineIntel GNU/Linux (j'ai compilé mon noyau avec les gentoo-sources et genkernel) Et donc j'aimerais savoir lequel je dois utiliser ou si il vaut mieux que j'en mette un autre. (tu as petit problème de mise en page dans ton post dans la partie ordonanceur d'entrèes sortie, je pense que tu as mal fermé ta balise [/code] ) Ouais, tu as oublié d'inclure le support pour anticipatory et cfq lors de la configuration du noyau. Ce doit être dans device driver > block device > I/O scheduler, en tout cas c'est dans le coin Tu recompiles, et normalement tu l'auras dans la liste. Je l'incluerai en détail dans la section noyau. neo Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 8 octobre 2005 Partager Posté(e) le 8 octobre 2005 "exim4", ou "postfix": un serveur de mail. exim, c'est un MTA.Pour le rendre définitif: update-rc.d -f nom_service remove Si tu veux vraiment le rendre définitif : aptitude remove ssh Par contre, je n'ai pas très bien compris ce que tu voulais dire avec le inittab ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
neologix Posté(e) le 8 octobre 2005 Auteur Partager Posté(e) le 8 octobre 2005 exim, c'est un MTA. http://en.wikipedia.org/wiki/Mail_transport_agent Ca ressemble quand même à un serveur de mail, non? Ils utilisent le protocole smtp pour envoyer/recevoir les mails... Si tu veux vraiment le rendre définitif : aptitude remove ssh Effectivement, mais ça peut toujours servir... Par contre, je n'ai pas très bien compris ce que tu voulais dire avec le inittab ? C'est là qu'on spécifie le nombre de terrminaux à lancer à chaque runlevel Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 8 octobre 2005 Partager Posté(e) le 8 octobre 2005 Bah ouais, mais je voyais mal le rapport avec l'optimisation. Maintenant j'ai vu ce que tu as mis dans le linux bar, mais je suis tout de même sceptique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 8 octobre 2005 Partager Posté(e) le 8 octobre 2005 Bah ouais, mais je voyais mal le rapport avec l'optimisation.Maintenant j'ai vu ce que tu as mis dans le linux bar, mais je suis tout de même sceptique. :copain: Lien vers le commentaire Partager sur d’autres sites More sharing options...
an0nyme Posté(e) le 8 octobre 2005 Partager Posté(e) le 8 octobre 2005 bon alors je vais recompiler mon noyau... sinon, pour l'idée de ne lancer qu'une seule console, ça me parait pas très utile : j'utilise X et pourtant, je passe assez souvent sur une des consoles pour lancer des trucs en arrière plan. agetty n'est pas très gourmand, il utilise très peu de mémoire et ne prend pas de temps processeur vu qu'il bloque en attendant que tu appuie sur une touche. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Duke98 Posté(e) le 30 novembre 2005 Partager Posté(e) le 30 novembre 2005 je l'avais oublié celui la Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.