Назад | Перейти на главную страницу

Сравнительный анализ дисков Azure Premium Storage P30

Мы проводим тесты производительности на двух новых виртуальных машинах Standard DS13 (8 ядер, 56 ГБ) (обе с использованием последнего образа Windows 2012 R2 по умолчанию), поддерживаемых хранилищем Premium, и столкнулись с проблемой на этапе 1 при тестировании производительности локального SSD.

Мы понимаем, что 25% локального SSD объемом 400 ГБ для этих виртуальных машин доступны в качестве временного хранилища, а остальные 75% используются для кэширования хранилища Premium: http://azure.microsoft.com/blog/2014/12/11/new-premium-storage-backed-virtual-machines/

По оставшимся 25% мы ожидаем увидеть следующие показатели: http://www.brentozar.com/archive/2014/09/azure-really-60-faster/ http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/

... но Crystal Disk Mark показывает это ползать вместе:

               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)

Производительность диска ОС лучше, но совсем не приближается к 150 МБ / с, которые можно было бы ожидать от диска P20 (при условии, что это то, что выделено для диска ОС 127 ГБ по умолчанию).

Ожидая:

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

Видя:

           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)

И производительность P30 диск (с Только для чтения cache) не намного лучше:

           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)

По сравнению с нашим текущим Облачный диск с кэшированием хоста, развернутым на D13 (обратите внимание на производительность произвольного чтения 4 КБ):

           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)

И вот что сообщает SQLIO для локального SSD:

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

А для 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

Объявленные для P30 5000 операций ввода-вывода в секунду удерживаются, но как насчет пропускной способности 200 МБ / с на диск?

ПРИМЕЧАНИЕ. Попытки создать диск данных P30 с политикой кэширования ReadWrite приводят к:

Update-AzureVm: BadRequest: параметр кэша диска ReadWrite не поддерживается для DataVirtualHardDisk.

Приветствуются любые рекомендации:

Чтобы ответить на ваши вопросы:

  1. Локальное хранилище ограничено до 500 операций ввода-вывода в секунду при 8 КБ. Эти ограничения были ошибкой и скоро будут существенно повышены.
  2. Чтобы достичь 200 МБ / с при записи, вам необходимо (а) использовать размер блока не менее 40 КБ (в противном случае вы сначала столкнетесь с пределом 5000 IOPS) и (б) использовать глубину очереди не менее 25 (для 40 КБ block, по мере увеличения размера блока вы можете использовать меньшую глубину очереди).
  3. Мы согласны, было бы неплохо, если бы мы опубликовали тесты, которые вы можете использовать для проверки пределов. Если мы это сделаем, вероятно, не будет, пока мы не выйдем из режима предварительного просмотра.

Дэвид Берг, команда по производительности Microsoft Azure

Хранилище премиум-класса поддерживает только кэш чтения, а не чтение / запись, как стандартные диски.

Пропускная способность тестов SQLIO ограничена, поскольку вы используете размер блока ввода-вывода по умолчанию 2 КБ. Возьмите количество операций ввода-вывода в секунду на диске P30, которое вы в настоящее время получаете, и умножьте на размер блока, и вы получите 5103 операций ввода-вывода в секунду * 2 КБ = 10206 КБ / с или 9,97 МБ / с, что является пропускной способностью, указанной в ваших тестах. Увеличьте размер блока в вашей команде SQLIO (см. http://www.mssqltips.com/sqlservertip/2127/benchmarking-sql-server-io-with-sqlio/) и вы сможете найти предел пропускной способности. Размер блока ввода-вывода в 64 КБ должен дать вам 5103 IOPS * 64 КБ = 326592 КБ / с или 318,94 МБ / с и проверить заявленный Microsoft предел.

Я не тестировал локальные твердотельные накопители на своих виртуальных машинах серии D, но у меня еще нет доступа к хранилищу премиум-класса, поэтому в этом случае это не поможет. Мое единственное предположение заключается в том, что если вы используете хранилище премиум-класса на машине, которая использует 75% емкости локального SSD, это также может ограничивать доступ к локальному SSD, чтобы гарантировать производительность хранилища премиум-класса.