Si vous recherchez stabilité, flexibilité et performances, vous devriez envisager de choisir une distribution Linux. L'un des principaux atouts de ce système d'exploitation (OS) est son noyau , qui est à la base de tout son fonctionnement. Le noyau Linux gère tout, de la planification des processus à la gestion de l'allocation de mémoire et de la communication entre les périphériques. Le noyau est si bien conçu que vous pouvez facilement l'utiliser tel quel, sans avoir à le modifier.
La plupart des utilisateurs n'auront pas besoin de modifier le noyau, alors ne vous en faites pas si ces modifications vous semblent inutiles, car votre OS basé sur Linux fonctionnera très bien sans ces modifications. Mais si vous souhaitez effectuer quelques réglages pour tirer le meilleur parti de Linux et de votre PC, j'ai quelques recommandations à vous faire.
Toute intervention sur votre noyau Linux comporte des risques. Des problèmes peuvent survenir, alors veillez à sauvegarder toutes les données que vous ne pouvez vous permettre de perdre. Il existe de nombreux documents sur les différents paramètres du noyau, et je vous encourage à les lire attentivement avant d'effectuer toute modification.
Ajuster la fréquence du processeur
Linux, comme tous les autres systèmes d'exploitation modernes, ajuste automatiquement la fréquence du processeur en fonction de la charge de travail. Plus celle-ci est élevée, plus le système d'exploitation sollicite le processeur, ce qui permet d'obtenir de meilleures performances pour les tâches les plus exigeantes. Tout cela est très bien, mais il est possible d'améliorer les performances ou l'efficacité énergétique en modifiant les régulateurs du processeur. Si vous avez besoin que le processeur fonctionne en permanence à sa fréquence maximale, une seule commande suffit pour y parvenir.
performance = Régler la fréquence du processeur au maximum.
powersave = Régler la fréquence du processeur au minimum.
ondemand / schedutil = Revenir à la mise à l'échelle adaptative.
Plusieurs options sont disponibles, notamment performance, powersave et schedutil (ondemand est désormais considéré comme obsolète). Pour régler tous les cœurs du processeur en mode performance, je vous recommande d'utiliser une application telle que cpupower ou turbostat, mais si vous vous sentez téméraire, exécutez la commande suivante dans un fichier bash personnalisé :
#!/bin/bash
#Set CPU cores to performance mode
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance > $cpu
done
Notez que si vous configurez votre processeur pour qu'il fonctionne en permanence à des fréquences plus élevées, vous consommerez beaucoup plus d'énergie. Pour les ordinateurs portables, power-profiles-daemon peut vraiment faire la différence en vous permettant de basculer entre les profils d'alimentation disponibles. Si vous activez cette option sur un appareil portable, l'augmentation de la consommation de votre batterie entraînera une diminution rapide du temps de charge.
Changer l'ordonnancement des E/S
Un planificateur d'E/S permet d'optimiser les demandes d'accès au disque. Même avec des SSD ultra-rapides pouvant dépasser 15 000 Mo/s, l'accès aux données stockées sur ces disques est nettement plus lent que celui de la mémoire vive (RAM) ou du cache du processeur. Les demandes d'E/S sont regroupées à des emplacements similaires afin d'améliorer le temps de réponse en assurant la mise en commun des demandes et en réduisant le temps de recherche du disque dur. Linux propose plusieurs options de planificateur d'E/S, chacune présentant ses propres avantages et inconvénients.
En particulier pour les serveurs ou les machines virtuelles, qui effectuent principalement des opérations d'E/S plutôt que des calculs gourmands en ressources CPU, le passage à Deadline ou Noop peut réduire la charge CPU et améliorer le débit. Deadline fonctionne en divisant les requêtes en deux files d'attente, l'une pour la lecture et l'autre pour l'écriture des données. Noop est mieux adapté aux SSD, aux machines virtuelles et autres, car il place toutes les requêtes d'E/S dans une file d'attente de type premier entré, premier sorti (FIFO). Il est plus basique, mais réduit la charge, en particulier si le système sous-jacent dispose d'un planificateur d'E/S. Voici comment procéder :
#!/bin/bash
# Change I/O scheduler for a device
echo deadline > /sys/block/sda/queue/scheduler
Les installations Linux modernes équipées du mécanisme de mise en file d'attente d'E/S multi-file (blk-mq) peuvent ignorer les réglages du planificateur d'E/S par périphérique pour les disques NVMe. Si vous vous attendez à ce que certains changements fassent une différence et que vous ne constatez aucun résultat, cela peut en être la cause.
Optimiser l'utilisation du processeur
L'algorithme Earliest Eligible Virtual Deadline First (EEDVF) est un algorithme de planification CPU intégré au noyau, qui gère la planification des tâches à accomplir par le CPU. Il est assez fiable dans l'ensemble, mais si vous souhaitez améliorer la réactivité générale du système, je vous recommande les réglages CFS Zen pour les systèmes basés sur Ryzen ou l'utilisation d'un outil tel que system76-scheduler pour ajuster automatiquement les priorités des tâches interactives. Les serveurs peuvent tirer parti du CPU pinning, qui consiste à attribuer des processeurs ou des threads spécifiques à des cœurs de CPU désignés, en remplaçant le planificateur Linux qui peut les déplacer dynamiquement entre les cœurs.
Selon la configuration de votre matériel, la configuration optimale du planificateur peut varier considérablement. Comme toujours, il est préférable d'effectuer quelques calculs avant d'apporter des modifications, puis de refaire le même test après avoir changé les paramètres. Ananicy est une autre option permettant de rendre le CPU un peu plus efficace en ajustant dynamiquement la priorité des processus en fonction de l'activité des E/S et du CPU. Les valeurs de priorité déterminent quels processus disposent de plus de temps CPU, ce qui contribue à réduire la pénurie de CPU pour les tâches interactives. Vous pouvez également continuer à lire et utiliser les cgroups à la place.
Modification du noyau avec sysctl
Le noyau Linux expose de nombreux paramètres qui peuvent affecter les performances du système, dont certains ont déjà été abordés. Mais sysctl peut être utilisé pour interagir avec bon nombre d'entre eux, ce qui vous permet d'apporter (et d'annuler) rapidement des modifications dans l'espoir d'obtenir un PC légèrement plus réactif. Par exemple, nous pourrions déployer certaines modifications sur vm.dirty_ratio et vm.dirty_background_ratio afin de modifier le moment où Linux vide les pages en attente d'écriture sur le disque (dirty pages), ce qui peut aider en cas de charges de travail importantes en écriture. Une page sale correspond en fait à des données dans le cache de pages du système qui ont été modifiées mais qui n'ont pas encore été écrites sur un support de stockage non volatile tel que votre SSD.
Les tampons d'envoi et de réception du réseau peuvent être ajustés via net.core.rmem_max et net.core.wmem_max. Il existe également des groupes de contrôle (cgroups) qui vous permettent d'attribuer avec précision la quantité de CPU ou d'E/S que chaque charge de travail reçoit. J'ai déjà parlé d'outils tels qu'Ananicy qui peuvent modifier dynamiquement la façon dont les processus se voient attribuer du temps CPU et E/S, mais les cgroups peuvent être considérés comme une méthode légèrement plus sûre pour obtenir des résultats similaires, car ils sont temporaires à moins d'être rendus permanents.
N'oubliez pas de faire le point sur les changements
Ces modifications n'ont pratiquement aucun intérêt si vous ne disposez d'aucun moyen de vérifier qu'elles ont un impact positif sur les performances du système. C'est là que le contrôle et l'analyse comparative entrent en jeu. Mieux encore, prenez des notes avant et après l'application des modifications afin de vous assurer que vos changements sont judicieux. Je recommande d'utiliser btop pour l'utilisation du processeur et des ressources système, sar pour l'historique des performances, netstat pour la mise en réseau et OCCT pour l'analyse comparative.
Il ne s'agit pas d'apporter des modifications à l'aveuglette au noyau, mais plutôt de comprendre comment votre charge de travail peut être affectée par l'optimisation de diverses parties du système d'exploitation Linux. Le noyau est vaste et comporte de nombreux paramètres qui peuvent être réglés, que vous lanciez une machine virtuelle, un serveur de laboratoire domestique ou un système de bureau pour passionnés. J'ai procédé à quelques optimisations mineures ici et là, mais j'ai souvent constaté que la plupart des distributions Linux offraient des performances plus que suffisantes.
C'est d'ailleurs l'un des points forts de Linux : la possibilité de personnaliser le système d'exploitation.
traduction de :
https://www.xda-developers.com/kernel-tweaks-that-can-actually-improve-performance-on-linux/
Enregistrer un commentaire
Les commentaires sont validés manuellement avant publication. Il est normal que ceux-ci n'apparaissent pas immédiatement.