Un moyen simple de mesurer la vitesse de traitement d'un disque reconnu par Linux

TL;DR Même lorsqu'il s'agit de différentes couches telles que le système d'exploitation et le middleware, la vitesse de lecture / écriture du disque existe toujours en tant que facteur pouvant être un goulot d'étranglement. Présentation d'une méthode simple pour mesurer le débit du disque lorsque vous pensez qu'un disque est le goulot d'étranglement.

Utiliser la scène

À titre d'exemple, je pense qu'il est utile d'étudier par la méthode introduite lorsque le processus de compression est lent pour une raison quelconque lors de l'exécution du processus de compression de fichiers.

Mesurer le débit de lecture du disque

Vous pouvez mesurer le débit de lecture en utilisant la commande dd pour définir le disque à mesurer sur ʻif et en spécifiant / dev / null pour ʻof. En passant, notez qu'il s'agit d'une commande dd, il est donc important de savoir que ce sera un accès séquentiel.

dd if=/dev/sda1 of=/dev/null bs=16k status=progress

La sortie sera la suivante.

584122368 bytes (584 MB) copied, 4.61756 s, 127 MB/s

Mesurer la vitesse de traitement de chaque commande

La méthode présentée ci-dessus entraîne une vitesse de disque presque pure. Cependant, comme dans l'exemple de la scène d'utilisation, par exemple, lorsque le processus de compression est lent, vous voudrez peut-être distinguer s'il s'agit de la vitesse du disque pur ou du processus de compression est le goulot d'étranglement et lent. Dans un tel cas, la commande «pv» qui peut mesurer la vitesse de traitement de chaque commande est effective.

Qu'est-ce que la commande pv?

La commande pv est une commande qui mesure la quantité de données qui traverse un tuyau lors du traitement de tuyau. Par exemple, si vous avez l'exemple suivant, vous pouvez vérifier la quantité de données passées de la commande tar à la commande lz4, c'est-à-dire à quelle vitesse le traitement de la commande tar est exécuté. Cela permet de déterminer si la commande tar est le goulot d'étranglement ou si la commande lz4 est le goulot d'étranglement lorsque la vitesse d'exécution des commandes suivantes est lente pour une raison quelconque.

tar -b 256 -cvf - /data/ | lz4 -c

Comment utiliser

Il est possible de mesurer en insérant la commande pv entre les tuyaux que vous souhaitez mesurer comme indiqué ci-dessous.

tar -b 256 -cvf - /data/ | pv | lz4 -c > /dev/null
tar -b 256 -cvf - /data/mysql/ | lz4 -c | pv > /dev/null

La sortie sera la suivante.

8.66GiB 0:00:04 [2.19GiB/s] [  <=>           ]

en conclusion

Je pense qu'il existe de nombreuses façons de mesurer les performances d'un disque, mais cette fois, j'ai présenté la méthode ci-dessus comme un moyen facile de vérifier. Puisqu'il existe différents types d'accès au disque tels que «Lecture», «Ecriture», «E / S aléatoire», «E / S séquentielle» et l'indice de vitesse «IOPS» Débit »,« Quelle est cette heure? » Si vous êtes conscient de "Est-ce un processus qui provoque un modèle d'accès?", Je pense que vous pouvez facilement aborder la découverte des goulots d'étranglement.

Recommended Posts

Un moyen simple de mesurer la vitesse de traitement d'un disque reconnu par Linux
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
Un moyen simple de vérifier la source des modules Python
Un moyen simple de remplir le début de 0 en fonction du nombre de chiffres dans le nombre [Python]
python3 Mesurez la vitesse de traitement.
Comment augmenter la vitesse de traitement de l'acquisition de la position des sommets
Créez un tableau à deux dimensions en ajoutant une ligne à la fin d'un tableau vide avec numpy
Un moyen simple de visualiser le temps pris en Python et un moyen plus intelligent de l'améliorer
Un moyen simple d'accéder à l'API produit Amazon en Python
Considérez la vitesse de traitement pour déplacer le tampon d'image avec numpy.ndarray
Un moyen simple de réexécuter une commande précédemment exécutée dans ipython
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Une commande pour vérifier facilement la vitesse du réseau sur la console
Étudiez des procédures efficaces pour augmenter la sensibilité des chevalières de 3,5 milliards de fois grâce à une planification dynamique
[Gestion des erreurs Golang] La meilleure façon de diviser le traitement en fonction du type d'erreur
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
Mesurer la force de l'association dans un tableau croisé
L'histoire du traitement A du blackjack (python)
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
Lien vers les points de données du graphe créé par jupyterlab & matplotlib
Comment calculer la volatilité d'une marque
À propos de la vitesse de traitement de SVM (SVC) de scikit-learn
Une manière intelligente de chronométrer le traitement avec Python
Comment charger facilement le processeur / la mémoire sous Linux
Comment mesurer la vitesse de la ligne depuis le terminal
J'ai vérifié la vitesse de traitement de la numpy unidimensionnelle
Un moyen simple d'appeler Java depuis Python
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Utilisation pour appeler une méthode d'une instance avant qu'elle ne soit renvoyée par __new__
[Ruby] Comment remplacer uniquement une partie de la chaîne de caractères correspondant à l'expression régulière?
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!
Ajouter une fonction pour indiquer la météo d'aujourd'hui au bot slack (fabriqué par python)
Un mémo pour comprendre visuellement l'axe des pandas.
Jetez un œil au traitement de LightGBM Tuner
Enregistrer le graphique dessiné par pyqtgraph dans une image
Un moyen simple de créer un module d'importation avec jupyter
Étapes pour calculer la probabilité d'une distribution normale
Note Python: Le mystère de l'attribution d'une variable à une variable
Même les débutants peuvent le faire! Un moyen facile d'écrire un diagramme de Sankey dans Plotly
[Linux] [C / C ++] Comment obtenir la valeur d'adresse de retour d'une fonction et le nom de fonction de l'appelant
Un exemple de mécanisme qui renvoie une prédiction par HTTP à partir du résultat de l'apprentissage automatique
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Une histoire sur le portage du code de "Essayez de comprendre comment fonctionne Linux" sur Rust
Comment créer un LINE BOT 004 interactif (répondre à la date de clôture d'une société cotée)