Partage via


Bonnes pratiques d’E/S directes Linux pour Azure NetApp Files

Cet article aide à comprendre les bonnes pratiques d’E/S pour Azure NetApp Files.

E/S directes

Les E/S directes sont le paramètre le plus courant utilisé dans le benchmarking des performances de stockage. Il est pris en charge par FIO et Vdbench. DISKSPD offre la prise en charge de la construction similaire des E/S mappées en mémoire. Avec les E/S directes, le cache du système de fichiers est contourné, les opérations de copie d’accès direct à la mémoire sont évitées et les tests de stockage sont effectués rapidement et simplement.

L’utilisation du paramètre d’E/S directes facilite les tests de stockage. Aucune donnée n’est lue à partir du cache du système de fichiers sur le client. En tant que tel, le test insiste véritablement sur le protocole et le service de stockage lui-même, plutôt que sur les vitesses d’accès à la mémoire. Sans les copies de mémoire DMA, les opérations de lecture et d'écriture sont efficaces du point de vue du traitement.

Prenez la commande dd Linux comme exemple de charge de travail. Sans l'indicateur odirect facultatif, toutes les E/S générées par dd sont servies à partir du cache de tampon Linux. Les lectures avec les blocs déjà en mémoire ne sont pas récupérées à partir du stockage. Les lectures qui aboutissent à un échec de la mise en cache des tampons sont lues à partir du stockage à l’aide de la lecture continue NFS avec des résultats variables, en fonction de facteurs tels que les rsize réglables de montage et de lecture anticipée du client. Lorsque les écritures sont envoyées via le cache des tampons, elles utilisent un mécanisme d’écriture différée, qui n’est pas réglé et utilise une quantité significative de parallélisme pour envoyer les données au périphérique de stockage. Vous pouvez essayer d’exécuter deux flux indépendants d’E/S, un dd pour les lectures et undd pour les écritures. En fait, le système d’exploitation, non réglé, favorise les écritures par rapport aux lectures et utilise plus de parallélisme.

Hormis la base de données, peu d’applications utilisent des E/S directes. Au lieu de cela, ils exploitent les avantages d'un cache mémoire volumineux pour les lectures répétées et d'un cache d'écriture pour les écritures asynchrones. En bref, l’utilisation d’E/S directes transforme le test en un micro-benchmark si l’application en cours de synthèse utilise le cache du système de fichiers.

Voici quelques bases de données qui prennent en charge les E/S directes :

  • Oracle
  • SAP HANA
  • MySQL (moteur de stockage InnoDB)
  • RocksDB
  • PostgreSQL
  • Teradata

Bonnes pratiques

Le test avec directio est un excellent moyen de comprendre les limites du service de stockage et du client. Pour mieux comprendre comment l'application se comporte (si l'application n'utilise pas directio), vous devez également exécuter des tests via le cache du système de fichiers.

Étapes suivantes