Si vous écrivez ou lisez des fichiers régulièrement, la vitesse de votre disque peut affecter les performances de votre serveur. Nous vous montrerons comment mesurer la vitesse de votre serveur et comprendre comment il se compare à la concurrence.
Comment mesurer les performances d'E/S?
Il existe de nombreuses façons différentes de lire et d'écrire des disques, il n’y a donc pas de numéro unique pour le “la vitesse” que vous pouvez mesurer.
Le moyen le plus simple de mesurer les performances est de mesurer le temps nécessaire pour lire des fichiers volumineux ou faire des copies de fichiers volumineux. Ceci mesure la vitesse de lecture et d'écriture séquentielle, ce qui est une bonne métrique à connaître, mais vous verrez rarement des vitesses aussi élevées en pratique, surtout dans un environnement serveur.
Une meilleure métrique est la vitesse d'accès aléatoire, qui mesure la vitesse à laquelle vous pouvez accéder aux fichiers stockés dans des blocs aléatoires, beaucoup plus imitant l'utilisation du monde réel.
Les SSD ont généralement des vitesses d'accès aléatoire rapides par rapport aux disques durs, ce qui les rend beaucoup plus adaptés à un usage général. Les disques durs ont toujours des vitesses de lecture et d'écriture séquentielles décentes, ce qui les rend bons pour l'archivage et la récupération des données.
Malgré cela, les performances du disque peuvent ne pas avoir beaucoup d'importance pour certaines charges de travail. De nombreuses applications cachent des objets (si vous avez assez de RAM), donc la prochaine fois que vous voudrez lire cet objet, sera lu de mémoire (lequel est plus vite). Malgré cela, pour les charges de travail intensives en écriture, le disque doit encore être entré.
La vitesse est souvent mesurée en Mo / s, mais certains fournisseurs peuvent mesurer sur IOPS (opérations de saisie / sortie par seconde). C'est simplement un plus grand nombre qui signifie la même chose.; peut savoir ce que MB IOPS / s avec cette formule:
IOPS = (Mo/s / Taille de bloc) * 1024
Malgré cela, certains fournisseurs peuvent ne pas faire un bon travail pour vous dire quelle référence ils utilisent pour mesurer les IOPS, donc c'est bien que tu le fasses toi-même.
Installer fio pour lire les tests / écriture aléatoire
Bien que Linux ait intégré dd
, qui peut être utilisé pour mesurer les performances d'écriture séquentielle, pas indicatif de la façon dont il se comportera sous les contraintes du monde réel. À sa place, vous voudrez tester votre vitesse de lecture et d'écriture aléatoire.
fio
est un utilitaire qui peut gérer cela. Installez-le depuis le gestionnaire de paquets de votre distribution:
sudo apt-get install fio
Plus tard, exécuter un test de base avec la commande suivante:
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=250M -- readwrite=randrw --rwmixread=80
Cela exécute des tests de lecture et d'écriture aléatoires en utilisant 250 Mo de données, dans un rapport de 80% des lectures aux 20% des actes. Les résultats seront affichés en termes d'IOPS et de MB / s:
Le test ci-dessus a été exécuté sur un AWS gp2
SSD, un SSD assez moyen, montrant une performance assez moyenne. Les performances d'écriture seront toujours inférieures avec n'importe quel type de E / S; de nombreux SSD et disques durs ont une mémoire cache intégrée à utiliser par le contrôleur de lecteur, ce qui rend beaucoup de lectures assez rapides. Malgré cela, chaque fois que j'écris, vous devez apporter des modifications physiques à l'unité, ce qui est plus lent.
L'exécution du test sur un disque dur montre des performances E médiocres / s mélangés aléatoires, qui est un obstacle commun avec les disques durs:
Malgré cela, les disques durs sont régulièrement utilisés pour de grandes lectures et écritures séquentielles, donc un test E / Random S ne correspond pas au cas d'utilisation ici. Si vous souhaitez modifier le type de test, vous pouvez passer un argument différent à --readwrite
. fio
prend en charge de nombreux tests différents:
- Lecture séquentielle:
seqread
- écriture séquentielle:
seqwrite
- Lecture aléatoire:
randread
- écriture aléatoire:
randwrite
- E/S mixtes aléatoires:
randrw
En même temps, vous pouvez redimensionner le bloc avec le --bs
argument. Nous l'avons mis à 4K, ce qui est assez standard pour les tests aléatoires, mais les lectures et écritures séquentielles peuvent afficher des performances meilleures ou pires avec des tailles de blocs plus grandes. Les tailles de 16 Ko un 32 Ko peut être plus proche de ce que vous trouverez sous charge réelle.
Test de performance de la mémoire
fio
ne peut pas tester la vitesse du bélier, donc si vous voulez comparer la RAM de votre serveur, doit installer sysbench
depuis le gestionnaire de paquets de votre distribution:
sudo apt-get install sysbench
Ce package peut comparer de nombreuses mesures de performance, mais nous nous concentrons uniquement sur le test de mémoire. La commande suivante attribue 1 Mo de RAM, puis il effectue des opérations d'écriture jusqu'à ce qu'il ait écrit 10 Go de données (Ne vous inquiétez pas, n'a pas besoin 10 Go de RAM pour effectuer ce benchmark).
sysbench --test=memory --memory-block-size=1M --memory-total-size=10G exécuter
Cela affichera la vitesse de la mémoire en MiB / s, ainsi que la latence d'accès qui lui est associée.
Ce test mesure la vitesse d'écriture, mais tu peux ajouter --memory-oper=read
mesurer la vitesse de lecture, qui devrait être un peu plus élevé la plupart du temps. Vous pouvez également essayer des tailles de blocs plus petites, ce qui met plus de pression sur la mémoire.
Malgré cela, de façon réaliste, la plupart de la RAM sera assez bonne pour exécuter à peu près n'importe quoi, et en général il sera plus limité par la quantité de RAM que par la vitesse réelle.