|
Schoubi |
 |
Guru 
Déconnecté
Niveau : 5 N° de Membre :
566
Ancienneté : 100%
Participation : 15%
Inscription: 10 Mar 2002
Localisation:
Age: 47
Messages: 12627
Sujets Lancés : 1428
|
[GUIDE] Optimiser Linux
Optimiser Linux
De nombreux internautes "Windowsiens" migrent vers Linux, ils ont alors besoin de retrouver un système optimisé qui leur donnera de meilleures performances. Ce sujet est spécifique à une utilisation classique de votre distribution (bureautique, internet, média, etc.), il est destiné à vous, "nouveau linuxien". Lorsque l'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, voir même à notre matériel. Ainsi, de la même manière que l'on désactive les services inutiles de Windows, on reprend la même logique d'optimisation avec Linux afin d'obtenir un système plus véloce.
* Dans la terminologie Unix, on appelle cela des daemons (disk and execution monitor). Il s'agit de processus qui tournent en tache de fond et qui sont à l'écoute des événements relatifs à la machine, à d'autres processus, à l'horloge, au encore au réseau. Afin que tout le monde s'y retrouve et par soucis de simplicité, nous utiliserons le mot processus.
A noter que les utilisateurs avertis du monde Linux trouveront sans doute les explications de cet article peu "académique", celui-ci étant avant tout adressé aux utilisateurs Windows habitués à optimiser leur système et qui souhaitent en faire de même dans le monde Linux... Pour information, les utilisateurs Windows peuvent désactiver les services inutilisés à l'aide de l'article suivant : désactiver les services Windows.
Les processus sous Linux
Beaucoup trop de processus :
On peut faire ce constat en installant un outil de monitoring : Gkrellm.
Cet outil permet de connaître un certain nombre d'information en temps réel : température, nombre de processus, vitesse des ventilateurs, météo, etc. Pour l'installer, voici un tuto sur le site trustomne.

Une fois l'outil de monitoring installé, on constate avec surprise que l'on a 126 processus en cours sur le système. Si vous avez l'habitude d'optimiser Windows avec ses 11 processus (même si Windows est cachottier au niveaux des processus puisqu'il ne montre pas les processus réels du noyau, où svchost.exe peut cacher plus de 30 services à lui seul), vous trouverez sans doute ce nombre conséquent !
Mais par où commencer ? Suivez le guide débutant 
Pour optimiser un peu sa distribution, il y a plusieurs possibilités, voici un aperçu de ce que l'on peu 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 et gère les processus et contrôle leur é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 (elles sont nombreuses)
On ouvre une console et on tape simplement : ps -fe
Le résultat de cette commande 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 taches de Windows, Linux n'a rien à cacher à ses utilisateurs, il donne simplement les processus lancés à l'instant 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 utilization , 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. Comme vous pouvez le constater sur l'image ci-dessous, les différents processus sont classés en zones qui nous permettrons par 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, on utilise 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, voyons ensemble 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 contrôlé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.

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-utilisateur sans serveur X
5 - sous Mandriva, est associée à un système multi-utilisateur 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 lance ces scripts.
http://img212.imageshack.us/my.php?image=mcinitd6pk.png
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-utilisateur, 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 quelques-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 ; indiquez ensuite votre mot de passe root -> onglet Système --> choisissez dans la fenêtre de droite --> Activer ou désactiver les services.
http://img212.imageshack.us/my.php?image=service12gb.png
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 ! Pour le reste, il faudra le faire en passant par la console 
S'il n'est pas présent sur votre système, tapez la commande suivante : apt-get install rcconf
Ensuite, ouvrez une console puis tapez simplement rcconf en root.

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
Ce 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'autre, c'est en fonction des divers outils que vous installez sur votre système.
En fonction de vos activités informatique 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.
code:
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 création 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 parefeu activé
ipvadm serveur virtuel désactivé
keytable contrôle du clavier désactivé
kheader régénération automatique de fichier dans le noyau désactivé
linuxconf effectue des tâches au démarrage de la machine désactivé
linuxconfweb idem en serveur désactivé
lisa information lan, sauf si pas de réseau (désactivé) désactivé
lm_sensors gestion des températures, vitesse des fan, 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 manage 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 card désactivé
portmap service RPC , obligatoire si connexion par routeur activé
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 périphérique de type bloc en accès direct automatique
routed mise a jour des tables de routage désactivé
rsync synchronisation des serveurs FTP désactivé
shorewall parefeu en frontend de 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 utiliser par zeroconf, si pas de réseau local (désactivé) désactivé
upsmon gestion onduleur désactivé
webmin gestion d'administration en local ou a 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 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 vorace en CPU...
Ici, difficile de faire plus simple, il suffit simplement de changer de Window Manager. Comme les images sont plus parlantes qu'un long discours, vous pouvez juger par vous même.
La base est identique pour chaque bureau, même services démarrés, applications identiques : Gkrellm + Gimp pour la copie d'écran.
Bureau KDE 103 processus

Bureau E17 86 processus

Bureau Fluxbox 85 processus

Bureau Gnome 111 processus

Bureau Icewm 87 processus

Le choix de son bureau est 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ôles : son, clavier, erreur, etc.., rapport météo, surveillance système, klipper. Enfin, beaucoup sont souvent placé 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 tout 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. Rien de plus normal, il embarque un certain nombre d'assistants et d'outils pratiques et conviviaux, c'est pourquoi de nombreux utilisateurs plébiscitent KDE.
Enlightenment est beaucoup moins gourmand puisqu'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, voici un article en français sur le sujet : Guidelinux.
Et l'optimisation dans tout ça ?
Si vous avez tranquillement lu cet article jusqu'ici, vous pensez sans doute que certains processus n'avaient pas besoin d'être démarré en continu sur votre distribution, que vous utilisez très peu les terminaux, que vous démarrez votre imprimante une fois tous les 36 du mois, ou encore que les assistances des bureaux ne sont pas obligatoire. Vous pouvez alors 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)

Nous avons 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 faut un bon bout de temps pour se documenter, comprendre et optimiser la bête !
Il est possible de faire beaucoup mieux, l'objectif de départ est que le système soit pleinement fonctionnel, ce qui est le cas ici.
Ce qui donne ceci avec la commande ps -fe sur une Debian :
La liste est nettement plus courte qu'au début de l'article, n'est-ce pas ?
Compilation du noyau
Nous avons parlé des processus noyau au début de l'article. 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. Nous n'allons pas entrer dans les détails, il existe de nombreux sites qui traitent du sujet, en voici deux pour vous aider dans cette démarche :
- Linux Keops
- lea-linux
Dans la même optique, voici un article très sympa que vous pouvez découvrir sur le site de Trustomne : Alléger son "initrd".
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 et qui dès le départ s'octroie 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 qui a eu la gentillesse d'intervenir sur cet article.
Auteur : tesgaz
Source : http://www.zebulon.fr/articles/optimiser-linux-1.php
---------------------------------------------------------------------------------------------------------------------------
Sympa mais par rapport au titre ambitieux je trouve l'article un peu léger concernant l'optimisation..."Découverte du fonctionnement de Linux" aurait été plus approprié 
Pour ceux qui ont peur d'être perdu sous Linux, c'est un bon complément avec le [HOWTO] de Zakath
__________________

Edité par Schoubi le 06-01-2006 à 14:21
Signaler ce message à un modérateur | IP: Logguée Temps en ligne : 48 Jours, 18 Heures, 48 Minutes, 8 Secondes en ligne
|