Votre IP : 3.145.151.141
Le : 20-04-2024. 16h25.
Optimiser facilement sa distribution Linux

Optimiser facilement sa distribution Linux

Compte-tenu que de nombreux internautes migrent vers Linux parce qu'ils sont souvent envahis de cochonneries sur leur Windows et dépités par l'ampleur que prend le phénomène. Ils ont besoin de retrouver un système optimisé sous Linux qui leur donnera de meilleures performances, ce sujet est spécifique à une utilisation normale de votre distribution, bureautique, internet, média, etc, il est destiné à vous : nouveau linuxien (tout comme moi).

Quand on installe une distribution Linux par défaut, on se retrouve souvent avec un certain nombre de processus ou «services»* pas toujours utiles ou adaptés à nos activités informatiques ou même à notre matériel.

* - Dans la terminologie Unix, on appelle ça des daemons ... ("disk and execution monitor" : des processus qui tournent en tâche de fond et qui sont à l'écoute des événements relatifs à la machine, à d'autres processus, à l'horloge, au réseau, etc.) Afin que tout le monde s'y retrouve, j'utiliserai le mot : processus, c'est plus simple.

Pour les pros de Linux, ne m'en veuillez pas trop si je n'explique pas de façon académique, c'est mon premier article sur Linux. Allez, je me lance ... Je vais essayer de rester simple et compréhensible, c'est pas évident vu la quantité de choses importantes à dire sur ce sujet.

Les processus sous Linux

Beaucoup trop de processus

Ce constat, je l'ai fait le jour ou j'ai installé un outil de monitoring : Gkrellm sur ma Mandriva.
Cet outil permet de connaître un certain nombre d'informations en temps réel : température, nombre de processus, vitesse des ventilateurs, le temps qu'il fait, etc. Pour l'installer, voici un tuto sur le site : trustomne

Quelle ne fut pas ma surprise de constater que j'avais 126 processus en cours sur mon système. Ayant l'habitude d'optimiser Windows avec ses 11 processus,(même si Windows est cachotier au niveau des processus puisqu'il ne montre pas les processus réels du noyau, parmi lesquels svchost.exe qui peut cacher plus de 30 services à lui seul).
Je trouvais ce constat fort déplaisant.
Il est vrai que j'avais cliqué sur tout un tas de paquets à installer dont je ne connaissais même pas l'utilité, "le plaisir de découvrir sans doute", je me suis retrouvé avec une usine à gaz sans trop comprendre, compte-tenu que tout fonctionnait, je ne me suis posé la question que beaucoup plus tard, finalement j'ai décidé d'optimiser ma machine sous Linux à partir de ce jour là...

Mais par où commencer ?
Suivez le guide débutant ;)...le débutant, c'est moi -:P
       

Pour optimiser un peu sa distribution, il y a plusieurs possibilités, voici un aperçu de ce que l'on peut faire facilement sans être un pro Linux :
- Connaître les commandes de base et les outils à notre disposition
- Ajuster les processus en fonction de nos besoins
- Changer de Window Manager pour économiser des ressources
- Compilation du noyau, c'est l'étape ultime

Qu'est-ce qui tourne sur votre système ?

Un processus est un programme en cours d'exécution... ou en attente d'exécution (on peut "suspendre" un processus)
Le noyau Linux lance, gère les processus et contrôle leurs échanges avec les périphériques. Il tient à jour une table des processus en exécution. Le premier processus, ancêtre de tous les autres est init. Tous les processus successifs sont créés par un processus parent et appartiennent à un utilisateur. Chacun est identifié par un numéro, son PID
Il peut être important de connaître le PID d'un processus, ne serait-ce pour pouvoir le "tuer", s'il ne répond plus et bloque une console.
Les systèmes UNIX sont des systèmes multitâches préemptifs, c'est à dire que chaque programme ou processus tourne indépendamment. Lorsqu'un processus est planté, le système continue à tourner car les processus sont séparés. La destruction d'un processus n'a pas d'effet sur l'exécution des autres processus.
Les outils utiles

Voici comment consulter la table des processus

La commande : ps avec des arguments permet de lister les processus
ps -fe : donne tous les processus, avec leur numéro PID
ps --help indique toutes les options de cette commande (il y en a plein)

On ouvre une console et on tape simplement : ps -fe
ce qui nous donne une série de lignes incompréhensibles quand on débute sous Linux :P
Pas de panique, ce n'est pas le gestionnaire des tâches de Windows, Linux n'a rien à cacher à ses utilisateurs, il donne simplement les processus lancés au moment donné où vous lancez la commande. Quelques explications en image :


UID : Numéro d'utilisateur (User IDentification) ayant lancé le processus
PID : Numéro unique du processus (Process IDentification)
PPID : Numéro du processus parent (Parent Process IDentification)
C : cpu utilisation , pourcentage de CPU utilisé
STIME : correspond à l'heure de lancement du processus
TTY : correspond au nom du terminal
TIME : correspond à la durée de traitement du processus
CMD : correspond à la ligne de commande ayant généré le processus.

Avec cette commande, la liste peut être très longue :P , comme vous pouvez le constater, j'ai essayé de classer les différents processus en zones qui nous permettront pour la suite de l'article, de voir et d'optimiser certains d'entre-eux


etc...La liste est plus longue ou plus courte chez vous ?

Afin de connaître le processus parent d'un autre processus, la commande : pstree
La commande pstree permet d'afficher les processus sous forme d'arborescence : pratique pour voir la hiérarchie entre les divers processus.

la commande : top
La commande top permet d'afficher des informations en continu sur l'activité du système (quantité de RAM et pourcentage de CPU utilisés par les processus). Pour quitter la commande top, il suffit de taper la lettre : q.


L'intérêt de cette commande réside dans le fait que vous pouvez observer en temps réel les processus les plus gourmands, et ainsi, trouver des solutions pour optimiser le système.

La commande : KILL
Pour arrêter un processus, on peut lui envoyer différents signaux (pour en savoir plus sur les signaux):
kill PID : met fin normalement à la tâche
kill -9 PID : action si nécessaire encore plus radicale !

Maintenant que nous avons listé les processus qui tournent sur votre système, quelques explications sur le fonctionnement de Linux

Comment ça fonctionne sous Linux

Le premier processus : init

Lorsque la machine boote, le noyau du système est chargé et décompressé, il s'exécute et s'initialise : réservation mémoire, prise en compte de la zone d'échange (swap), détection du matériel et chargement des pilotes des périphériques, montage du système de fichiers et enfin lance le 1er processus /sbin/init
- L'exécution effective de ce processus fondamental est entièrement controlée par le contenu du fichier de configuration : /etc/inittab qui va déterminer le niveau d'exécution par défaut du système et charger le niveau S qui correspond au minimum vital avant de commencer à exécuter le script correspondant au niveau choisi

(ici, sur l'image: c'est le niveau 2 qui est par défaut)

Le système linux dispose de 7 niveaux d'exécution numérotés de 0 à 6:

0 - correspond à la procédure d'extinction de la machine (tapez telinit 0 en root dans une console pour arrêter la machine en utilisant le runlevel 0, ...)
6 - correspond à la procédure de redémarrage de la machine (idem)
1 - correspond au mode d'administration qui charge un minimum de choses et se conclut par l'accès à un shell root direct si la distribution est peu sécurisée ou avec demande de mot de passe dans le cas contraire.
2, 3, 4 et 5 - permettent de déterminer différents niveaux d'exécution avec différents services chargés
2 - est normalement multi-utilisateurs sans serveur X
5 - sous Mandriva, est associée à un système multi-utilisateurs avec serveur X.
Ces niveaux d'exécution permettent au système de déterminer dans quel répertoire rcX.d piocher les scripts de démarrage.
Sous Mandriva, ces scripts se retrouvent dans les répertoires /etc/rc.d/rc[0-6].d
Sous Debian, ces scripts se retrouvent dans les répertoires /etc/rc[0-6].d

En regardant de plus près ces répertoires, on s'aperçoit qu'ils ne contiennent que des liens symboliques vers les scripts du même nom contenus dans le répertoire /etc/rc.d/init.d (Mandriva) ou /etc/init.d (Debian).
Ces liens sont tous formés selon la même syntaxe [S|K]XX«nom_du_script»
S indique au système que le script doit être lancé avec l'opérande start (démarrage du service)
K indique au système que le script doit être lancé avec l'opérande stop (arrêt du service)
XX est un niveau d'exécution, on peut en effet modifier l'ordre dans lequel se lancent ces scripts.

(le dossier /etc/init.d qui contient tous les processus)

Getty et les terminaux « virtuels »

Le programme getty ou l'une de ses innombrables variantes est le programme qui vous demande votre nom d'utilisateur sur les terminaux virtuels. Plus précisément, getty initialise le terminal, demande le nom d'utilisateur et lance le programme login en lui fournissant le nom saisi, afin que celui-ci demande le mot de passe de cet utilisateur.

En mode multi-utilisateurs, la console est partagée entre plusieurs terminaux dits « virtuels », parce qu'ils simulent la présence de plusieurs terminaux sur la même console.
Ces terminaux virtuels se partagent le clavier et l'écran, mais seulement un de ces terminaux peut accéder à la console à chaque instant :
celui qui traite les caractères saisis au clavier et qui réalise l'affichage.

Chaque terminal virtuel utilise un fichier spécial de périphérique du répertoire /dev/. Le nom de ce fichier commence toujours par « tty » et est complété par le numéro du terminal. Ainsi, le fichier spécial de périphérique /dev/tty0 correspond au premier terminal virtuel, etc.

Si vous utilisez très peu les terminaux virtuels, il est possible d'en désactiver quelque-uns, en éditant le fichier /etc/inittab et en ajoutant un # devant les lignes.
Gardez-en au moins 1, c'est toujours utile de passer sur un terminal, ne serait-ce que pour mettre à jour son Window Manager.

Les outils pour gérer les processus

Chaque distribution possède son propre outil, les outils de gestion des processus peuvent être préinstallés ou non pour gérer vos processus, en voici quelques-uns.

Drakconf pour une Mandriva par exemple :

Pour accéder à cet outil : Menu démarrer -> exécuter -> tapez : drakconf ; ensuite vous indiquez votre mot de passe root -> onglet Système --> choisissez dans la fenêtre de droite --> Activer ou désactiver les services

Cet outil très facile d'utilisation, vous permet de gérer vos services, de les lancer au démarrage du système, de les arrêter, etc..(un vrai clickodrome)

rcconf pour Debian par exemple :
    cet outil beaucoup plus rudimentaire que drakconf permet de gérer les services qui se lancent au démarrage du système, et c'est tout !
le reste faudra le faire en console ;)

S'il n'est pas présent sur votre système, un petit coup de :
apt-get install rcconf

Ensuite, ouvrez une console, en root tapez juste : rcconf
le reste, je vous laisse faire, à ce stade quand on utilise Debian, on le fait plus souvent en console...
En ligne de commande dans une console :
On va tout simplement aller démarrer le service à partir de l'endroit où il se trouve :
Sous Mandriva, ces scripts se retrouvent dans les répertoires /etc/rc.d/rc[0-6].d
Sous Debian, ces scripts se retrouvent dans les répertoires /etc/rc[0-6].d
qui sont des raccourcis de /etc/init.d ou /etc/rc.d/init.d, ce qui nous donne :
Démarrer un service
$ su
password :
# /etc/init.d/le_nom_du_service start
ou pour Mandriva : # /etc/rc.d/init.d/le_nom_du_service start
  
Arrêter un service
$ su
password :
# /etc/init.d/le_nom_du_service stop
ou pour Mandriva : # /etc/rc.d/init.d/le_nom_du_service stop
     

Ajuster les services

Maintenant que nous avons vu comment gérer les processus, il est important de connaître les plus courants.

Voici un tableau des principaux services que l'on peut trouver dans une distribution, (une Mandriva) il n'est pas complet, il en existe beaucoup d'autres, c'est en fonction des divers outils que vous installez sur votre système.
En fonction de vos activités informatiques et de votre matériel, c'est à vous de décider si le service vous sera utile ou pas, difficile de donner les bonnes valeurs, car chaque utilisateur le fera en fonction de ses désirs et de son matériel.

Services      Désignations Options
acpi gestion de la batterie des portables à n'activer qu'en cas de problème pour éteindre ou mettre en veille
alsa serveur de son ALSA activé
atd creation de tâches désactivé
autofs montage des partitions activé
bluetooth si vous n'utilisez pas de bluetooth désactivé
cron planificateur de tâches désactivé
cups Service d'impression activé
cvs dépôt de fichiers sources désactivé
dkms services de lancement dkms activé
dm Gestionnaire graphique de login activé
dund établissement d'une connexion réseau point-à-point désactivé
fam demon de surveillance automatique
harddrake détection matérielle activé
hidd gestionnaire de "input devices" USB désactivé si pas de souris / clavier USB
hotplug le service qui permet de connecter à chaud des périphériques et de les utiliser immédiatement activé
hpoj Service imprimante HP activé
httpd serveur apache désactivé
iptables pare-feu activé
ipvadm serveur virtuel désactivé
keytable contrôle du clavier désactivé
kheader régéneration automatique de fichier dans le noyau désactivé
linuxconf effectue des tâche au démarrage de la machine désactivé
linuxconfweb idem en serveur désactivé
lisa information lan, sauf si vous n'avez pas de réseau (désactivé) désactivé
lm_sensors gestion des températures, vitesse des fans, etc activé
messagebus indication de system event désactivé
mtink service imprimante Epson désactivé
mysql service de base de données, sauf pour ceux qui programment avec mysql désactivé
netfs montage des partages en réseau, si pas de réseau (désactivé) activé
netplugd gère les interfaces réseau désactivé
network gestion des connexions activé
nfs serveur de partage NFS désactivé
nfslock verrouillage des partages NFS désactivé
numlock activation de la touche verrouillage numérique activé
oki4daemon support imprimante winprinter désactivé
pand service pan bluetooth désactivé
partmon vérifie si les partitions sont pleines désactivé
pcscd service pour les smart cards désactivé
portmap service RPC , obligatoire si utilisation NFS désactivé
postfix serveur de courrier pour domaine ou réseau local désactivé
postgresql serveur base de données désactivé
proftpd serveur FTP désactivé
proftpd-xinetd idem désactivé
rawdevices periphérique de type bloc en accès direct automatique
routed mise à jour des tables de routage désactivé
rsync synchronisation des serveurs FTP désactivé
shorewall pare-feu en frontend livré avec Mandriva, fonctionne avec iptables activé
smb serveur samba, partage de fichier en réseau, si pas de réseau (désactivé) activé
sound gestion du son activé
sshd serveur ssh désactivé
ssh-xinetd idem au serveur ssh désactivé
swat configuration de samba désactivé
switchprofile configuration des profiles désactivé
syslog journal des évènements système activé
tmdns utilisé par zeroconf, si pas de réseau local (désactivé) désactivé
upsmon gestion onduleur désactivé
webmin gestion d'administration en local ou à distance de machine linux désactivé
xfs serveur de polices activé
xinetd le super daemon gère le lancement et l'arrêt d'un certain nombre de serveurs activé

A vous de savoir si vous devez laisser démarrer Apache, Webmin, cron, etc... si vous n'utilisez ces services qu'une fois par semaine, n'oubliez pas qu'une simple ligne de commande suffit pour les activer.

Changer de Window Manager

L'optimisation d'un système passe obligatoirement par la gestion des ressources, les Window Manager sont pour certains, très voraces en CPU ...

Ici, difficile de faire plus simple, il suffit juste de changer de Window Manager, comme les images sont plus parlantes qu'un long discours, je vous laisse juger.

La base est identique pour chaque bureau, même services démarrés, applications identiques : Gkrellm + Gimp pour la copie d'écran

Bureau KDE Bureau E17 Bureau Fluxbox Bureau Gnome Bureau Icewm
103 processus 86 processus 85 processus 111 processus 87 processus

Il est clair que les bureaux, c'est d'abord et avant tout, une affaire de goût, mais pour celui qui utilise une petite configuration matérielle, il est important de se tourner vers des bureaux plus légers en ressources ou en assistances*.
* - Assistances = applets (contrôle : son, clavier, erreur, etc.., rapport méteo, surveillance système, klipper, enfin, souvent beaucoup qui sont mis dans votre barre des tâches par défaut). on peut comprendre effectivement que le nouveau linuxien trouve qu'un système Linux est lent avec tous ces gadgets aussi importants qu'inutiles

Regardons ce que charge KDE comparé à Enlightenment grâce à la commande ps -fe :(sans les gadgets)

KDE charge environ une quinzaine de processus pour fonctionner. Normal, il embarque un certain nombre d'assistants et d'outils pratiques et conviviaux, c'est pour cela que de nombreux Linuxiens plébiscitent KDE.

Enlightenment est beaucoup moins gourmand puiqu'il ne démarre qu'un seul processus


C'est identique pour d'autres bureaux (Fluxbox, Blackbox, etc..). Après ce n'est qu'une question d'habitude et d'utilisation d'outils différents à connaître. Pas la peine d'utiliser Konqueror si vous changez KDE pour passer à Blackbox, il faut se tourner vers d'autres programmes plus light ( Endeavour, Rox, Entropy, mc, etc..).
Si vous souhaitez installer Enlightenment, un article en français sur le sujet : "Guidelinux"

Et l'optimisation dans tout ça ?

Si vous avez lu tranquillement cet article, que vous avez trouvé que certains processus n'avaient pas besoin d'être démarrés en continue, que vous utilisez très peu les terminaux, que vous démarrez votre imprimante une fois tous les 36 du mois, que les assistances des bureaux ne sont pas obligatoires, vous pouvez optimiser votre système sans aucun souci et ainsi avoir un système plus véloce.

Voila, si tout se passe bien, on peut se retrouver avec un environnement beaucoup plus léger qu'au début (pour rappel = 126 processus)

ici 28 processus, avec en prime, la température extérieure, l'outil de monitoring "Conky" et le processus lancé pour prendre une copie d'écran, soit 4 fois moins de processus qu'au début de l'article.
Ne vous inquiétez pas, ceci ne s'est pas fait en une journée, il m'a fallu un bon bout de temps pour me documenter, comprendre et optimiser la bête !

Il est possible de faire beaucoup mieux, l'objectif de départ est que le système reste pleinement fonctionnel, ce qui est le cas ici.

Ce qui donne ceci avec la commande ps -fe sur ma Debian : nettement plus court qu'au début de l'article n'est-ce pas ?

Compilation du noyau

Nous avons vu au début de l'article, les processus noyau, si vous souhaitez optimiser cette partie, il vous faudra compiler votre noyau.

La compilation du noyau en elle-même n'est pas très difficile, ce ne sont que quelques lignes de commande, c'est surtout la configuration du noyau qui est délicate, je ne vais pas entrer dans les détails, il existe de nombreux sites qui traitent du sujet, en voici quelques-uns pour vous aider dans cette démarche :
"Linux Keops"
"lea-linux"

Dans la même optique, Alléger son "initrd", un article très sympa que vous pouvez découvrir sur le site de "Trustomne"

Pour conclure

Quel plaisir d'avoir un système qui répond de suite à la première sollicitation, qui n'est pas englué par une multitude de processus qui dès le départ s'octroyent 250 Mo de Ram sans avoir ouvert un seul logiciel pour travailler, c'est tout l'art et la manière d'optimiser votre système comme le font les équipes de Formule 1, l'optimisation est un sujet passionnant et sans limite... à suivre.

Remerciement à KewlCat du forum de "Zebulon" qui a eu la gentillesse d'intervenir sur cet article.



Tesgaz le : 15/12/2005

- Article suivant :

- Retour : Linux.

- Haut de page -




Création SpeedWeb - Articles originaux Tesgaz
- 2004/2005 - Copyleft Attitude - Site hébergé par free.fr