web-dev-qa-db-fra.com

Relation entre disques iops et SAR TPS

J'essaie d'estimer les exigences d'IOPS de mon application fonctionnant sur 32 bits Centos 6.2. J'ai commencé à prendre des mesures sur une machine avec des disques SATA et je suis assez confus de différence entre les iops et les TPs mesurés par SAR.

Selon - Wikipedia SATA Disk devrait effectuer 75-100 iops. tilitaire ioping Semble confirmer cela pour un 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 blocs) ou un accès aléatoire (ioping), la valeur est toujours la même. Je pensais que TPS est en fait des iops et je m'attendrais à ce que cela descendra avec des morceaux plus importants transférés.

Alors qu'est-ce que la valeur TPS signifie exactement? Et comment se rapporte-t-il aux iops?

13
pystole

Les transactions sont des commandes IO simples (bloc de blocage/écriture) qui sont écrites sur le disque brut (dans votre exemple DM-0). Le noyau Linux tente de commander ces commandes dans une meilleure séquence ou tente de les comprimer dans des commandes plus efficaces (comme: obtenez deux blocs à la fois au lieu d'obtenir un bloc et d'obtenir un autre bloc juste après celui-ci). Ce sont les transactions qui sortent au contrôleur de disque (TPS pour SDA).

Les bons contrôleurs MIGTH ont une logique de leur propre capacité à réduire davantage le nombre réel de transactions.

Une transaction peut être la commande SCSI "écrire 2 Go à Crontoller 1 cible 2 LUN 3 à partir du secteur 22). Comme vous pouvez le constater que cela ne peut pas être amené en corrélation directe avec les numéros de débit.

Ce que vous êtes après est le taux d'écriture soutenu. Vous avez quelques facteurs limitants ici:

  • connexion client: Si le réseau est gigabit, vous n'aurez jamais plus de 100 Mo/s d'entrée
  • disk-contrôleur: S'il s'agit d'un contrôleur de 3 Go, vous n'aurez jamais plus de 300 Mo/S
  • disque: recherchez la valeur des fabricants pour des performances de l'écriture durables
  • Système de fichiers: Il y a un peu de frais généraux car le système d'exploitation doit traiter des données de données sur un disque RAM ...

Je suppose que votre système est: obtenez un bon contrôleur de raid-raid capable de faire RAID 10 ou 5 et d'obtenir au moins 6 disques rapides (15k).

Pour une utilisation professionnelle, utilisez SAS au lieu de SATA.

6
Nils

Veuillez également savoir que la valeur TPS représente des lectures et des écrites, vous pouvez utiliser -x Basculer pour une vue étendue où se trouve et écrivez des écritures (r/s = iops de lecture, w/s = iops d'écriture):

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
5
HTF