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 :
Recherchez l'installation dans
/proc/self/mountinfoet notez l'identifiant BDI dans le troisième champ.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 foisrsizecorrespond à 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.
Créez
/etc/udev/rules.d/99-nfs-readahead.ruleset ajustez la valeurread_ahead_kbsi 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"Utilisez un chemin absolu vers
awksur votre système dans l'attributPROGRAM=.Rechargez
udev:sudo udevadm control --reload
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
rsizeet 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.