measurement-and-instrumentation
Analyser les performances du système de fichiers : métriques, calculs et améliorations
Table of Contents
L'analyse des performances du système de fichiers est un élément essentiel de la gestion moderne de l'infrastructure informatique qui influe directement sur la réactivité des applications, l'expérience utilisateur et l'efficacité globale du système. Que vous gériez des tableaux de stockage d'entreprise, des systèmes de fichiers basés sur le cloud ou des configurations de disques locaux, comprendre comment mesurer, interpréter et optimiser les performances du système de fichiers peut faire la différence entre une exploitation en bon état et des goulets d'étranglement coûteux.
Comprendre le rendement du système de fichiers : pourquoi cela compte
Dans le paysage informatique à forte intensité de données, les applications allant des bases de données et des environnements virtualisés aux charges de travail d'apprentissage automatique et aux systèmes de gestion du contenu imposent des exigences exigeantes sur l'infrastructure de stockage. Les performances médiocres des systèmes de fichiers peuvent s'accumuler à travers une pile technologique complète, provoquant des ralentissements d'application, une latence accrue pour les utilisateurs finaux et une réduction du débit pour les opérations commerciales critiques.
Les performances de stockage sont l'un des facteurs les plus importants dans la conception d'une infrastructure informatique moderne, mais elles sont aussi l'un des plus mal comprises. Lorsque les organisations évaluent les systèmes de stockage, elles se concentrent souvent sur des paramètres tels que IOPS, le débit ou la latence sans comprendre pleinement comment ces mesures se rapportent aux charges de travail réelles.
L'analyse comparative est essentielle pour évaluer les performances, mais est particulièrement difficile pour les systèmes de fichiers et de stockage. Les interactions complexes entre les dispositifs d'E/S, les caches, les démons du noyau et d'autres composants OS entraînent un comportement assez difficile à analyser.
Métrique de performance fondamentale : la fondation de l'analyse
L'analyse efficace des performances du système de fichiers repose sur la compréhension de plusieurs paramètres clés qui révèlent chacun différents aspects du comportement de stockage. Ces paramètres travaillent ensemble pour fournir une image complète de la façon dont un système de stockage fonctionne dans différentes conditions.
IOPS (Opérations d'entrée/sortie par seconde)
IOPS représente le nombre d'opérations de lecture et d'écriture qu'un dispositif ou système de stockage peut effectuer en une seconde. Parce qu'il reflète le nombre d'opérations qui peuvent être effectuées par seconde, IOPS est une mesure importante pour déterminer la réactivité et l'efficacité des solutions de stockage, en particulier dans les environnements à haute performance ou sensibles aux latences.
L'IOPS est un indicateur de performance critique de lecture-écriture, en particulier lorsque de nombreuses petites requêtes aléatoires de données sont fréquentes. Ceci est typique dans les opérations de base de données, les environnements virtualisés et les serveurs Web. Par exemple, une base de données traitant des milliers de requêtes transactionnelles par seconde nécessite un IOPS élevé pour maintenir des temps de réponse acceptables, alors qu'une application de streaming vidéo pourrait prioriser le débit sur les numéros bruts de l'IOPS.
Les valeurs de l'IOPS peuvent varier considérablement en fonction de la technologie de stockage, de la capacité du disque, de la vitesse du disque, de la profondeur de la file d'attente, de la taille des blocs et des caractéristiques de la charge de travail.
Les valeurs IOPS des SSD peuvent varier de dizaines de milliers à des centaines de milliers, alors que les valeurs IOPS pour les HDD varient de quelques centaines à quelques milliers. Cette différence spectaculaire explique pourquoi le stockage en état solide est devenu le choix préféré pour les applications critiques en matière de performance, malgré son coût par gigaoctet plus élevé que les disques à rotation traditionnels.
Débit et largeur de bande
Le débit mesure la quantité de données qu'un système de stockage peut fournir sur une période donnée. Il est habituellement mesuré en mégaoctets par seconde (MB/s) ou gigaoctets par seconde (GB/s). Bien que l'IOPS compte les opérations individuelles, le débit mesure le volume réel de données transférées, ce qui en fait la mesure la plus pertinente pour les charges de travail impliquant des transferts de données séquentielles importants.
Le débit est généralement la meilleure mesure de stockage pour mesurer les données qui doivent être diffusées rapidement, comme les images et les fichiers vidéo. Les applications comme l'encodage des médias, les sauvegardes de fichiers importants, les pipelines d'analyse de données et les charges de travail de calcul scientifique qui traitent des ensembles de données massives bénéficient le plus d'un débit élevé plutôt que d'un haut débit IOPS.
Si vous multipliez la valeur de l'IOPS avec la taille (moyenne) de la demande d'IO/O, vous obtenez la bande passante ou le débit. Pour vous donner un exemple : si nous émettons une charge de travail de 1000 IOPS avec une taille de demande de 4 Kilooctets, nous obtiendrons un débit de 1000 x 4 KB = 4000 KB. Ceci est d'environ ~4 Megaoctets par seconde. Cette relation mathématique entre l'IOPS, la taille du bloc et le débit est fondamentale pour comprendre les caractéristiques de performance de stockage.
Pour résumer la différence entre le débit et le débit d'écriture, l'IOPS est un compte des opérations de lecture/écriture par seconde, mais le débit est la mesure réelle des bits de lecture/écriture par seconde qui sont transférés sur un réseau. Les deux mesures sont nécessaires pour caractériser pleinement les performances de stockage, car ni l'un ni l'autre ne raconte l'histoire complète.
Latence : le temps de réponse critique
Latence est le temps nécessaire pour que la demande d'E/S soit remplie. Nous commençons notre mesure à partir du moment où la demande est envoyée à la couche de stockage et arrêtons la mesure lorsque nous obtenons les données demandées, ou obtenons la confirmation que les données sont stockées sur disque. Latence est généralement mesurée en millisecondes (ms) pour le stockage traditionnel ou en microsecondes (μs) pour les dispositifs à l'état solide haute performance.
La latence est la mesure la plus importante sur laquelle se concentrer en ce qui concerne les performances de stockage, dans la plupart des cas. C'est parce que la latence affecte directement l'expérience utilisateur et la réactivité de l'application. Même si un système de stockage peut atteindre des nombres élevés de IOPS ou de débit, une latence excessive fera que les applications se sentiront lamentables et insensibles.
La mesure IOPS est sans signification sans une déclaration sur la latence. Vous devez comprendre combien de temps chaque opération d'E/S prendra parce que la latence dicte la réactivité des opérations d'E/S individuelles. Un système de stockage publicitaire de 10 000 IOPS peut sembler impressionnant, mais si ces opérations se terminent avec latence de 50ms, le système fonctionnera mal pour les applications sensibles à la latence comme les bases de données de traitement de transactions en ligne.
Les plates-formes de négociation financière, les systèmes de paiement électronique et les applications d'analyse en temps réel dépendent tous de la faible latence constante pour fonctionner correctement. Même de brèves pics de latence peuvent causer des problèmes importants dans ces environnements.
L'interaction des mesures de performance
Les professionnels de l'informatique devraient évaluer la latence en plus de l'IOPS et du débit pour une représentation plus précise de ce qui se passe dans votre infrastructure de stockage. Ces trois paramètres sont interconnectés, et les changements dans l'un affectent souvent les autres. Par exemple, à mesure que l'IOPS augmente, la latence peut augmenter en raison des effets de la queue, ou le débit pourrait plateau en raison des limitations de bande passante d'interface.
Cependant, combiner et évaluer les trois mesures peut fournir une meilleure mesure des performances, surtout si d'autres facteurs sont également pris en compte, comme la profondeur de la file d'attente, la taille des blocs de données ou la performance de la charge de travail. Cette approche holistique de la mesure des performances vous permet de comprendre non seulement les capacités de pointe, mais aussi la façon dont le système se comporte dans des conditions d'exploitation réalistes.
Selon l'application, il peut être nécessaire de trouver le bon équilibre entre le SIO, la latence et l'échelle de débit. Par exemple, les transferts de grande taille de fichiers pourraient bénéficier davantage d'un débit élevé, alors que les opérations de base de données privilégient souvent les faibles latences et les SIO élevés.
Calculs et formules essentiels de performance
Au-delà de la simple collecte de mesures de performance brutes, comprendre comment calculer et interpréter les valeurs dérivées fournit des informations plus approfondies sur le comportement et l'efficacité du système de fichiers.
Calcul de la latence moyenne
La latence moyenne est l'un des calculs les plus simples mais les plus instructifs de l'analyse de performance. Pour calculer la latence moyenne, additionnez les temps de réponse de toutes les opérations individuelles d'E/S pendant une période de mesure et divisez par le nombre total d'opérations. Par exemple, si vous mesurez 1 000 opérations lues avec un temps de réponse combiné de 15 000 millisecondes, la latence moyenne est de 15ms par opération.
Un système avec une latence moyenne de 10ms peut avoir la plupart des opérations se terminant en 5ms avec des pics occasionnels à 100ms, ou il pourrait avoir une distribution plus cohérente autour de 10ms. Pour cette raison, les analystes de performance examinent souvent les latences percentiles (comme le 95e ou le 99e percentile) pour comprendre le comportement le plus mauvais qui affecte l'expérience utilisateur.
Analyse du rapport lecture/écriture
Le rapport lecture/écriture caractérise l'équilibre des opérations de lecture/écriture dans une charge de travail. Ce rapport a une incidence significative sur la performance, car de nombreux systèmes de stockage présentent des caractéristiques de performance asymétriques, ils peuvent être plus rapides à lire qu'à écrire, ou vice versa.
Par exemple, un serveur Web servant principalement de contenu statique peut avoir un rapport lecture/écriture de 95:5, tandis qu'une base de données traitant de mises à jour fréquentes peut afficher un rapport 60:40. Comprendre le rapport lecture/écriture de votre charge de travail aide à sélectionner les technologies de stockage appropriées et configurer les stratégies de cache.
Calcul du taux de cache
Calculez-le en divisant le nombre de demandes servies par le nombre total de demandes, puis en multipliant par 100 pour exprimer en pourcentage. Un taux de succès de cache de 90 % signifie que 90 % des demandes de données ont été satisfaites du cache sans avoir accès au périphérique de stockage sous-jacent.
Les taux élevés de frappe du cache améliorent considérablement les performances de stockage perçues parce que l'accès aux données du cache basé sur la RAM est plus rapide que la lecture du disque. Par exemple, un clic du cache peut se terminer en microsecondes alors qu'un manque de cache nécessitant un accès au disque prend des millisecondes – une différence de 1000x ou plus.
La profondeur de la file d'attente et son impact
La profondeur de la file d'attente correspond au nombre d'opérations d'E/S en attente d'être traitées par le système de stockage. Bien que ce n'est pas un calcul strict, la profondeur de la file d'attente est essentielle pour interpréter les paramètres de performance. La plupart de ces chiffres IOPS de 80K-100K élevés sont obtenus par comparaison avec des profondeurs de file d'attente très élevées (16-32).
Cependant, les profondeurs de file d'attente élevées dans les environnements de production indiquent souvent des problèmes de performance plutôt que des capacités. Si votre stockage affiche régulièrement des profondeurs de file d'attente supérieures à 4-8, il suggère que le système ne peut pas suivre les demandes d'E/S entrantes, ce qui entraîne une latence accrue.
Calcul du débit efficace
Bien que le débit théorique puisse être calculé simplement comme la taille des blocs IOPS ×, le débit effectif est généralement plus faible en raison de ces frais généraux. Mesurer le débit efficace en échéanciernant les transferts de fichiers réels et en divisant le total des données transférées par le temps écoulé.
Par exemple, le transfert d'un fichier de 10 Go en 100 secondes donne un débit efficace de 100 Mo/s. La comparaison d'un débit efficace avec des maximaux théoriques permet d'identifier les performances de consommation en matière de frais généraux.
Outils et méthodes d'analyse comparative du système de fichiers
Cependant, aucun point de repère ne mesure adéquatement le rendement du système de fichiers. Certaines des valeurs de repère et techniques d'étalonnage couramment acceptées et largement utilisées peuvent facilement dissimuler les frais généraux, trop insister injustement sur les frais généraux ou mettre en valeur ou déphaser de façon générale de nombreuses propriétés du système de fichiers.
Outils d'étalonnage standard pour l'industrie
Vous devriez utiliser Fio pour tester les performances d'E/S. Fio (Flexible I/S Tester) est devenu la norme de facto pour l'étalonnage de stockage en raison de sa flexibilité, de son ensemble de fonctionnalités complet et de sa capacité à simuler divers modèles de charge de travail. Fio peut tester différents moteurs d'E/S, tailles de blocs, rapports lecture/écriture, profondeurs de file d'attente et modèles d'accès, ce qui le rend adapté pour caractériser le comportement de stockage dans des conditions qui correspondent étroitement aux applications réelles.
Vous pouvez également utiliser des outils comme Vdbench et FIO pour la caractérisation des performances. Vdbench, initialement développé par Sun Microsystems, excelle dans la production de charges de travail complexes et multi-threaded et est particulièrement populaire dans les tests de stockage d'entreprise. Il peut simuler plusieurs hôtes accès au stockage partagé, ce qui le rend utile pour tester les environnements SAN et NAS.
IOzone est un outil de référence du système de fichiers. L'indice de référence génère et mesure une variété d'opérations de fichiers. L'indice de référence teste les performances d'E/S pour les opérations suivantes : lecture, écriture, re-lecture, re-écriture, lecture en arrière, lecture striée, fread, fwrite, lecture aléatoire, préad , mmap, aio read, aio write. La suite de test complète d'IOzone le rend particulièrement utile pour comparer différents systèmes de fichiers ou configurations de stockage sur une large gamme de types d'opérations.
Système de fichiers spécialisés
Blogbench est un système de référence portable qui tente de reproduire la charge d'un serveur de fichiers occupé dans le monde réel. Il met en évidence le système de fichiers avec plusieurs threads effectuant des lectures, des écritures et des réécritures aléatoires afin d'obtenir une idée réaliste de l'évolutivité et de la proximité qu'un système peut gérer.
Le point de repère fs mark se concentre sur la création de fichiers et la performance de suppression, qui est critique pour les applications qui créent fréquemment des fichiers temporaires ou gèrent un grand nombre de petits fichiers. Il mesure le taux de création de fichiers et la latence des différentes opérations du système de fichiers, fournissant des informations sur la performance des métadonnées que d'autres points de repère pourraient ignorer.
Méthodologie de référence Pratiques exemplaires
Nous recommandons donc d'utiliser au moins un macrobenchmark ou trace pour montrer une vue de haut niveau de la performance, ainsi que plusieurs microbenchmarks pour mettre en évidence des vues plus ciblées. Cette approche multicouche vous permet de comprendre à la fois le comportement global du système et les caractéristiques de performance spécifiques.
Les micro-benchmarks sont utiles pour isoler les performances de certaines parties du système, car les repères ne présentent pas les complications supplémentaires qui découlent de plusieurs opérations à la fois. Bien que les micro-benchmarks fournissent les informations les plus fines, ils ne fournissent généralement pas suffisamment d'informations sur les performances globales d'un système.
Quelle que soit la méthode utilisée, il est toujours important de comprendre d'autres goulets d'étranglement potentiels dans l'environnement et de s'assurer qu'ils n'affectent pas les résultats. Par exemple, lorsque vous mesurez les performances d'écriture, vous devez vous assurer que le disque source peut lire les données aussi rapidement que les performances d'écriture attendues.
Il est important de faire fonctionner plusieurs repères pour assurer l'exactitude et présenter la gamme de résultats possibles. Le fait de signaler le nombre de tests permet au lecteur de déterminer la rigueur de l'analyse comparative.
Choisir le bon point de repère pour votre charge de travail
Le meilleur point de repère à utiliser est celui qui correspond le plus étroitement à l'application que vous attendez de fonctionner sur l'infrastructure que vous testez. Les points de repère génériques fournissent des données comparatives utiles, mais les tests spécifiques à l'application donnent les informations de performance les plus pertinentes. Si possible, capturez des traces de votre charge de travail de production réelle et rejouez-les dans des environnements de test pour voir exactement comment les différentes configurations de stockage fonctionneront.
Cette méthode est toujours la meilleure car elle mesure les performances pour les charges de travail réelles que les utilisateurs utilisent en plus du service de stockage. Cette méthode n'est souvent pas pratique parce qu'elle nécessite une réplique de l'environnement de production et les utilisateurs pour générer une charge appropriée sur le système. Lorsque les tests d'application complète ne sont pas possibles, utiliser des repères synthétiques qui rapprochent étroitement vos caractéristiques de charge de travail en termes de taille de bloc, de rapport lecture/écriture, d'accès séquentiel par rapport à un accès aléatoire, et de niveaux de convergence.
Identification du goulot d'étranglement et diagnostic des performances
L'identification des goulets d'étranglement de performance nécessite une analyse systématique des paramètres, une compréhension de l'architecture du système et souvent des travaux de détectives pour retracer les problèmes à leurs causes profondes.
Limites des supports de stockage
Les disques durs traditionnels (DDH) reposent sur des plateaux tournants et des têtes mobiles de lecture/écriture, ce qui limite intrinsèquement leur IOPS en raison de la latence mécanique. D'autre part, les disques durs solides (DSD) utilisent la mémoire flash sans pièces mobiles, ce qui leur permet d'obtenir des IOPS considérablement plus élevés, souvent par ordre de grandeur.
Si vous observez une latence élevée, un faible IOPS ou un mauvais débit malgré des configurations optimisées, les périphériques de stockage peuvent tout simplement manquer des capacités de performance requises par votre charge de travail. Surveillez les mesures de niveau de l'appareil comme l'utilisation du disque, le temps de service moyen et la longueur de la file d'attente pour identifier quand le matériel de stockage est saturé.
Problèmes de système de fichiers et de configuration
Le choix et la configuration du système de fichiers ont une incidence significative sur les performances. Différents systèmes de fichiers optimisent pour différents cas d'utilisation. Certains priorisent la cohérence et l'intégrité des données, tandis que d'autres se concentrent sur les performances brutes.
Par exemple, un système de fichiers configuré avec des blocs de petite taille fonctionnera mal pour les grandes charges de travail d'E/S séquentiel en raison de l'augmentation des frais généraux, tandis que les blocs de grande taille gaspillent l'espace et réduisent les performances pour les charges de travail impliquant de nombreux petits fichiers.
Réseau et protocole - tête de ligne
Cependant, même certains disques locaux peuvent avoir des entrées/sorties lentes. Les informations sur cette page peuvent être utilisées pour l'un ou l'autre des scénarios. Le stockage connecté au réseau introduit des latences supplémentaires et des goulets d'étranglement potentiels par rapport au stockage local. La bande passante réseau, latence, perte de paquets et les frais de protocole affectent tous les performances.
Lors du diagnostic des problèmes de performance du stockage réseau, examinez l'utilisation du réseau, la latence entre le client et le serveur de stockage, et les mesures spécifiques au protocole. Des outils comme iperf peuvent tester la bande passante du réseau brut, tandis que les analyseurs de protocole peuvent révéler des inefficacités dans la façon dont les applications interagissent avec les systèmes de fichiers réseau.
Modèles d'application E/S
Les applications qui effectuent de nombreuses petites opérations d'E/S synchrones au lieu de faire le lotage des requêtes, ou qui ne parviennent pas à aligner les E/S sur les limites des blocs du système de fichiers, ne peuvent atteindre qu'une fraction des performances de stockage disponibles.
L'analyse des modèles d'E/S d'applications à l'aide d'outils comme les profileurs strace, blktrace ou spécifiques à l'application peut révéler des possibilités d'optimisation. Les problèmes courants incluent des appels à trop fsync() forçant des écritures synchrones, la lecture de fichiers entiers lorsque seulement des portions sont nécessaires, ou l'ouverture et la fermeture de fichiers à plusieurs reprises au lieu de les garder ouverts.
Stratégies globales d'amélioration du rendement
L'amélioration des performances du système de fichiers nécessite une approche multifaces qui s'attaque au matériel, à la configuration des logiciels et à l'optimisation de la charge de travail.
Améliorations et optimisation du matériel
Le remplacement des DDH traditionnels par des SSD peut augmenter le nombre de IOPS de 10-100x et réduire la latence de millisecondes à microsecondes. Pour des performances encore plus élevées, les SSD NVMe connectés via PCIe offrent une latence plus faible et un débit plus élevé que les SSD SATA en éliminant les frais de protocole de stockage.
Les SSD de qualité consommation peuvent offrir des vitesses de lecture/écriture impressionnantes, mais de mauvaises performances d'E/S aléatoires ou de latence incohérente sous charge soutenue. Les SSD d'entreprise offrent généralement des performances plus cohérentes, des cotes d'endurance plus élevées et une meilleure qualité de service, ce qui les rend plus adaptés aux environnements de production malgré des coûts plus élevés.
Au-delà des performances individuelles, l'architecture de stockage est importante. Les configurations RAID peuvent améliorer les performances et la fiabilité, bien que différents niveaux RAID offrent différents compromis. Le striping RAID 0 maximise les performances mais n'offre aucune redondance, tandis que RAID 10 offre à la fois de bonnes performances et redondance au coût de 50% d'efficacité de stockage.
Sélection et configuration du système de fichiers
Choisir le système de fichiers approprié pour votre charge de travail et le configurer correctement peut donner des améliorations substantielles de performance sans modification matérielle. Les systèmes de fichiers modernes comme XFS, ext4, Btrfs et ZFS ont chacun des forces différentes et des cas d'utilisation optimaux. XFS excelle à la gestion de fichiers de grande taille et parallèle I/O, ext4 fournit de bonnes performances tout-terrain avec une stabilité mature, Btrfs offre des fonctionnalités avancées comme des instantanés et la compression, tandis que ZFS combine système de fichiers et gestion de volume avec des garanties d'intégrité des données solides.
Les paramètres de réglage du système de fichiers ont une incidence significative sur les performances.
- Taille du bloc: Les tailles de blocs plus grandes améliorent les performances d'E/S séquentielles, mais peuvent gaspiller de l'espace pour les petits fichiers.
- L'attribution des inodes:[ Pré-alterner suffisamment d'inodes empêche la dégradation des performances lors de la création de nombreux fichiers.
- Mode de consultation: Le journalage complet des données offre une sécurité maximale, mais réduit les performances. Le journalage des métadonnées offre un meilleur équilibre pour la plupart des charges de travail.
- Les options de montage: Les options comme noatime (ne pas mettre à jour les temps d'accès) réduisent les frais généraux d'écriture, tandis que le support de jet/TRIM aide à maintenir les performances SSD au fil du temps.
- Politiques d'allocation:[ L'allocation basée sur la portée réduit la fragmentation par rapport à l'allocation par blocs, améliorant le rendement des grands dossiers.
Mise en œuvre de stratégies efficaces de mise en cache
La mise en cache représente l'une des techniques d'optimisation des performances les plus rentables car elle permet de tirer parti de la mémoire rapide pour réduire l'accès au stockage lent.
Cache-page système d'exploitation:[ Le système d'exploitation cache automatiquement les données de fichiers fréquemment accessibles dans la mémoire vive. Assurez-vous que la mémoire est disponible pour le cache de page en évitant le surengagement de mémoire. Surveillez les taux de succès du cache pour vérifier que le cache est bien en service.
Cachage de niveau d'application:[ De nombreuses applications mettent en place leurs propres couches de cache. Les systèmes de base de données, les serveurs Web et les systèmes de livraison de contenu bénéficient tous de caches d'application correctement configurés.
Caches de contrôleur de stockage:[ Les contrôleurs RAID matériels et les tableaux de stockage d'entreprise incluent la mémoire cache qui peut améliorer considérablement les performances, en particulier pour les charges de travail lourdes en écriture. Les caches d'écriture rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-rétro-ré
Les niveaux de cache SSD: Les configurations de stockage hybrides utilisant les SSD comme niveau de cache pour les plus grands tableaux de DHD offrent un équilibre rentable entre les performances et la capacité. Des technologies comme bcache, dm-cache et des solutions de nivellement spécifiques aux fournisseurs favorisent automatiquement les données fréquemment accessibles pour un stockage SSD rapide tout en conservant des données moins accessibles sur des DHD moins chers.
Optimisation de l'horaire des E/S
Le programmeur d'E/S du système d'exploitation détermine l'ordre dans lequel les demandes d'E/S sont soumises aux périphériques de stockage. Différents planificateurs optimisent pour différents scénarios, et la sélection du programmeur approprié pour votre type de stockage et la charge de travail améliore les performances.
Pour les DDH traditionnels, les planificateurs comme CFQ (Completely Fair Queuing) ou le délai qui demande de réorganiser pour minimiser le mouvement de la tête de disque améliorent le débit et réduisent la latence. Cependant, ces planificateurs ajoutent des frais généraux inutiles pour les SSD, qui n'ont pas de temps de recherche mécanique.
Les noyaux Linux modernes comprennent le BFQ (Budget Fair Queueing) et les planificateurs mq-deadline conçus pour les HDD et les SSD, offrant de bonnes performances pour différents types de stockage. Le planificateur Kyber cible spécifiquement les appareils NVMe à faible latence. Expérimentez avec différents planificateurs pour votre matériel spécifique et votre charge de travail afin de trouver la configuration optimale.
Défragmentation et gestion de l'espace
La fragmentation du système de fichiers se produit lorsque les fichiers sont stockés dans des blocs non contigus dispersés dans le périphérique de stockage. La fragmentation réduit les performances, en particulier pour les opérations de lecture séquentielle et sur les DDH où elle augmente la recherche de temps.
Pour les DDH traditionnels, la défragmentation régulière peut restaurer les performances en réorganisant les fichiers en blocs contigus. La plupart des systèmes de fichiers modernes incluent des outils de défragmentation en ligne qui peuvent fonctionner pendant que le système est en service. Cependant, la défragmentation est intensive et devrait être programmée pendant les périodes de faible utilisation pour éviter d'avoir des répercussions sur la charge de travail de production.
Pour les SSD, la défragmentation traditionnelle est inutile et potentiellement nuisible car elle provoque des opérations supplémentaires d'écriture qui consomment l'endurance limitée du lecteur en écriture. Au lieu de cela, assurez-vous que le support TRIM/discard est activé, ce qui permet au système de fichiers d'informer le SSD sur les blocs supprimés, permettant à la collecte des ordures du lecteur de maintenir les performances.
Il est essentiel de conserver un espace libre adéquat pour la performance. Les systèmes de fichiers subissent généralement une dégradation de la performance lorsque l'utilisation dépasse 80-90% parce que l'allocator a moins d'options pour placer de nouvelles données de façon contiguë.
Optimisation de la charge de travail et réglage de l'application
Souvent, les améliorations les plus importantes des performances proviennent de l'optimisation de la façon dont les applications interagissent avec le stockage plutôt que de la mise à niveau du matériel.
- Opérations d'entrée et de sortie en série :[ Combiner plusieurs petites demandes d'entrée et d'entrée en vigueur en opérations plus importantes pour réduire les frais généraux et améliorer le débit.
- Utiliser des E/S asynchrones: Les E/S asynchrones permettent aux applications de poursuivre le traitement pendant que les opérations d'E/S se terminent en arrière-plan, améliorant le parallélisme et l'utilisation des ressources.
- Alignez les E/S avec les limites des blocs:[ Assurez-vous que les opérations de lecture et d'écriture s'alignent avec les limites des blocs du système de fichiers pour éviter les cycles de lecture-modification-écriture qui réduisent les performances.
- Minimiser les appels fsync() : Des opérations excessives d'écriture synchrone réduisent les performances. Utilisez fsync() seulement lorsque la durabilité des données est critique, et envisagez de loter les écritures avant de synchroniser.
- L'application read-ahead et write-behind: Préfetcher les données avant qu'elles ne soient nécessaires et le tamponnage des écritures peut masquer la latence de stockage des applications.
- Utilisez les E/S mactées de façon appropriée : Les fichiers macéré de mémoire peuvent simplifier le code et améliorer les performances pour certains modèles d'accès, mais ne sont peut-être pas optimaux pour tous les scénarios.
Optimisation du stockage réseau
Pour le stockage connecté au réseau, l'optimisation va au-delà du système de stockage lui-même pour inclure l'infrastructure réseau et la configuration du protocole.Assurer une bande passante adéquate entre les clients et les serveurs de stockage – un débit de connexion réseau 1Gbps limite le débit à environ 125 Mo/s, indépendamment des performances de stockage.
Optimiser les protocoles du système de fichiers réseau en harmonisant les paramètres comme les tailles de tampons en lecture et en écriture, le nombre d'opérations simultanées et le comportement de cache. Pour les NFS, les paramètres comme les tailles de transfert de contrôle rsize et wsize, tandis que les options comme async versus sync affectent les performances et les compromis de sécurité.
Envisager d'utiliser des protocoles RDMA (Accès direct à la mémoire à distance) comme NFS sur RDMA ou iSER (Extensions iSCSI pour RDMA) lorsque disponibles. RDMA contourne la pile réseau du système d'exploitation, réduisant les frais généraux et la latence du processeur tout en augmentant le débit pour le stockage réseau.
Surveillance et gestion continues du rendement
L'optimisation des performances n'est pas une activité ponctuelle mais un processus continu. La mise en œuvre d'une surveillance exhaustive vous assure de détecter la dégradation des performances avant qu'elle n'ait des répercussions sur les utilisateurs et fournit les données nécessaires pour la planification des capacités et les décisions d'optimisation.
Mesures essentielles de surveillance
Établir des mesures de la performance de base pendant le fonctionnement normal afin de pouvoir identifier les anomalies et la dégradation.
- IOPS: Suivre à la fois la lecture et l'écriture de l'IPOS séparément, avec les valeurs de pic et de moyenne.
- Typtomisation:[ Surveiller les taux de transfert de données pour identifier la saturation de la bande passante.
- Latence:[ Moyenne de la voie, 95e percentile et 99e percentile latence pour comprendre les performances typiques et les pires cas.
- Profondeur de la file d'attente :[ Surveiller la longueur de la file d'attente des E/S pour identifier quand le stockage ne peut pas suivre la demande.
- Utilisation:[ Track de stockage pourcentage occupé pour identifier la saturation.
- Taux de frappe de cache: Surveiller l'efficacité de la mise en cache à différentes couches.
- Taux d'erreur:[ Track I/O erreurs, timeouts et retries qui peuvent indiquer des problèmes matériels.
- Mesures de capacité:[ Surveiller l'espace libre, l'utilisation des inodes et les tendances de croissance pour la planification des capacités.
Outils et plateformes de surveillance
De nombreux outils existent pour surveiller le système de fichiers et les performances de stockage. Les outils intégrés du système d'exploitation comme l'iostat, vmstat et sar fournissent des paramètres de performance de base et sont disponibles sur la plupart des systèmes. Ces outils en ligne de commande sont utiles pour le dépannage, mais ne disposent pas des données historiques et des capacités de visualisation nécessaires pour l'analyse des tendances.
Des plateformes de surveillance complètes comme Prométhée avec Grafana, Nagios, Zabbix ou des solutions commerciales offrent une collecte métrique centralisée, un stockage historique des données, des tableaux de bord de visualisation et des capacités d'alerte. Ces plateformes vous permettent de corréler les performances de stockage avec d'autres mesures du système, d'identifier les tendances dans le temps et de recevoir des notifications lorsque les performances se dégradent au-delà des seuils acceptables.
Pour les environnements cloud, les services de surveillance des fournisseurs de cloud tels que AWS CloudWatch, Azure Monitor ou Google Cloud Monitoring fournissent des mesures spécifiques au stockage et une intégration avec d'autres services cloud. Ces plateformes comprennent les caractéristiques spécifiques des services de stockage cloud et fournissent des mesures appropriées et des alertes.
Établissement de points de référence et d'ALS pour le rendement
Établir des niveaux de référence pour le rendement pendant l'exploitation normale afin de fournir des points de référence pour la comparaison. Les niveaux de référence devraient saisir le rendement typique pendant différentes périodes : heures d'ouverture par rapport à la nuitée, jours de semaine par rapport aux fins de semaine, périodes de traitement de fin de mois et autres modèles cycliques.
Définir des ententes sur les niveaux de service (APS) ou des objectifs de niveau de service (ALS) qui précisent des seuils de rendement acceptables. Par exemple, vous pourriez définir que 95 % des opérations lues doivent être effectuées dans les 10ms ou que le débit moyen doit dépasser 500MB/s pendant les heures d'ouverture.
Planification des capacités et analyse des tendances
Analysez les taux de croissance de l'utilisation des systèmes de stockage, du SIO et du débit pour prédire quand l'infrastructure actuelle deviendra inadéquate. La planification proactive des capacités vous permet de mettre à niveau les systèmes avant que des problèmes de performance ne se produisent plutôt que de réagir aux crises.
Considérez la capacité et la performance lors de la planification des mises à niveau. Un système de stockage peut avoir suffisamment d'espace libre mais pas assez de SIO ou de débit pour augmenter la charge de travail. Inversement, la performance peut être adéquate mais la capacité approche des limites.
Sujets avancés dans la performance du système de fichiers
Considérations de rendement pour différents types de charge de travail
Les applications différentes imposent des exigences très différentes sur l'infrastructure de stockage. Les bases de données transactionnelles, les plateformes d'analyse, les environnements virtualisés et les charges de travail d'apprentissage automatique exigent chacun différents types de performance.
Les applications transactionnelles telles que les bases de données nécessitent généralement peu de latence et des IOPS élevés. Ces systèmes traitent de nombreuses petites opérations de lecture et d'écriture et dépendent des temps de réponse rapides pour maintenir les performances de l'application.
Les environnements virtualisés présentent des défis uniques car plusieurs machines virtuelles ayant des caractéristiques différentes partagent le même stockage sous-jacent. Cela crée des charges de travail mixtes qui combinent des E/S séquentielles et aléatoires, des lectures et des écritures, et des tailles de blocs variables.
Considérations relatives aux performances du stockage dans le cloud
Les services de stockage Cloud présentent différentes caractéristiques de performance et stratégies d'optimisation par rapport au stockage sur site traditionnel. Les fournisseurs Cloud offrent généralement plusieurs niveaux de stockage avec des profils de performance et de coûts différents.
Par exemple, AWS propose des types de volume EBS allant du SSD général (gp3) au SSD IOPS fourni (io2) au HDD optimisé par débit (st1). Chaque type a différentes caractéristiques de performance, prix, et cas d'utilisation optimal.
Les performances de stockage en nuage dépendent souvent de facteurs qui dépassent le service de stockage lui-même, y compris le type d'instance, la bande passante du réseau et l'emplacement régional. Assurez-vous que les instances de calcul ont une bande passante de réseau adéquate pour utiliser pleinement les performances de stockage – un type d'instance de petite taille peut limiter le débit, indépendamment des capacités de stockage.
Nouvelles technologies de stockage
Les nouvelles technologies de stockage continuent de repousser les limites de performance. NVMe sur Fabrics (NVMe-oF) étend les avantages à faible latence de NVMe au stockage connecté au réseau, permettant le stockage partagé avec des performances proches des SSD NVMe locaux. Cette technologie est particulièrement pertinente pour les ordinateurs haute performance, les bases de données et d'autres applications sensibles à la latence qui ont précédemment exigé le stockage local.
Les technologies de mémoire persistantes comme Intel Optane brouillent la ligne entre mémoire et stockage, offrant un stockage par octet-adressable avec des latences mesurées en nanosecondes plutôt que microsecondes ou millisecondes. Bien que toujours coûteux et limité en capacité, la mémoire persistante permet de nouvelles architectures d'application qui éliminent les goulets d'étranglement traditionnels de stockage E/O pour des cas d'utilisation spécifiques.
Les dispositifs de stockage informatisés qui incluent des capacités de traitement aux côtés des supports de stockage permettent de décharger certaines opérations sur le périphérique de stockage lui-même, de réduire le mouvement des données et d'améliorer les performances pour des charges de travail spécifiques telles que les requêtes de base de données, la compression ou le chiffrement.
Mise en œuvre pratique: une approche étape par étape
La mise en oeuvre d'un programme complet d'optimisation des performances du système de fichiers nécessite une méthodologie systématique.
Étape 1 : Établir le niveau de référence actuel
Commencez par mesurer en profondeur les performances actuelles à l'aide d'outils d'étalonnage appropriés et de systèmes de surveillance. Recueillir des données sur des périodes de temps suffisantes pour saisir les variations normales et identifier les modèles.
Étape 2 : Déterminer les exigences de rendement
Définir des exigences de rendement spécifiques en fonction des besoins de l'application et des attentes des utilisateurs. Quantifier les exigences en termes de SIO, de débit, de percentiles de latence et d'autres paramètres pertinents.
Étape 3: Analyser les goulots d'étranglement
Comparer les performances actuelles avec les exigences pour identifier les lacunes. Utiliser un suivi et un profil détaillés pour identifier les goulets d'étranglement spécifiques - que ce soit dans le matériel de stockage, la configuration du système de fichiers, l'infrastructure du réseau ou les modèles d'E/S d'application.
Étape 4 : Mettre en oeuvre des optimisations
Remédier systématiquement aux goulets d'étranglement identifiés, en commençant par les optimisations qui assurent la meilleure amélioration de la performance pour le moins cher et la complexité. Mettre en œuvre des changements incrémentiels plutôt que d'apporter plusieurs changements simultanés, ce qui rend difficile de déterminer quelles optimisations sont efficaces.
Étape 5 : Valider et surveiller
Après avoir mis en oeuvre des optimisations, valider que les améliorations de performance répondent aux exigences par des tests complets. Établir une surveillance continue pour s'assurer que la performance demeure acceptable au fil du temps et détecter toute régression.
Étape 6: Itréer et affiner
L'optimisation des performances est un processus itératif. À mesure que les charges de travail évoluent, de nouveaux goulets d'étranglement peuvent apparaître, ou des optimisations déjà efficaces peuvent devenir moins pertinentes.
Conclusion : Construire une culture axée sur le rendement
La gestion efficace du rendement des systèmes de fichiers exige plus que des connaissances et des outils techniques, et exige une culture qui valorise le rendement comme un aspect critique de la conception et du fonctionnement des systèmes.
La complexité des systèmes de stockage modernes signifie qu'aucune technique de mesure, d'outil ou d'optimisation ne fournit une solution complète. Le succès exige de comprendre les relations entre le SIO, le débit et la latence, de choisir les méthodes d'étalonnage appropriées, d'identifier avec précision les goulots d'étranglement et de mettre en œuvre des optimisations ciblées qui s'attaquent aux causes profondes plutôt qu'aux symptômes.
À mesure que les technologies de stockage évoluent, avec des SSD plus rapides, des mémoires persistantes émergentes, des systèmes de stockage informatique et des architectures natives du cloud, les fondamentaux de l'analyse de performance demeurent constants. Mesurez soigneusement, comprenez vos exigences de charge de travail, identifiez systématiquement les goulets d'étranglement et optimisez en fonction des données plutôt que des hypothèses.
For additional resources on storage performance optimization, consider exploring the Storage Networking Industry Association (SNIA) for industry standards and best practices, the Linux kernel documentation for detailed information on I/O statistics and tuning, Fio documentation for comprehensive benchmarking guidance, and vendor-specific resources from your storage hardware and software providers. Continuous learning and staying current with evolving technologies and techniques w