Tuning RHEL7
| Fiche express | |
|---|---|
| Domaine | Tuning des performances |
| Commande | tuned-adm, pcp, ss
|
| Contexte | RHEL7 — évolutions par rapport à RHEL6 |
| Voir aussi | RHEL7, XFS |
Aide-mémoire sur le tuning des performances RHEL7 : nouveautés par rapport à RHEL6, outils de
supervision (Performance Co-Pilot, ss), et principaux paramètres de tuning CPU,
mémoire, I/O et réseau.
Nouveautés RHEL7
- Deadline remplace CFQ comme ordonnanceur I/O par défaut.
- XFS remplace EXT4 comme système de fichiers par défaut (taille de FS jusqu'à 500 To,
taille de fichier jusqu'à 8 Eo). EXT4 reste disponible (FS max 50 To, fichier max 16 To).
- BTRFS est fourni en support complet (sorti du statut beta).
- Amélioration des performances de GFS2.
- Tuna a été mis à jour avec des profils d'utilisation ; la version graphique inclut un
écran temps réel.
- Le profil par défaut de TUNED devient
throughput-performance(au lieu de
enterprise-storage).tuned-admfournit la sous-commanderecommend.
- Automatic NUMA Balancing : affectation automatique des zones mémoire pour une meilleure
correspondance applicative et de meilleures performances.
- La perte de performance des FS liée à l'activation des barrières d'écriture (protection des
journaux en cas de panne matérielle/électrique) est réduite à 3 %.
- OProfile permet de créer des profils de performance système.
Performance Co-Pilot (PCP)
Outil de supervision introduit avec RHEL7 : il permet d'exécuter les commandes de mesure de performance sur la machine locale ou sur une machine distante sans s'y connecter. Le service doit être démarré des deux côtés.
yum install pcp
systemctl start pmcd
Principaux binaires fournis :
pcp pmclient pmerr pmlogger pmafm pmcollectl pmevent pmloglabel pmatop pmconfig pmfind pmlogsummary dbpmda pmdate pmgenmap pmprobe genpmda pmdbg pmie pmsocks pmdumplog pmieconf pmstat pminfo pmstore pmlc pmtrace pmlogcheck pmval pmlogextract
Réseau (ss)
ss complète et précise les informations données par netstat :
ss -tmpie
Configuration CPU/tickless
Le mode dynamic tickless est disponible mais désactivé par défaut. Au démarrage du système, il est recommandé de déplacer les threads RCU vers un cœur non sensible à la latence (ici le cœur 0) :
for i in $(pgrep rcu); do taskset -pc 0 "$i"; done
Il est aussi possible de forcer l'affinité du kernel write-back :
echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
Vérifier que la configuration dynamic tickless fonctionne (stress occupe le CPU 1
pendant 1 seconde) :
perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1
Mémoire
echo 1 > /proc/sys/vm/overcommit_memory
sysctl vm.overcommit_memory=1
Ordonnanceurs I/O et systèmes de fichiers
Systèmes de fichiers disponibles : XFS, EXT4, BTRFS, GFS2 (tuning XFS détaillé : XFS).
Pour CFQ sur stockage rapide :
# /sys/block/devname/queue/iosched/slice_idle = 0
# /sys/block/devname/queue/iosched/quantum = 64
# /sys/block/devname/queue/iosched/group_idle = 1
Paramètres de la queue d'un bloc-périphérique (/sys/block/sdX/queue/) :
- add_random : contribue au pool d'entropie (
/dev/random). - max_sectors_kb : défaut 512, minimum = taille du secteur logique du disque.
- nomerges : défaut 1 (activé) — autorise la fusion des requêtes.
- nr_requests : défaut 128 — nombre de requêtes stockables dans la queue R/W.
- optimal_io_size : à aligner sur les recommandations de l'application.
- read_ahead_kb : défaut 128 Ko — quantité lue en avance lors d'une lecture séquentielle.
- rotational : certains SSD ne s'identifient pas correctement et sont vus comme un disque
mécanique classique ; forcer la valeur à 0 dans ce cas.
- rq_affinity : par défaut, les I/O concurrentes sont traitées par des CPU différents ;
passer à 1 pour que le CPU qui traite la demande d'I/O gère aussi son overhead.