Lecture anticipée NFS Linux

Cette page explique comment ajuster la lecture anticipée NFS sur les clients Linux qui installent des NetApp Volumes. La lecture anticipée permet au noyau de préextraire des blocs de fichiers avant qu'une application ne les demande, ce qui améliore le débit de lecture séquentielle. La lecture anticipée ne remplace pas les options d'installation ni l'ajustement de la simultanéité. Configurez-les d'abord. Pour en savoir plus, consultez la section Optimiser les clients NFS Linux.

Avant de commencer

Avant d'ajuster la lecture anticipée NFS, assurez-vous de remplir les conditions préalables suivantes :

  • Si vous prévoyez d'ajuster la table des emplacements ou les emplacements de session, commencez par la simultanéité NFS Linux.

  • Installez le volume avec les options d'installation NFS Linux appropriées, y compris rsize. Pour en savoir plus, consultez la section Options d'installation NFS Linux.

  • Ajustez la lecture anticipée après avoir installé le volume.

Présentation de la lecture anticipée

Lorsqu'une application lit un fichier de manière séquentielle, le client NFS Linux peut demander des données supplémentaires au-delà de la lecture actuelle. Cela masque la latence du réseau et augmente le débit pour les charges de travail séquentielles, telles que la lecture de journaux, le streaming multimédia, la copie en bloc et certaines analyses.

La lecture anticipée est configurée par point d'installation. Elle est moins efficace pour les charges de travail de lecture aléatoire que pour les charges de travail de lecture séquentielle.

Valeurs par défaut et rsize

De nombreuses distributions Linux définissent la lecture anticipée sur environ 15 fois rsize. Certaines distributions utilisent une lecture anticipée fixe de 128 Kio, quelle que soit la valeur de rsize, ce qui peut réduire les performances de lecture séquentielle après une mise à niveau. Vérifiez la valeur actuelle sur votre système de fichiers installé avant de la modifier.

Afficher la lecture anticipée pour une installation

Chaque point d'installation NFS possède un périphérique de bloc de sauvegarde correspondant sous /sys/class/bdi/. Pour trouver l'identifiant du périphérique de bloc de sauvegarde (BDI) et afficher la valeur read_ahead_kb actuelle, procédez comme suit :

  1. Recherchez l'installation dans /proc/self/mountinfo et notez l'identifiant BDI dans le troisième champ.

  2. Lisez la valeur en kilo-octets :

    cat /sys/class/bdi/BDEV/read_ahead_kb
    

Choisir une valeur de lecture anticipée

Suivez ces consignes pour sélectionner une valeur de lecture anticipée appropriée pour votre charge de travail :

  • Si vous n'avez pas besoin de performances maximales, conservez la valeur par défaut de votre distribution et n'ajustez pas la lecture anticipée.

  • Commencez par 15 fois rsize (en Kio) si votre distribution ne la définit plus automatiquement.

  • Pour rsize=1048576 (1 Mio), 15 fois rsize correspond à environ 15 360 Kio (15 Mio).

  • Augmentez ou diminuez la valeur par étapes et mesurez les performances à l'aide de votre application et de nfsiostat. Testez les valeurs supérieures à 15 360 Kio avant de les utiliser en production.

La lecture anticipée interagit avec le cache de pages. Les charges de travail qui contournent le cache (O_DIRECT) ne bénéficient pas de la lecture anticipée comme les lectures séquentielles mises en cache.

Conserver la lecture anticipée lors des redémarrages

Les modifications dynamiques s'appliquent jusqu'à ce que vous démontiez ou redémarriez. Pour conserver ces modifications pour les installations NFS, créez une règle udev.

  1. Créez /etc/udev/rules.d/99-nfs-readahead.rules et ajustez la valeur read_ahead_kb si nécessaire :

    SUBSYSTEM=="bdi", ACTION=="add", PROGRAM="/usr/bin/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes", ATTR{read_ahead_kb}="15360"
    
  2. Utilisez un chemin absolu vers awk sur votre système dans l'attribut PROGRAM=.

  3. Rechargez udev :

    sudo udevadm control --reload
    
  4. Réinstallez les volumes NFS ou redémarrez pour déclencher les règles pour les nouveaux appareils BDI.

Testez d'abord les règles udev sur un hôte hors production. Des règles incorrectes peuvent affecter les appareils de bloc non NFS si l'expression de correspondance est incorrecte.

Conseils concernant les charges de travail

Tenez compte des conseils suivants en fonction du type de charge de travail lorsque vous ajustez la lecture anticipée :

  • Lectures aléatoires (OLTP, E/S aléatoires de petite taille) : conservez la lecture anticipée par défaut.

  • Lectures séquentielles (multimédia, copie en bloc et calcul hautes performances): augmentez la valeur jusqu'à 15 fois rsize et mesurez.

  • Mixte : ajustez uniquement si le profilage indique un goulot d’étranglement de lecture séquentielle.

  • **`rsize` faible (64 Kio) avec une lecture anticipée par défaut de 128 Kio** : envisagez d'augmenter la lecture anticipée à 960 Kio ou plus.rsize

Combinez l'ajustement de la lecture anticipée avec les paramètres rsize, nconnect et de simultanéité appropriés.

Étape suivante