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.
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
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 :
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
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.
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
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
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 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. |
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.
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)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... |
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 |
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.
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
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 ?
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"
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
- Retour : Linux.
- Haut de page -