LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


debian:un_systeme_plus_reactif
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


debian:un_systeme_plus_reactif [2018/11/17 12:52] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +===== Améliorer la réactivité générale du système =====
 +
 +[[debian:debian:|Debian]] est une distribution réputée pour sa stabilité et le sérieux de son contrôle qualité, souvent utilisée sur des serveurs Debian choisit la sécurité plutôt que l'optimisation à tout prix. 
 +
 +Ce choix est adapté au plus grand nombre, cependant pour un usage " desktop " il est possible de rendre son système plus réactif, soit en allégeant la charge sur une machine ancienne, soit en optimisant l'utilisation d'un matériel récent et performant.
 +
 +Les " trucs " donnés ici marcheront souvent dans les deux cas, cependant ils sont plus dirigés vers les utilisateurs dans la seconde situation, celle d'un ordinateur performant sous-exploité.
 +
 +<note important>La plupart des conseils exposés ici sont sans risque pour votre système et vos données, si ce n'est pas le cas ce sera précisé. 
 +D'une manière générale vous serez amenés à toucher à des points névralgiques du système, ce qui nécessite des droits root bien souvent, prudence donc dans vos manipulations : faites des sauvegardes des fichiers de configuration modifiés, faites les changements par étapes et pas en bloc afin de pouvoir identifier une réglage posant problème, ayez une sauvegarde à jour de votre système sous la main...</note>
 +
 +Enfin si votre système est totalement inadapté à votre usage, toutes les optimisations du monde ne remplaceront pas une barrette de mémoire vive ou un nouveau processeur...
 +
 +<note>Un signe **$** précède les commandes qui ne nécessitent pas de droits administrateur ; un signe **#** précède celles qui nécessitent des droits administrateur (ces signes ne font <color red>PAS</color> partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.\\
 +Les touches utilisées sont indiquées entre crochets, exemple **[ctrl]** pour la touche "contrôle"</note>
 +
 +==== Services, Démons et dévoreurs de mémoire ====
 +
 +Par défaut beaucoup de services sont activés sur une machine GNU/Linux, ils sont évidement utiles dans certains contextes mais consomment également de la mémoire vive et ralentissent le démarrage. Si vous n'utilisez jamais ssh, un partage nfs ou samba désactivez les services correspondant, voir désinstallez les paquets qui s'y rapportent.
 +
 +Les programmes en console **sysvconfig** ou **sysv-rc-conf** (à lancer en root) ou sous kde **ksysv** (paquet kde-admin) vous permettront de désactiver des services automatiquement lancés au démarrage. Encore une fois limitez-vous aux services qui vous sont familiers, dans sysvconfig vous verrez que certains services sont commentés  " Don't mess with this " (ne jouez pas avec ça), vous êtes prévenu ! Désactivez ssh, cups si vous n'avez pas d'imprimante, hddtemp ou lmsensors si la température de votre machine n'est pas un soucis de tous les instants, mais ne touchez pas à un service dont vous ignorez le rôle.\\
 +"**Bum**" (pour "BootUp-Manager") est un outils graphique qui vous permettra de faire la même chose que ceux précédemment cités, dans le confort d'un interface graphique à deux niveaux de compétence (standard ou avancé).\\
 +
 +BUM en action\\
 +
 +{{ :debian:bum1.png?450 }}
 +
 +
 +Le passage à **Systemd** pour Debian Jessie va complètement changer la façon de gérer les services et "démons" puisqu'ils sont lancés à la demande par Systemd et ne ralentissent plus le démarrage. Pour vous familiariser avec le nouveau service "init" consultez le [[https://wiki.debian.org/systemd|Wiki Debian sur Systemd]].\\
 +
 +Désinstallez les polices de caractères inutiles, ces polices sont chargées en mémoire au démarrage du serveur graphique, et de nombreux programmes parcours les polices installées au lancement.
 +
 +Changer de Shell par défaut est également intéressant, vous grappillerez une seconde ou deux au démarrage, et à l'usage la réactivité sera également meilleur. Sur Debian l'opération est très simple, elle consiste à installer le shell "**dash**" et à l'utiliser en lieu et place de "bash". C'est normalement le choix par défaut depuis Debian "Squeeze", sinon exécutez :\\
 +
 +<code># dpkg-reconfigure dash</code>
 +
 +{{ :debian:dash.png?450 }} 
 +\\
 +
 +
 +**exim4** est un cas particulier, ce "MTA" (Mail Transfert Agent) est installé par défaut et lancé au démarrage, exim est utile évidement comme serveur de courriels, mais également pour recevoir les courriels du système. Si vous vous fichez des courriels systèmes, et ne savez pas ce qu'est un MTA, désinstallez simplement exim4 et installez le paquet "**nullmailer**" pour satisfaire les dépendances.\\
 +Si vous voulez simplement recevoir les courriels systèmes, mais sans avoir le démon exim lancé en permanence, changez l'option de configuration "QUEUERUNNER=" dans **/etc/default/exim4** de la manière suivante :\\
 +
 +<file>QUEUERUNNER='nodaemon'</file>
 +\\
 +
 +==== Système graphique ====
 +
 +Installer les pilotes spécifiques de sa carte graphique est une bonne idée, même si on est pas joueur, cela va fortement décharger le processeur. Les pilotes libres ont fait de gros progrès (radeon, nouveau), mais les pilotes propriétaires ont malheureusement encore de l'avance sur les performances et la gestion de l'énergie.
 +
 +Pour tous les environnements graphiques ne pas afficher le contenu des fenêtres pendant un déplacement ou un redimensionnement est une source d'économie importante.
 +
 +Même si on est réfractaire aux bureaux "3D", cubes tournoyant et autres gadgets, configurer le gestionnaire de fenêtre de manière à utiliser l'accélération matérielle de la carte graphique permet de décharger le processeur de manière notable et utilise mieux votre matériel. Dans le cas contraire le rendu logiciel sollicite le processeur.\\
 +
 +Enfin, ne négligez pas les environnements de bureau moins gourmands que [[kde:kde4:|KDE]] et [[gnome:|Gnome]], Debian offre un large choix et [[xfce:xfce:|XFCE]] ou [[lxde:lxde:|LXDE]] méritent par exemple votre attention pour leur rapport économie de ressources/esthétique. Les plus radicaux se tourneront vers des gestionnaires de bureaux alternatifs comme [[fluxbox:|Fluxbox]], [[openbox:|Openbox]] ou [[ratpoison:|Ratpoison]].\\
 +
 +
 +==== Swappiness ====
 +
 +Par défaut le noyau Linux, et par conséquent les distributions GNU/Linux utilisent un mécanisme d'allocation de la mémoire vive qui consiste à faire croire aux exécutables qu'ils disposent toujours d'une quantité suffisante de mémoire vive pour s'exécuter, voire d'une quantité supérieure à la mémoire vive réelle ([[http://en.wikipedia.org/wiki/Virtual_memory|virtual memory]] sur wikipedia). Ce tour de passe-passe prend en compte l'allocation dynamique de la mémoire qui fait que lorsqu'un programme passe au premier plan il lui est alloué une plus grande quantité de mémoire vive, même si lors de son lancement celle-ci était occupée par d'autres tâches. Pour se faire le noyau utilise une partie de la mémoire d'échange (swap) sur le disque pour déplacer des blocs de mémoire peu ou pas utilisés. Comme ces accès disques sont considérablement plus lent que les accès à la mémoire vive, le noyau essaye d'anticiper le "swapping", c'est ce paramètre que l'on peut modifier par le biais du coefficient de "swappiness".
 +
 +Sur un système avec beaucoup de mémoire vive on peut diminuer la valeur pour limiter les accès disques et la charge processeur, et utiliser au maximum la mémoire vive rapide.
 +
 +La valeur par défaut est 60, si vous disposez d'une confortable réserve de mémoire vive n'hésitez pas à descendre à 1. De toute façon si le swapping est nécessaire, le noyau outrepassera le réglage, simplement il ne le fera qu'en dernier recours et non systématiquement. Avec ce réglage les applications et l'environnement de bureau sont plus réactifs, en particulier après une courte période d'inutilisation.\\
 +La valeur minimale "0" a maintenant un sens strict, la mise en swap sera réduite au minimum et peut mener à des fermetures intempestives ("crash") d'application.
 +
 +Pour changer ce réglage éditez le fichier /etc/sysctl.conf en root et ajoutez à la fin du fichier les lignes :
 +
 +<file>#swappiness perso 
 +vm.swappiness=1</file>
 +
 +pour choisir une valeur de 1.
 +
 +Pour rendre le changement effectif utilisez :
 +
 +<code># /sbin/sysctl -p</code>
 +\\
 +
 +Un autre paramètre complémentaire permet de limiter la mise en swap des tables d'inodes, ce qui ralenti l'ouverture des gestionnaires de fichiers. Le paramètre "vm.vfs_cache_pressure=" est à placer au côté de "vm.swappiness=" dans le fichier "/etc/sysctl.conf" :
 +
 +<file>vm.vfs_cache_pressure=50</file>
 +
 +Une valeur de "50" semble la recommandation la plus courante.\\
 +
 +Ces réglages permettent également d'allonger la durée de vie des **disques SSD** en limitant les écritures sur la zone de swap. Cependant avec ces disques ultra-rapides et dans le cadre d'une utilisation personnelle les bénéfices sont moindres que pour les disques mécaniques (à plateaux rotatifs).
 +
 +Sur le sujet : [[https://help.ubuntu.com/community/SwapFaq#Performance%20tuning%20with%20%27%27swappiness%27%27|swappiness et performances]](eng).\\
 +
 +==== Système de fichiers ====
 +
 +Sur un système moderne avec un processeur rapide et une bonne quantité de mémoire vive le principal facteur de ralentissement est le disque dur. Il est lent, très lent comparé au flux d'instructions du processeur, aux I/O de la mémoire vive, et même aux réseaux gigabytes ou fibres qui se multiplient.
 +L'optimisation des disques est hors sujet ici, voyez le manuel de **hdparm** ou commencez par [[http://gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance|cette page du wiki Gentoo]] consacrée à hdparm.
 +Sur les disques sata les paramètres par défaut sont bons en général, veillez à choisir le bon mode dans le bios et à ne pas laisser le cavalier que certains fabricants s'acharnent à laisser sur 1.5gb/s pour des disques prévus pour du 3gb/s .
 +L'utilisation d'un ensemble [[http://fr.wikipedia.org/wiki/Raid_(informatique)|RAID]] peut augmenter nettement les performances également. (RAID1 "miroir" pour les performances en lecture, RAID0 "agrégation" ou 10 "miroir+agrégation) pour les performances globales).
 +
 +Le passage à un disque à base de mémoire flash [[https://fr.wikipedia.org/wiki/Solid-state_drive|SSD]] (Solid State Drive) sera sans aucun doute le changement qui aura le plus gros impact sur la réactivité générale d'un système.
 +
 +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 :
 +
 +<code>LABEL=debhome  /home   ext3    defaults,noatime        0       2</code>
 +<code>/dev/sda1      /       ext3    defaults,noatime,errors=remount-ro 0   1</code>
 +
 +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.
 +
 +L'option **nodiratime** limite la modification aux répertoires et non aux fichiers, elle est implicite avec **noatime** donc nul besoin de la rajouter.
 +
 +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". Ce réglage est le défaut sur certaines distributions (Ubuntu).\\
 +Les gains en performances peuvent être très important, jusqu'à 50%, et d'autant plus que la machine est puissante (processeur, mémoire vive...). Vous pouvez consulter [[http://kerneltrap.org/node/14148|cette discussion très instructive]], à laquelle participent Ingo Molnar, Linus Torvald, Andrew Morton ou Alan Cox parmi d'autres personnalités du développement du noyau.
 +
 +Supprimer la journalisation et passer de ext3 à ext2 va provoquer un léger gain de performances également, mais au prix de la sécurité des données en cas d'extinction brutale de l'ordinateur. Il est fortement conseillé d'utiliser un système de fichier journalisé comme ext3 ou reiserfs/reiser4. À l'inverse sur des périphériques à base de mémoire Flash (clef usb...) la journalisation va entraîner une chute des performances et une usure prématurée, utilisez un système de fichier non journalisé si votre système réside sur ce type de média. À noter que les disques "SSD" récents embarquent des algorithmes qui réduisent ces inconvénients, utiliser un système de fichiers journalisé sur ces disques n'a pas vraiment de conséquence en usage normal. Sur ce sujet voir [[http://thunk.org/tytso/blog/2009/03/01/ssds-journaling-and-noatimerelatime/|ce message très instructif de Theodor Ts'o]] (un des développeurs principaux des systèmes de fichiers du noyau Linux).\\
 +
 +Pour le système de fichier "ext3" [[debian:debian_compilation_noyau_facile|l'option de configuration du noyau]] "data=writeback" (il s'agit de l'option de configuration "**CONFIG_EXT3_DEFAULTS_TO_ORDERED=n**") au lieu de l'historique "data=ordered" permet un gain de performance en terme de baisse de la latence due aux écriture. Si vous êtes conservateur au niveau de la sécurité de vos données vous devrez conserver le mode "ordered" car l'option "writeback" rend le système plus sensible aux pertes d'alimentation et aux extinction intempestives.\\
 +Si vous rencontrez des blocages au démarrage avec cette option (peut survenir lorsque "data=writeback" est utilisée dans le fstab), utilisez "tune2fs" pour adapter le système de fichier. :!: Attention :!: cette commande ne doit être utilisée __QUE__ sur un système de fichier démonté ou monté "ro" ("read only" ou "lecture seule") :\\
 +
 +<code># tune2fs -o journal_data_writeback /dev/sd*</code>
 +
 +où "/dev/sd*" est à remplacer par la partition visée (exemple /dev/sda1).\\
 +
 +
 +=== Système de fichiers EXT4 ===
 +
 +L' "**ext4**" est le successeur de "ext3", le système le plus utilisé sur gnu/linux, et il a quelques avantages sur ce dernier. Si "ext4" a pu connaître quelques problèmes de jeunesse, on ne peut que le conseiller vivement à partir du noyau 2.6.30. Il est aujourd'hui le système de fichier par défaut de la plupart des distributions GNU/Linux.\\
 +
 +Sur Debian on peut l'utiliser sans risque à partir de Squeeze ("oldstable") (noyaux 2.6.30 et +), les gains de vitesse sont notables, en particulier au niveau du démarrage et surtout lors de l'exécution d'un "fsck". Pendant les opérations de copie de gros et/ou nombreux fichiers on note beaucoup moins de ralentissement de la machine.\\
 +
 +"ext4" est bien adapté à une utilisation avec des disques "SSD", on pourra utiliser l'option de montage "discard" dans le fichier /etc/fstab, /etc/cryptab ([[expert:systeme_chiffre_luks_pam_cryptsetup:|système chiffré avec LUKS]]), et le fichier de configuration de lvm2 /etc/lvm/lvm.conf (option "issue_discards = 1") pour éviter une dégradation des performances dans le temps.
 +
 +==== Readahead (readahead-fedora) ====
 +
 +<note info>Ces modifications sont obsolètes si vous utilisez "systemd" comme gestionnaire d'initialisation du système. Si vous utilisez des disques SSD les avantages seront également négligeables.</note>
 +
 +**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 :\\
 +
 +<code>$ grep CONFIG_AUDIT= /boot/config-$(uname -r)</code>
 +\\
 +
 +Après son installation, il faut lui permettre de "profiler" la séquence de démarrage. Lorsque le menu Grub apparaît sur votre écran :\\
 +  * sélectionnez l'entrée correspondant à votre système, et éditez la avec la touche [e].
 +  * Placez vous sur la ligne "kernel", et éditez la (touche [e] à nouveau)
 +  * Ajoutez en fin de la ligne "kernel" l'option **profile**
 +  * Utilisez la touche [b] pour poursuivre le démarrage\\
 +
 +Sur [[expert:grub2:|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 œil 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" 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).
 +
 +==== Ordonnanceur d' E/S (scheduler) ====
 +
 +Par défaut [[https://fr.wikipedia.org/wiki/Ordonnancement_d%27E/S|l'ordonnanceur d'Entrée/Sortie]] ("scheduler" en anglais) pour les accès disque sur Debian et la plupart des distributions est "cfq" (Completly Fair Queue). "cfq" est optimisé pour les disques
 +rotatifs et une charge de travail de type "serveur", et même s'il possède des optimisations pour détecter et s'adapter aux disques SSD les résultats sont souvent meilleurs avec l'ordonnanceur "deadline". Vous pouvez également expérimenter avec "noop" qui revient quasiment à ne pas avoir d'ordonnanceur mais "deadline" semble plus sûr pour les mêmes résultats, bonne nouvelle il n'est pas nécessaire de recompiler son noyau dans la plupart des cas !\\
 +
 +Pour savoir quel ordonnanceur vous utilisez, tapez en console :
 +
 +<code>$ for f in /sys/block/sd?/queue/scheduler; do printf "$f is "; cat $f; done
 +
 +/sys/block/sda/queue/scheduler is noop [deadline] cfq
 +/sys/block/sdb/queue/scheduler is noop [deadline] cfq
 +/sys/block/sdc/queue/scheduler is noop [deadline] cfq
 +/sys/block/sdd/queue/scheduler is noop deadline [cfq]
 +/sys/block/sde/queue/scheduler is noop deadline [cfq]</code>
 +
 +L'ordonnanceur entre crochet "[deadline]" est celui qui est actif pour le disque en question.
 +
 +Pour tester facilement un ordonnanceur vous pouvez en changer pour la session en cours avec :
 +
 +<code># echo deadline > /sys/block/sda/queue/scheduler</code>
 +
 +Le changement est actif jusqu'au prochain redémarrage, ou nouveau changement de votre part.\\
 +
 +Vous pouvez rendre le changement permanent à l'aide d'une règle "udev", de manière indépendante pour chaque disque (rotationel ou SSD). Pour savoir lesquels
 +de vos disques sont des SSD vous pouvez utiliser en console :
 +
 +<code>$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
 +/sys/block/sda/queue/rotational is 0
 +/sys/block/sdb/queue/rotational is 0
 +/sys/block/sdc/queue/rotational is 0
 +/sys/block/sdd/queue/rotational is 1
 +/sys/block/sde/queue/rotational is 1</code>
 +
 +Les disques SSD auront la valeur "0" en fin de ligne. Ensuite il ne vous reste qu'à créer (en root) un nouveau fichier /etc/udev/rules.d/60-ordonnanceur.rules et y mettre le contenu suivant :
 +
 +<file># Utiliser l'ordonnanceur "deadline" pour les disques SSD
 +ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"</file>
 +
 +Une seule règle suffit pour englober tous les disques (sd[a-z]), seuls ceux dont l'attribut "rotational" est à zéro seront affectés.\\
 +
 +La documentation la plus à jour concernant les ordonnanceurs, y compris leurs options modifiables par l'utilisateur, est disponible sur [[https://www.kernel.org/doc/Documentation/block/|kernel.org]] (en anglais).
 +
 +==== upstart ====
 +
 +**Upstart** a pour objectif de réorganiser la séquence de démarrage, ou plus exactement l'exécution des scripts présent dans /etc/init.d/ (/etc/rc*). En modifiant cet ordre, et en autorisant l'exécution parallèle de plusieurs scripts, upstart peut faire gagner une poignée de secondes supplémentaires lors du démarrage.
 +Upstart est installé par défaut sur Ubuntu, où il sera remplacé par "systemd".
 +
 +<note warning> Upstart va remplacer votre gestionnaire d'exécution des scripts de démarrage (sysvinit la plupart du temps), il est incompatible avec celui-ci. L'installation de "upstart" va donc entraîner la désinstallation de "sysvinit" (ou autre) qui est un composant indispensable de votre système. Prenez vos précautions en faisant une image de votre système avant de tester "upstart".</note>
 +
 +<note info>"Upstart" n'a pas été retenu comme gestionnaire d'initialisation du système pour Debian "Jessie" et suivante, c'est "Systemd" qui aura ce rôle. Il est probable que "upstart" soit rapidement abandonné et devienne obsolète.</note>
 +
 +
 +Sur le sujet :\\
 +
 +  * [[https://wiki.debian.org/Debate/initsystem/systemd|Débat sur le choix de "systemd" et les alternatives]]\\
 +  * [[http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot|"Dependency based boot sequence"]] (eng. Wiki Debian)\\
 +
 +==== Options noyau ====
 +
 +<note info> il n'y a qu'un noyau Linux, c'est celui des sources officielles de [[https://www.kernel.org/|kernel.org]], le site officiel du développement du noyau Linux. Cependant aucune distribution n'utilise les sources brutes (dites "vanilla"), elles y appliquent toutes des patchs et correctifs " maison ". Nous travaillerons sur les sources du noyau officiel Debian, pas sur les sources dites " vanilla " (brutes). Il est cependant possible d'utiliser ces sources facilement pour compiler un noyau Debian, en ré-appliquant des patchs Debian ou non.
 +Le noyau évolue vite, tenez vous au courant avant de vous lancer dans une compilation, lisez le manuel :-) (!) en commençant par le fichier " README " inclus dans les sources.</note>
 +
 +Les bonnes adresses pour commencer :\\
 +[[http://kernelnewbies.org/|kernel-newbies]]\\
 +[[http://kerneltrap.org/news|KernelTrap]]\\
 +[[http://lkml.org/|LKML.org]] ("Linus Kernel Mailing List")\\
 +
 +
 +Jusqu'ici nous n'avons fait qu'optimiser à la marge, mais c'est dans le noyau que se joue la majeure partie des optimisations possibles. Mauvaise nouvelle : il va falloir recompiler le noyau. Bonne nouvelle : c'est très facile sur Debian !
 +
 +Par défaut le noyau Debian est assez conservateur dans son paramétrage, et orienté vers les serveurs. On se focalisera ici sur les options qui vont apporter un gain de réactivité pendant l'utilisation.
 +
 +Commencez par installer l'environnement de compilation, c'est à dire les sources du noyau que vous souhaitez utiliser, "[[debian:debian_compilation_noyau:|"kernel-package"]], "fakeroot", "bzip2" et "libncurse5-dev" (nconfig).\\
 +
 +Pour préparer la compilation (remplacez [version] par le numéro de version de votre noyau):
 +
 +<code>$ mkdir ~/kernel && cd ~/kernel
 +$ tar xjf /usr/src/linux-source-[version].tar.bzip2
 +$ cp /boot/config-$(uname -r) ~/kernel/linux-source-[version]/.config
 +$ cd linux-source-[version]
 +$ make nconfig</code>
 +
 +On crée un répertoire pour la compilation, on décompresse les sources, on y copie la configuration du noyau actuel comme base de travail (renommée en ".config"), enfin on lance "nconfig".
 +
 +Le choix des options dépend en partie de votre matériel, vous vous renseignerez avec :
 +
 + <code>$ cat /proc/cpuinfo   <== cpu
 +$ cat /proc/meminfo  <== mémoire vive</code>
 +
 +et pour le reste :
 +
 +<code># update-pciids
 +$ lspci -nnv</code>
 +
 +<code># update-usbids
 +$ lsusb</code>
 +
 +Pour minimiser la taille de votre noyau, et donc son empreinte en mémoire, vous pouvez ne compiler que les modules indispensables à votre système. Pour cela la commande "make localconfig" est un bon point de départ. Attention, ne seront sélectionner que les modules utilisés par votre configuration au moment de la configuration.
 +
 + Je m'en tiens à des exemples génériques, par défaut ces options sont orientées pour une machine récente, avec processeur multi-core et une réserve de mémoire vive confortable.
 +
 +L'interface de **make nconfig** en action :
 +
 +{{debian:nconfig.png?580}}
 +
 +
 +  * **Processor type and features**
 +    * Laisser " PC Compatible "
 +    * Choisir le bon type de processeur (pour c2duo, " Core2/newer Xeon " au lieux de l'architecture i686 générique)
 +    * Décocher " generic x86 support "
 +
 +  * **Preemption Model**
 +    * Deux choix possibles :   Pour une station de travail soumise à de fortes charges " Voluntary Kernel Preemption " . Pour un ordinateur personnel " Preemptible Kernel "
 +
 +  * **Timer Frequency**
 +    * Cocher "1000 HZ"
 +    * Décocher "Compat VDSO Support" (pour Lenny et Etch à jour, libc > 2.3.3)
 +
 +  * **Kernel Hacking**
 +    * Cocher uniquement "Magic SysRq key" (si souhaité) , "Detect  Soft Lockups"
 +
 +  * **Security Options**
 +    * Si vous ne l'utilisez pas, ne savez pas de quoi il s'agit, ne travaillez pas pour la [[http://www.nsa.gov/selinux/index.cfm|NSA]], décochez "NSA Selinux Support" et autres "apparmor" ( vous pourrez ensuite également désinstallez les paquets qui s'y rapportent).
 +
 +Une fois satisfait enregistrez la configuration, et de retour en console tapez :
 +
 +<code>$ fakeroot make-kpkg --initrd --append-to-version -speedy --revision 1 kernel-image</code>
 +
 +À la place de "-speedy" mettez le nom qui vous plait,  ce sera le nom de votre noyau.
 +
 +:!: Important : si vous voulez pouvoir compiler des modules externes au noyau (pilote nvidia ou ati par exemple), et ne souhaitez pas conserver les sources intégrales du noyau, vous pouvez créer un paquet "headers" pour votre noyau personnalisé également. Dans ce cas ajoutez **kernel-headers** à la fin de la ligne de commande précédente.
 +
 +Lorsque la compilation est finie il vous reste à installer le noyau qui a été créé sous forme de paquet .deb dans le répertoire de niveau supérieur :
 +
 +<code>$ cd ../
 +# dpkg -i linux-image-[version]-speedy_1_amd64.deb</code>
 +
 +(le nom du paquet sera différent en fonction de vos choix)
 +
 +Voilà, c'est fini, au démarrage suivant vous aurez le choix de démarrer sur votre nouveau noyau, et si ça se passe mal vous pourrez toujours redémarrer sur l'ancien et recommencer votre configuration...
 +N'oubliez que votre fichier de configuration a été copié dans /boot, vous pouvez le réutilisez pour une nouvelle tentative. Partez de sources "fraîches" si vous devez recommencer plusieurs fois (effacez le répertoire des sources déjà utilisées et décompresser à nouveau les sources originales et un moyen simple).
 +
 +Un programme comme **komparator** vous permet d'avoir un aperçu rapide des changements effectués sur un fichier de configuration du noyau par rapport à une configuration de référence :
 +
 +{{:debian:komparator.jpg?580|}}
 +
 +Si tout va bien vous devrez encore recompiler les modules externes que vous utilisez éventuellement : pilote de carte graphique, de carte wifi, programmes compilés depuis les sources svn ...etc, mais normalement l'infrastructure "dkms" s'en charge.
 +
 +Une autre astuce qui ne vous fera pas gagner de réactivité en fonctionnement, mais accélèrera sensiblement le démarrage du système, consiste à **ne pas utiliser d'initrd** (initial ram disk). Pour obtenir ce résultat vous devez être certain de connaître le matériel présent sur votre machine (commande "lspci -nnv" et consultation de la documentation de la carte mère indispensable), et lors de la configuration du noyau choisir "Y" au lieu de "M" pour tous les pilotes nécessaires à votre système pour démarrer (contrôleurs de disques durs en particulier). Ce choix va entraîner la compilation des pilotes marqués "Y" dans le noyau lui même, et pas sous forme de modules ("M") chargés au démarrage par l'initrd.
 +Pour la compilation proprement dite du noyau vous enlèverez l'option "--initrd". Attendez vous à faire plusieurs essaies avant de réussir à démarrer la machine : noyau de secours indispensable !
 +
 +
 +<note> Concernant choix entre x86 et x86_64: aujourd'hui la plupart des "problèmes" liés au passage en 64bits sont résolus par le mode "multiarch". Le gain de performances peut varier de totalement imperceptible à franchement sensible en fonction des applications utilisées, pour de l'encodage video, de la création de graphisme 3D le gain est notable. À vous de choisir et tester, de toute façon la plupart des conseils données ici sont valables dans les deux cas.</note>
 +
 +Cet article ne se veut pas exhaustif, quasiment tous les forums consacrés à GNU/Linux ou à une distribution en particulier ont une rubrique dédiée à l'optimisation, consultez les.
 +
 +---
 +
 +==== Articles connexes ====
 +
 +  * [[debian:debian_compilation_noyau:|Compiler un noyau dans Debian avec "kernel-package"]]
 +  * [[debian:debian_compilation_noyau_facile:|Compiler un noyau dans Debian]]
 +  * [[expert:recompilation_noyau:|Méthode générique de compilation]]
 +  * [[http://www.phoronix.com/scan.php?page=article&item=linux_316_iosched&num=1|Comparaison des "sheduler" sur disques SSD]] (anglais)
 +
 +
  
debian/un_systeme_plus_reactif.txt · Dernière modification : 2018/11/17 12:52 de 127.0.0.1