Là où je travaille, nous avons de nombreux serveurs "big iron" qui sont utilisés pour héberger de nombreuses machines virtuelles à l'aide d'un hyperviseur Xen. Ceux-ci sont généralement configurés avec 32 Go de RAM, des processus Dual Quad core et des disques rapides avec des quantités de capacité d'E / S.
Nous sommes au point où la configuration matérielle existante devient un peu longue dans la dent et il est temps de sortir et de trouver du nouveau matériel plus gros, plus rapide et plus brillant.
Comme mentionné ci-dessus, le kit existant a été déployé avec 32 Go de RAM et cela a effectivement limité le nombre de machines virtuelles que nous pouvons déployer sur un hôte.
En étudiant les nouveaux matériels, il est évident que vous pouvez obtenir de plus en plus de RAM sur une seule machine avec 64, 72 ou même 96 Go dans un seul châssis. Évidemment, cela nous permettra d'obtenir plus de machines sur un hôte donné, ce qui est toujours une victoire. L'analyse effectuée jusqu'à présent suggère que le facteur limitant sera désormais déplacé vers le sous-système de disque.
Le problème est maintenant d'essayer de se faire une idée d'où nous en sommes ... Grâce à l'utilisation, nous savons que nous ne sommes pas limités en termes de bande passante d'E / S, plus encore, le nombre de I aléatoires / O opérations qui peuvent être terminées. Nous savons anecdotiquement qu'une fois que nous avons atteint ce point, iowait va monter en flèche et toutes les performances de la machine vont aux chiens.
Maintenant, c'est le noeud de la question que je pose, est-ce que quelqu'un est au courant d'un moyen de suivre / tendre avec précision les performances d'E / S existantes spécifiquement en fonction du nombre d'opérations d'E / S aléatoires en cours?
Ce que j'essaie vraiment d'obtenir une métrique est "cette configuration peut gérer avec succès X nombre de demandes d'E / S aléatoires, et nous faisons actuellement (en moyenne) Y op avec un pic de Z op".
Merci d'avance!
la source
Nous utilisons collectl car nous pouvons rassembler toutes les informations nécessaires dans un seul fichier et rejouer les statistiques au besoin. Cela vous permettra de voir le nombre d'IOPS par intervalle d'enregistrement, les changements de contexte, les statistiques de la mémoire. Vous pouvez décomposer cela par disque ou simplement avoir une vue d'ensemble du système. Collectl prend également en charge le lustre.
Il s'agit d'un excellent outil pour obtenir un aperçu des performances globales du système. Bonne chance, d'après les observations, les disques SATA dépassent généralement entre 200 et 300 IOPS lors de l'accès aléatoire.
la source
Nous enregistrons et représentons graphiquement les E / S disque de la même manière que nous effectuons toutes les autres mesures:
Les données sont extraites des hôtes à l'aide de SNMP. Nos boîtiers NAS / SAN le font nativement. Nous utilisons net-snmp sur tous les hôtes Linux, qui fournit ces informations depuis USB-DISKIO-MIB .
Les données sont stockées (au format RRD) et représentées graphiquement à l'aide de Cacti . Certains modèles Disk IO nous donnent un nombre et une taille de transaction, affichés dans le format courant, moyen et de pointe habituel.
Ces métriques ne sont pas nécessairement aussi finies que l'utilisation de
iostat
/dstat
/sar
sur un hôte. Mais c'est le feu et l'oublie, qui se configure automatiquement lorsqu'une nouvelle machine est mise en service, stockée de manière centrale et reste disponible pour référence future.Nous utilisons ces données pour nous alerter des tendances inhabituelles sur une base opérationnelle et y repensons toujours lors de la planification de la capacité.
Il y a quelques problèmes avec ceci:
Il est assez difficile de séparer et de quantifier les E / S aléatoires des E / S séquentielles. Puisque la différence fondamentale entre les deux est l'emplacement physique des blocs stockés sur le plateau de disque. Vous pouvez faire une estimation éclairée de la taille des transactions, en partant du principe que de nombreuses petites transactions concernent probablement de petits fichiers parsemés sur le disque. Mais il n'y a aucune garantie. Il peut s'agir de la lecture séquentielle de petites quantités de données à partir d'un seul fichier ou de blocs adjacents sur le disque.
L'enregistrement des métriques vous donnera une très bonne image de ce que sont vos engagements aujourd'hui, comment ils ont changé au fil du temps et donc comment ils changeront à l'avenir. Ce qu'il ne vous dira pas, c'est quel est le plafond. Du moins pas avant qu'il ne soit trop tard. Pour déterminer cela, vous devez faire quelques calculs (à partir de vos spécifications matérielles), des analyses comparatives (j'aime beaucoup
bonnie++
moi - même) et il est utile d'avoir une idée logistique de ce que ces domUs font / sont utilisés pour.la source
En fonction de votre backend de stockage (IBM SVC / DS8000), vous pourrez peut-être en extraire directement des statistiques relatives aux IOPS aléatoires.
Pour extraire les statistiques du serveur, vous pouvez utiliser nmon . C'est gratuit (comme dans la bière). Développé à l'origine par IBM pour AIX, fonctionne également sous Linux.
la source
Si les gens utilisent SAR, j'espère au moins que vous échantillonnez vos données en quelques secondes. Lorsque j'utilise collectl, j'échantillonne une fois / seconde. En ce qui concerne la mesure de vos performances à des E / S aléatoires, utilisez un outil comme le dt de Robin Miller (google it) et vous pouvez facilement générer BEAUCOUP d'E / S aléatoires, puis mesurer simplement avec collectl pour voir combien vous peut faire par seconde. Un disque typique fait généralement un maximum de 200 à 300 E / S / s, basé à peu près sur la latence de rotation. La taille du bloc a eu un effet minimal car l'attente d'une demi-révolution pour que le disque soit au bon endroit écrase tout le reste.
btw - iowait est l'une des mesures les plus mal comprises. Cela n'a RIEN à voir avec la charge du processeur, cela signifie simplement que le processeur ne faisait rien d'autre pendant que les E / S se produisaient. En fait, si vous êtes à 100%, cela signifie essentiellement que vous êtes à 100% inactif!
-marque
la source