Site perso : Emmanuel Branlard

Subsections

14. Optimizations ?


14.1 Swappiness

Système avec beaucoup de mémoire vive : diminuer la valeur pour limiter les accès disques et la charge processeur, au prix d'une utilisation de la mémoire plus importante.

La valeur par défaut est 60, si vous disposez de plus de 1Go de mémoire n'hésitez pas à descendre à 20, voir aussi bas que 5 au-dessus de 2Go. De toute façon même si la valeur 0 est utilisée et que du swapping soit nécessaire, le noyau outrepassera le réglage, simplement il ne le fera qu'en dernier recours et non systématiquement en avance. J'utilise la valeur 10 qui me donne satisfaction, la mémoire vive est plus utilisée et je n'ai jamais de swap, les applications et l'environnement de bureau sont plus réactifs, en particulier après une courte période d'inutilisation. 
Pour changer ce réglage éditez le fichier /etc/sysctl.conf en root et ajoutez à la fin du fichier les lignes :

#swappiness perso 
vm.swappiness=10

pour choisir une valeur de 10.
Pour rendre le changement effectif utilisez :

# /sbin/sysctl -p

14.2 Optimisation - Date de modif

Pour ce qui est des options propres au système d'exploitation, avec un système journalisé comme ext3 ou reiserfs le système va enregistrer l'heure précise d'accès à un fichier lors de sa création, modification ou simplement de son ouverture. Ce dernier point est un gâchis de ressources sur un poste de travail (sur un serveur il peut se justifier par la nécessiter de pouvoir effectuer des contrôles sur les accès à un fichiers donné, mais le premier pirate venu modifiant ce paramètre d'un simple " touch " on peut douter de son efficacité...). Pour supprimer ce comportement ajoutez l'option noatime dans votre fichier / etc/fstab. Un exemple de lignes modifiées : 

/dev/sda1      /       ext3    defaults,noatime,errors=remount-ro 0   1

Cette option est applicable à la partition root et /home, mais également aux autres partitions contenant des données si vous avez un partitionnement plus élaboré (/usr ; /tmp ; ...), l'option n'est pas utile sur /boot, et pas utilisable sur /swap. 
Comme alternative, l'option relatime est un bon compromis.Certains programmes comme "mutt" (client de courriel en ligne de commande) peuvent être perturbés par "noatime", ce qui ne sera pas le cas de "relatime".

14.3 Readahead

Readahead est un programme conçu pour accélérer le chargement d'autres programmes, plus particulièrement pendant la séquence de démarrage. À noter que le paquet "readahead" semble être en voie d'abandon dans Debian et Ubuntu. Sur Debian il est remplacé par "readahead-fedora" à partir de Squeeze.
Pour que "readahead[-fedora]" fonctionne votre noyau doit être compilé avec le support du système d'audit. C'est le cas des noyaux par défaut Debian. Si vous compilez vous même votre noyau vérifiez avec :

$ grep CONFIG_AUDIT= /boot/config-$(uname -r)

Après son installation, il faut lui permettre de "profiler" la séquence de démarrage. 
Sur grub2 :
    * Sélectionnez l'entrée correspondant à votre système, et éditez la avec la touche [e].
    * Placez vous sur la ligne "linux", et éditez la directement.
    * Ajoutez en fin de la ligne "linux" l'option profile.
    * Poursuivez le démarrage avec [ctrl][x]

Ceci n'est plus nécessaire avec "readahead-fedora", des tâches "cron" se chargeant de la configuration sans intervention de l'utilisateur (c'est beau le progrès ;-) )
Le démarrage peut être sensiblement plus lent que la normal, ce sera l'unique fois, l'option "profile" que vous avez ajoutez aura disparu au prochain démarrage. Les démarrages suivant devraient être plus rapides. Vous pouvez jeter un oeil aux fichiers de configuration dans /etc/readahead/ (/etc/readahead.conf pour "readahead-fedora"), ils contiennent la liste des exécutables et librairies à pré-charger en cache pour le démarrage (fichier "boot"), et le fonctionnement normal (fichier "desktop").
Readahead ne présente aucun danger pour votre système, il est encore plus efficace utilisé conjointement au options suivantes :

%%% makefile concurrency and readahead
# aptitude install readahead-fedora
# echo CONCURRENCY=makefile >> /etc/default/rcS
# aptitude install insserrv
# dpkg-reconfigure insserv sysv-rc

Cela consiste à réorganiser totalement la séquence d'exécution des scripts "init", et permettre leur exécution parallèle (en particulier sur les processeurs multicoeurs). Si vous constatez des problèmes d'initialisation de certains scripts "init" avec ces réglages (peu probable), faites un rapport de bug au mainteneur du paquet en question. Il lui suffit de corriger les en-têtes des script "init".

"readahead" peut être utilisé conjointement à "upstart" présenté ci-dessous, lisez /usr/share/doc/readahead-fedora/README pour les éventuelles précautions (en particulier désinstaller "auditd" si présent).

14.4 Optimisation - Preload

Preload est un "daemon adaptatif pour readahead", qui se lance en tache de fond sur votre système, qui observe quel programme vous utilisez le plus souvent, et les met en cache en vue d'accélérer le temps de chargement des applications. En utilisant Preload, vous metterez votre mémoire non utilisé au travail (en gros elle sera utilisé utilement), et améliorer les performances général de votre ordinateur de bureau.

Installer Preload sur Ubuntu est faisable facilement avec la commande:
sudo apt-get install preload

14.5 Optimisation - Démarrer les applications plus rapidement avec Prelink

sudo apt-get install prelink
sudo gedit /etc/default/prelink
Changer l'option:
PRELINKING=unknown en PRELINKING=yes
Pour lancer Prelink, taper la commande suivante dans la console:
sudo /etc/cron.daily/prelink
Ceci prendra quelques temps à finir (autour de 10-15 minutes).
Si vous voulez lancer Prelink à chaque fois que vos mettez à jour votre système, ajouter un script dans le dossier /etc/apt/apt.conf.d/
(quand il dit script c'est un fichier hein...), appellé le S99prelink, et mettez la ligne suivante à l'intérieur:
DPkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";}

14.6 Optimisation - Suppression services - Init scripts

Debian squeeze goes towards concurrency boot ie in /etc/default/rcS CONCURRENCY=makefile
See "/usr/share/doc/insserv/README.Debian".

http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

dpkg-reconfigure insserv sysv-rc

####To see the boot and reboot sequence dependency graph, use

aptitude install insserv graphviz
/usr/share/insserv/check-initd-order -g > boot.dot
/usr/share/insserv/check-initd-order -g -k > reboot.dot
dotty boot.dot
dotty reboot.dot

###
http://www.debian-administration.org/articles/629
http://www.debian-administration.org/articles/620

### Runlevels (S does not mean service but single!)
runlevel 	directory 	description of runlevel usage
N 	none 	system bootup (NONE) level (no "/etc/rcN.d/" directory)
0 	/etc/rc0.d/ 	halt the system
S 	/etc/rcS.d/ 	single-user mode on boot (alias: "s")
1 	/etc/rc1.d/ 	single-user mode switched from multi-user mode
2 	/etc/rc2.d/ 	multi-user mode
3 	/etc/rc3.d/ 	,,
4 	/etc/rc4.d/ 	,,
5 	/etc/rc5.d/ 	,,
6 	/etc/rc6.d/ 	reboot the system
7 	/etc/rc7.d/ 	valid multi-user mode but not normally used
8 	/etc/rc8.d/ 	,,
9 	/etc/rc9.d/ 	,, 

### Go back to default:
# for squeeze and later
insserv anacron

# prior to 6.0 (prior to squeeze)
update-rc.d anacron defaults 

man insserv
man update-rc.d
man init

##Manually :
/etc/init.d
/etc/rc0.d
/etc/rcS.d

%%%
Nouveau outil, graphique mais bien plus complet : BUM
sudo aptitude install bum
%%%
Install a tool - sysv-rc-conf. It is a perl based boot process adjustment tool.
Code:
sudo sysv-rc-conf

-P switch with sysv-rc-conf to remove old empty entries.

%%% List of services
acpid (2 3 4 5 -> D?)  ???????????
acpi-support     support de l'acpi (gestion de l'énergie)
alsa             serveur de son
alsa-utils(S) : ????????
anacron (2 3 4 5 -> D or kept, logrotate useful for instance.. but well)  :   cron anachronic
apmd             usefull for battery monitor demon apm (ancien acpi) (gestion de l'énergie)
apparmor (D)     service, securite)
aport (D)       (info sur les crash)
atd (D)     ?????        daemon atd (différent de cron dans le principe)
aumix(2 3 4 5->D? if different than amixer) : manager son en mode texte
avahi-daemon(D?) :   permet de découvrir automatiquement les ressources réseau et de s'y connecter
binfmt-support(?????????) :    pour wine - utiliser d'autres bin format
bootclean.sh    efface les répertoires /tmp,/var/run et /var/lock
bootlogd (S ->D)       un des permiers scripts exécuté, lance le daemon bootlogd
bootlogs (1 2 3 4 5 ->D)       un des permiers scripts exécuté, lance le daemon bootlogd
bootmisc.sh     effectue diverses tâches, genre sauver le résultat de dmesg dans /var/log/dmesg, afficher le motd, etc)
checkfs.sh        vérifie si les partitions définies dans /etc/fstab ont besoins d'être vérifiées (fsck)
checkroot.sh       vérifie si la racine est ok , monte les swap définis dans /etc/fstab, en cas de problème boot en single mode
console-screen.sh (S)    initialise la console (polices notamment, défini par console-tools)
cpid               daemon acpi (gestion d'énergie)
cpufrequtils (2 3 4 5 -> D see following info)  : for cpu freq management
                  check the output of cpufreq-info and  cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                  If "ondemand", you're good. For laptop: unplug your power cord and check if it gives you "powersave".
cron   (ON)            daemon crond, qui lance des taches de manière périodique
cups   (D)          gestionnaire d'impression
cupsys  (D)        gestionnaire d'impression
dbus-1  (2 3 4 5)  Important for power management,  daemon dbus (http://www.freedesktop.org/Software/dbus)
dhcdbd (ON):     Interface D-Bus pour le client DHCP ISC
discover        essaye de détecter tout ton matériel
dns-clean       efface les fichiers /etc/resolv.conf laissée par ppp
evms            daemon qui gère le stockage d'une manière avancée
exim4	: gestion de mail -> paquets destinstallés
fancontrol :     (partie du paquet lm-sensors)
fam              File Alteration Monitor, permet de notifier les programme d'un changement sur les fichiers (genre tu ouvre ton home dans konqueror, dans un console tu efface un fichier dans ton home, konqueror affichera immédiatement la modification, sans besoin de recharger le répertoire), actuellement remplacé par gamin
fetchmail        mail? récupérer des mails sur des serveurs distants (pop/imap)
fuse (S)
gdm              gestionnaire de connexion graphique (le truc qui vous demande votre login/pass)
hal(ON) :       gestionnaire des peripheriques (combiné à Udev/Dbus) est un système qui permet d'autodetecter les périphériques)
halt (nothing)                      pour arreter le PC
hddtemp (D): used by sensors utils
hdparm   (S)           gestion des DD (réglage des disques dur, genre activer le DMA, mettre en udma5) et état du raid via /proc/mdstat
hostname.sh           declaration de ton hostname (à partir de /etc/hostname)
hotplug                   lance différents sous-systèmes hotplug (à partir de /etc/hotplug et /etc/hotplug.d) gère tout ce qui est détection du matériel, comme l'insertion d'un matériel, etc), assez complexe)
hwclockfirst.sh     synchronise l'horloge matérielle avec l'horloge logicielle
hwclock.sh
ifupdown   (S)              initialise l'état des interfaces (activées ou non)
ifupdown-clean (S) ??? 
inetd                  daemon inetd, sert à lancer d'autres services (serveur ftp, http, etc) de manière sporadique
initrd-tools.sh          s'occupe de l'initrd (libération et récupération de la mémoire utilisée par celui-ci)
ivman (ON) :   like hal support automount of different media
jabber :
jackd(D?) :    server de son permettant connexions au peripherique audio
kbd (S) : ?????????
keyboard-(S) : ?????????
keymap.sh    charge le mappage clavier adéquat
killprocs (S) ?????????
klogd (D)               daemon qui enregistre les messages du noyau
laptop-mode (parsing tete de lecture, gestion disque pour economie d'energie, batterie)
libdevmapper1.00     gère les fichiers périphériques nécéssaires à libdevmapper
lm-sensors(D?) : 
loadcpufreq (2 3 4 5) ?????????
lpd (D):		printing service
lpnrg( 2 3 4 5-> D) :         enhanced lpr/lpd printer spooling system for local or remote printers
lvm                      gestionnaire de stockage avancé
makedev                  crée les fichiers de périphérique dans /dev
mdadm                          monte les arrays raid définies dans /etc/mdadm/mdadm.conf
mdadm-raid                  lance le daemon qui surveille les arrays raid
module-init-tools (S)  ????????  résoudre les dépendances et charger les modules nécessaires
modutils              chargement des modules
mountover  (S)   ?????????????????
mountall.sh           montage des partition (systèmes de fichiers "locaux" ie non réseaux définis dans /etc/fstab)
mountnfs.sh           monte les système de fichiers nfs et samba figurant dans /etc/fstab
mountvirtfs             montage fs virtuel  (/proc, tmpfs, devpts , /sys, usbfs)
networking    (S->D)          activation des interfaces réseaux définies dans /etc/networking/interfaces et règle quelques autres trucs, genre le forwarding, la protection syn cookies, l'anti-spoofing)
nfs-common (2 3 4 5 S-> D?)  ????????
ntpdate                  synchronisation de l'horloge logicielle à l'aide d'un serveur de temps via le protocole ntp
nvidia-glx               gestion du module propriétaire nvidia
saned (D?):    scanner et reseau
samba                   daemon samba (partager/voir des fichiers/imprimantes sur un réseau netbios)
screen-cleanup      efface les "pipes" laissés par le logiciel screen
sendsigs  (nothing)        envoi des signaux KILL pour tuer les processus restants a l'extinction
single   (1)         executé par init quand tu rentre en "single mode"
skeleton                un exemple de script à mettre ici
stop-bootlogd (2-5 : D)     stop le daemon bootlogd
stop-bootlogd-single (S : D)
sudo (2-5-> D)              fait le ménage dans les fichiers temporaires de sudo, make sure privileges don't persist across reboots
sysklogd                    lance syslogd, qui sauve les messages du système dans /var/log
udev   (S)         daemon qui crée de manière dynamique et personnalisée des liens dans /dev
udev-mtab (S)
umountfs  (nothing)     démonte les swap et tous les systèmes de fichier locaux
umountnfs.sh  (nothing)  démonte tous les système de fichier exceptés la racine
urandom   (S)       sauvegarde/restaure la "graine aléatoire"  pour le générateur de nombres aléatoire /dev/urandom, le fichier est /var/lib/urandom/random-seed et est restauré/sauvegardé
wicd (2 3 4 5)
winbind(D) : utiliser par samba pour se connecter a des machines windows et gerer les droits utilisateurs
xfree86-common    initiliase le serveur xfree (xorg maintenant) notamment les sockets
wpa-ifupd

14.7 Bootchart

L'installer, puis ajouter l'option au kernel dans grub :
kernel /vmlinuz-2.6.10 ro root=/dev/hda1 init=/sbin/bootchartd
Un tarball est generé dans /var/log. en tappant bootchart dasn son home, un png est generé.

14.8 Optimisation - Config reseau demarrage

La configuration réseau ralentit un peu le démarrage d'Ubuntu.
Pour le fixer, éditez votre fichier "/etc/hosts" en tapant la commande: sudo gedit /etc/hosts
Vous devriez y voir les lignes suivantes:
127.0.0.1 localhost
127.0.1.1 toto

"toto" est le nom de votre machine (votre localhost name)
Ajoutez dans la première ligne le nom de votre machine:

127.0.0.1 localhost toto
127.0.1.1 toto
Sauvegardez et quittez gedit. Redémarrez votre PC.

14.9 Optimisation - chargement polices

le chargement de bcp de polices ralentis le systeme je crois
donc si tu veux virer des polices inutiles... style tu fais jamais de traitement de texte...
tu peux supprimer des polices
alors pour ca tu ouvres synaptic, tu cherches ttf et tu supprimes toutes les polices sauf:
   ttf-dejavu, ttf-opensymbol, ttf-bitream-vera

puis ds un terminal tu tapes :
   sudo fc-cache -f -v

Voilà !

14.10 Open office optimization

Options -> Memory 
Cache : 128 Mo
Memory per object 32
Java ->disable

open office rapide
http://forum.ubuntu-fr.org/viewtopic.php?id=130569&p=1







Emmanuel Branlard