Relation entre disque IOPS et sar tps

13

J'essaie d'estimer les exigences IOPS de mon application exécutée sur CentOS 6.2 32 bits. J'ai commencé à prendre des mesures sur une machine avec des disques SATA et je suis assez confus de la différence entre IOPS et tps mesurés par sar.

Selon wikipedia, le disque SATA devrait effectuer 75 à 100 IOPS. l'utilitaire ioping semble le confirmer pour le test d'accès aléatoire:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Mais les valeurs tps produites par sar sont beaucoup plus élevées (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Cela ne dérange pas vraiment si cette charge est séquentielle (dd avec différentes tailles de bloc) ou à accès aléatoire (ioping), la valeur est toujours la même. Je pensais que tps était en fait IOPS et je m'attendrais à ce qu'il baisse avec de plus gros morceaux transférés.

Alors, que signifie exactement la valeur tps? Et comment est-ce lié à l'IOPS?

pystole
la source
2
Je crois que vous voyez des IOPS plus élevés dans la valeur TPS en raison du cache disque.
ceejayoz
1
Ok, j'ai essayé un fichier de 10 Go via dd avec un bloc de 256 Ko pour réellement remplir le cache et après ~ 90 secondes, tps tombe à ~ 200, alors peut-être que vous avez raison. Mais 80 et 200, c'est quand même une différence ... Est-il possible que les IOPS en lecture et en écriture diffèrent? Et existe-t-il un moyen de déterminer les IOPS requis à partir de cette valeur?
Pystole
1
Pouvez-vous décrire pourquoi vous recherchez les IOPS? lire et écrire sont des chaussures très différentes qui sont jetées dans le même pot ici.
Nils
La raison en est que je dois décrire les exigences matérielles minimales. J'ai un serveur qui reçoit des données sur le réseau (nous pouvons supposer un débit binaire constant ici) et écrit les données reçues sur le disque. Les données sont écrites dans des fichiers de manière séquentielle mais il pourrait y en avoir des centaines (par exemple 800) en parallèle. J'ai compris que lorsque le nombre de clients atteint un certain point, je commence à avoir de gros iowaits. Le débit de disque réel que je peux atteindre est d'environ 25 Mo / s, ce qui est assez faible, moins de clients avec un débit binaire plus élevé peuvent faire 35 Mo / s, séquentiel pur environ 130 Mo / s. Donc, je suppose que l'IOPS est ce qui compte ici ...
pystole

Réponses:

6

Les transactions sont des commandes IO uniques (bloc d'extraction / bloc d'écriture) qui sont écrites sur le disque RAW (dans votre exemple dm-0). Le noyau linux essaie d'ordonner ces commandes dans une meilleure séquence ou essaie de les compresser en commandes plus efficaces (comme: obtenir deux blocs à la fois au lieu d'obtenir un bloc et obtenir un autre bloc juste après celui-ci). Ce sont les transactions qui sortent vers le contrôleur de disque (tps pour sda).

Les bons contrôleurs migth ont leur propre logique qui réduit encore le nombre réel de transactions.

Une transaction peut être la commande SCSI "écrire 2 Go sur le crontoller 1 cible 2 lun 3 à partir du secteur 22). Comme vous pouvez le voir, cela ne peut pas être mis en corrélation directe avec les nombres de débit.

Ce que vous recherchez, c'est le taux d'écriture soutenu. Vous avez ici quelques facteurs limitatifs:

  • connexion client: si le réseau est Gigabit, vous n'aurez jamais plus de 100 Mo / s d'entrée
  • contrôleur de disque: S'il s'agit d'un contrôleur de 3 Go, vous n'aurez jamais plus de 300 Mo / s de débit
  • disque: recherchez la valeur des fabricants pour des performances d'écriture soutenues
  • Système de fichiers: il y a un petit surcoût car le système d'exploitation a besoin de traiter les données - testez cela sur un disque RAM ...

Ma conjecture pour votre système est: Obtenez un bon contrôleur de raid matériel capable de faire des raids 10 ou 5 et obtenez au moins 6 disques rapides (15k).

Pour un usage professionnel, utilisez SAS au lieu de SATA.

Nils
la source
Ok, vous avez raison IOPS n'a aucun sens pour les écritures car il y a beaucoup de caches, de réordonnancement et de fusions impliqués. Clôture ... Merci.
Pystole
5

Veuillez également noter que la TPSvaleur représente les lectures et les écritures, vous pouvez utiliser le -xcommutateur pour une vue étendue où les lectures et les écritures sont séparées (r / s = lire les IOPS, w / s = écrire les IOPS):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89
HTF
la source
Oui vous avez raison. Mais dans mon cas, il y a presque 100% d'écritures, les lectures sont presque nulles.
Pystole