Link Station > Section Technique > Software >

[GUIDE] Optimiser Linux




Aller au Forum:
Notez ce sujet :

  Sujet précédent   Sujet suivant
Auteur
Sujet    Tout développer | Tout contracter NOUVEAU SUJET    RÉPONDRE
Réduire ce messageSSchoubiGuruNiveau 42 · ScénaristeRéférenceur Émérite
Membre depuis
2002
Messages
12627
Plus
Membre n°
566
Inscription
10 Mar 2002
Âge
47 ans
Sujets lancés
1428
Ancienneté
100 %
Participation
97 %
Post [GUIDE] Optimiser LinuxAncien message 06-01-2006 14:09
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.



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.



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 : Zebulon.frOptimiser LinuxDe nombreux internautes «Windowsiens» migrent vers Linux, ils ont alors besoin de retrouver un système optimisé qui leur donnera de meilleures performances.

---------------------------------------------------------------------------------------------------------------------------

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

Réduire ce messageZZakathGuruNiveau 29 · CascadeurRéférenceur Aguerri
Membre depuis
2002
Messages
9866
Plus
Membre n°
7213
Inscription
15 Dec 2002
Localisation
Copenhague
Sujets lancés
426
Ancienneté
97 %
Participation
92 %
Ancien message 06-01-2006 14:15
Sympa mais plutôt complexe, quand même.

Je tiens à rassurer tout le monde : on n'a absolument pas besoin de savoir ces choses pour utiliser Linux. C'est juste pour ceux qui veulent voir ce qui se passe "sous le capot".

Merci Schoubi, en tout cas, je sens que je vais apprendre des choses


Edit: bon, en fait, je n'aime pas des masses l'article. Certes il présente des commandes intéressantes si on veut voir ce qu'il se passe (top/ps/pstree), mais le principe selon lequel le nombre de processus a un impact sur la performance de la machine n'est pas forcément évident. Même si ce n'est pas le cas en réalité, enlightenment pourrait très bien avoir un seul processus qui bouffe 10 fois plus de ressources que KDE tout entier. Et, sans avoir non plus de benchs sous la main, je suis à peu près certain que tous les démons système ne représentent qu'1 ou 2% d'un firefox ou d'un ooffice, par exemple. Vouloir les couper pour grapiller une microseconde ou deux, c'est mettre en danger la stabilité du système pour pas grand chose, je trouve...

Mes 0,02€

__________________
Allez jeter un œil à mon portfolio !

Edité par Zakath le 06-01-2006 à 14:26

Signaler ce message à un modérateur | IP: Logguée

Réduire ce messageSSchoubiGuruNiveau 42 · ScénaristeRéférenceur Émérite
Membre depuis
2002
Messages
12627
Plus
Membre n°
566
Inscription
10 Mar 2002
Âge
47 ans
Sujets lancés
1428
Ancienneté
100 %
Participation
97 %
Ancien message 06-01-2006 14:20
Incroyable, je vais réussir à apprendre à Zakath des trucs sur Linux

__________________

Signaler ce message à un modérateur | IP: Logguée

Réduire ce messageRribwundNewbieNiveau 1 · Arrivant
Membre depuis
2006
Messages
1
Plus
Membre n°
13691
Inscription
22 Jan 2006
Sujets lancés
0
Ancienneté
85 %
Participation
2 %
Ancien message 22-01-2006 15:39
Je suis assez d'accord avec Zakath, la philosophie unix c'est justement plein de petits trucs qu'on peut reutiliser. Sinon l'article ne mentionne pas xrestop qui permet de mesurer les ressources graphiques allouées par un processus.

/me retourne sur son wmii (http://www.wmii.de )

Signaler ce message à un modérateur | IP: Logguée

Il est actuellement 18:26 (GMT) NOUVEAU SUJET    RÉPONDRE   
  Sujet précédent   Sujet suivant
Link Station > Section Technique > Software > [GUIDE] Optimiser Linux

Aller au Forum:
Notez ce sujet :


Réponse rapide
Afficher une version imprimable | Chercher dans ce sujet | Envoyer cette page par email | S'inscrire à ce sujet | Télécharger ce sujet
Règles du forum :
Créer de nouveaux sujets
Répondre aux messages
Attacher des fichiers
Editer vos messages
: not autorisé
: not autorisé
: not autorisé
: not autorisé
Le Code HTML est OFF
Le BBCode est ON
Les Smileys sont ONs
Le code [IMG] est ON
Page générée en 0.057465 secondes en exécutant 39 requêtes SQL.
Apache - Compression GZIP : Activée.