Tuning RHEL7

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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-adm fournit la sous-commande
 recommend.
  • 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.

Voir aussi

  • RHEL7 — spécificités de la distribution
  • XFS — tuning spécifique au système de fichiers