Analyse comparative des disques Premium Storage P30 d'Azure

9

Nous effectuons des tests de performances sur deux nouvelles machines virtuelles DS13 standard (8 cœurs, 56 Go) (toutes deux utilisant la dernière image par défaut de Windows 2012 R2) soutenues par Premium Storage et nous avons atteint un mur avec l'étape 1 pour tester les performances du SSD local.

Nous comprenons que 25% du SSD local de 400 Go pour ces machines virtuelles est disponible en tant que stockage temporaire et les 75% restants sont utilisés pour la mise en cache du stockage Premium: http://azure.microsoft.com/blog/2014/12/11/new- machines virtuelles avec support de stockage premium /

Sur les 25% restants, nous nous attendons à voir des performances dans ce sens: http://www.brentozar.com/archive/2014/09/azure-really-60-faster/ http://azure.microsoft.com/blog / 2014/10/06 / d-series-performance-attentes /

... mais Crystal Disk Mark le montre rampant :

               Sequential Read :     4.097 MB/s
              Sequential Write :     4.096 MB/s
             Random Read 512KB :     4.112 MB/s
            Random Write 512KB :     4.112 MB/s
        Random Read 4KB (QD=1) :     2.057 MB/s [   502.3 IOPS]
       Random Write 4KB (QD=1) :     2.057 MB/s [   502.2 IOPS]
       Random Read 4KB (QD=32) :     2.048 MB/s [   500.0 IOPS]
      Random Write 4KB (QD=32) :     2.047 MB/s [   499.7 IOPS]

  Test : 50 MB [D: 7.2% (8.1/112.0 GB)] (x5)
  Date : 2015/02/14 15:35:41
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Les performances du disque du système d'exploitation sont meilleures, mais loin des 150 Mo / s que vous attendez d'un disque P20 (en supposant que c'est ce qui est alloué pour le disque du système d'exploitation de 127 Go par défaut).

Attendant:

http://azure.microsoft.com/en-us/documentation/articles/storage-premium-storage-preview-portal/

Voyant:

           Sequential Read :    66.031 MB/s
          Sequential Write :    63.034 MB/s
         Random Read 512KB :    65.861 MB/s
        Random Write 512KB :    63.580 MB/s
    Random Read 4KB (QD=1) :     2.097 MB/s [   511.9 IOPS]
   Random Write 4KB (QD=1) :     2.047 MB/s [   499.7 IOPS]
   Random Read 4KB (QD=32) :     2.086 MB/s [   509.3 IOPS]
  Random Write 4KB (QD=32) :     2.078 MB/s [   507.4 IOPS]

  Test : 50 MB [C: 12.9% (16.4/127.0 GB)] (x5)
  Date : 2015/02/14 15:46:35
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Et les performances du disque P30 (avec cache ReadOnly ) ne sont pas bien meilleures:

           Sequential Read :   204.567 MB/s
          Sequential Write :    39.677 MB/s
         Random Read 512KB :   204.549 MB/s
        Random Write 512KB :    34.865 MB/s
    Random Read 4KB (QD=1) :    20.951 MB/s [  5114.9 IOPS]
   Random Write 4KB (QD=1) :     1.666 MB/s [   406.7 IOPS]
   Random Read 4KB (QD=32) :    20.893 MB/s [  5100.9 IOPS]
  Random Write 4KB (QD=32) :    20.944 MB/s [  5113.4 IOPS]

  Test : 50 MB [E: 0.0% (0.2/1023.0 GB)] (x5)
  Date : 2015/02/14 15:22:59
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)

Par rapport à notre CloudDrive actuel avec mise en cache d'hôte déployée sur les D13 (notez les performances des lectures aléatoires de 4 Ko):

           Sequential Read :   136.711 MB/s
          Sequential Write :    10.210 MB/s
         Random Read 512KB :   190.744 MB/s
        Random Write 512KB :     9.063 MB/s
    Random Read 4KB (QD=1) :    10.813 MB/s [  2639.8 IOPS]
   Random Write 4KB (QD=1) :     0.508 MB/s [   107.5 IOPS]
   Random Read 4KB (QD=32) :   106.533 MB/s [ 26009.1 IOPS]
  Random Write 4KB (QD=32) :     9.363 MB/s [  2286.0 IOPS]

  Test : 50 MB [F: 4.1% (24.9/600.0 GB)] (x5)
  Date : 2015/02/14 20:25:01
  OS : Windows Server 2012 Datacenter (Full installation) [6.2 Build 9200] (x64)

Et voici ce que SQLIO rapporte pour le SSD local:

C:\Program Files (x86)\SQLIO>sqlio -dD
sqlio v1.5.SG
1 thread reading for 30 secs from file D:testfile.dat
        using 2KB IOs over 128KB stripes with 64 IOs per run
size of file D:testfile.dat needs to be: 8388608 bytes
current file size:      0 bytes
need to expand by:      8388608 bytes
expanding D:testfile.dat ... done.
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   499.38
MBs/sec:     0.97

Et pour le P30:

C:\Program Files (x86)\SQLIO>sqlio -dE
sqlio v1.5.SG
1 thread reading for 30 secs from file E:testfile.dat
        using 2KB IOs over 128KB stripes with 64 IOs per run
size of file E:testfile.dat needs to be: 8388608 bytes
current file size:      0 bytes
need to expand by:      8388608 bytes
expanding E:testfile.dat ... done.
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:  5103.03
MBs/sec:     9.96

Les 5000 IOPS annoncés pour le P30 tiennent le coup, mais qu'en est-il du débit de 200 Mo / s par disque?

REMARQUE: les tentatives de création du disque de données P30 avec la stratégie de cache ReadWrite entraînent:

Update-AzureVm: BadRequest: le paramètre de cache de disque ReadWrite n'est pas pris en charge pour DataVirtualHardDisk.

Tout conseil serait apprécié:

  • Pourquoi le stockage SSD local est-il limité à 500 IOPS et un débit de 1 à 4 Mo / s?
  • Comment pouvons-nous atteindre 200 Mo / s sur les écritures comme nous le voyons avec les lectures sur les P30, quel est le test à exécuter?
  • MS: pouvez-vous publier des benchmarks d'E / S que nous pouvons exécuter pour valider les limites maximales?
Nariman
la source
3
C'est une question qui doit vraiment être envoyée au support Azure, car je ne connais aucun moyen auquel quiconque ici puisse répondre avec autre chose que des anecdotes.
Mark Henderson

Réponses:

7

Pour répondre à tes questions:

  1. Le stockage local est limité à 500 IOPS à 8 Ko. Ces limites étaient une erreur et seront relevées très prochainement.
  2. Pour atteindre 200 Mo / s en écriture, vous devez (a) utiliser une taille de bloc d'au moins 40 Ko (sinon vous rencontrez d'abord la limite de 5 000 IOPS), et (b) utiliser une profondeur de file d'attente d'au moins 25 (pour un 40 Ko) bloc, à mesure que la taille du bloc augmente, vous pouvez utiliser une profondeur de file d'attente plus petite).
  3. Nous sommes d'accord, ce serait bien si nous publions des repères que vous pouvez utiliser pour valider les limites. Si nous le faisons, ce ne sera probablement pas avant que nous ne quittions l'aperçu.

David Berg - Équipe de performance Microsoft Azure

David Berg - MSFT
la source
J'utilise des blocs de 64 Ko et je n'obtiens que 1 500 IOPS et 90 Mo / sec, discutez ... P30
David Aleu
@DavidAleu Je n'obtiens également qu'environ 1500 IOPS sur les disques P30.
makhdumi
0

Le stockage premium prend uniquement en charge le cache de lecture et non la lecture / écriture comme les disques standard

user271956
la source
0

Votre débit sur les tests SQLIO est limité car vous utilisez la taille de bloc d'E / S par défaut de 2 Ko. Prenez les IOPS sur le disque P30 que vous obtenez actuellement et multipliez par la taille du bloc et vous obtenez 5103 IOPS * 2 Ko = 10206 Ko / s ou 9,97 Mo / s, ce qui est le débit signalé dans vos tests. Augmentez la taille du bloc dans votre commande SQLIO (voir http://www.mssqltips.com/sqlservertip/2127/benchmarking-sql-server-io-with-sqlio/ ) et vous pourrez trouver la limite de débit. Une taille de bloc d'E / S de 64 Ko devrait vous donner 5103 IOPS * 64 Ko = 326592 Ko / s ou 318,94 Mo / s et tester la limite annoncée de Microsoft.

Je n'avais pas testé les SSD locaux sur mes machines virtuelles de la série D, mais je n'ai pas encore accès au stockage premium, donc cela n'aiderait pas dans ce cas. Ma seule supposition est qu'une fois que vous utilisez un stockage premium sur la machine qui utilise 75% de la capacité SSD locale, il peut également limiter votre accès SSD local pour garantir les performances de stockage premium.

Phillip Jarre
la source