Низкая производительность диска на виртуальной машине Azure

9

Итак, прежде всего, позвольте мне сказать, что я не оператор, а разработчик. Так что я собираюсь в немного неизвестной земли здесь, поэтому, пожалуйста, потерпите меня.

Я хотел бы использовать виртуальную машину Azure для извлечения XML-файла объемом 50 ГБ из zip-файла объемом 1,9 ГБ. Поэтому я проверял, какой размер экземпляра в Azure следует использовать, чтобы получить хорошую производительность, не платя за то, что мне нужно.

Тем не менее, производительность дисков виртуальных машин Azure не была удивительной, и я хотел бы знать, что я делаю что-то не так или мои результаты соответствуют ожиданиям.

Прежде всего, с чем я тестировал? У меня есть пользовательское консольное приложение .NET, которое принимает только zip-файл в качестве аргумента и сразу начинает извлекать zip-файл в тот же каталог, в котором находится zip-файл. Во время извлечения приложение вычисляет, сколько мегабайт приложение записывает в целевой файл в секунду и выводит его.

На моей локальной машине разработки я получаю довольно хорошую производительность с этим написанным приложением, 160-210 МБ / с. Таким образом, весь процесс извлечения занимает около 8 минут. Характеристики моей локальной машины: Intel Core i7 950, 3 ГГц, 4 ядра (8 логических), 12 ГБ оперативной памяти, Samsung SSD 830 серии, 250 ГБ.

Итак, я начал тестировать экземпляры разных размеров, и вот мои результаты.

  • На экземпляре A4 с Windows Server 2012 Datacenter R2 (8 ядер, 14 ГБ ОЗУ) с чередованием RAID-массива из 4 виртуальных дисков с использованием одной учетной записи хранения без кэширования хоста я получил стабильные 30-35 МБ / с, что означает экстракция заняла 24 минуты 48 секунд. Я также попытался включить кэширование на хосте, но это не имело никакого значения.
  • На экземпляре D4 с Windows Server 2012 Datacenter (8 ядер, 28 ГБ ОЗУ, 500 ГБ на локальном SSD-диске) я получил действительно хорошую производительность (150+ МБ / с) в течение первых минут, а затем менял производительность с пиками в 200 МБ / с и долины на 9 МБ / с. Средняя производительность была между 70 и 100 МБ / с. Экстракция заняла 9 минут и 40 секунд.
  • На экземпляре D3 с Windows Server 2012 Datacenter (4 ядра, 14 ГБ ОЗУ, 250 ГБ локальный SSD-диск) я получил действительно хорошую производительность (150+ МБ / с) в первую минуту, но затем производительность снизилась до 20-40 МБ / с, чтобы процесс экстракции занял 21 минуту 49 секунд.

На экземплярах D2 и D1 производительность диска хуже, чем на D3.

И это действительно удивляет меня. Как может локальный SSD-диск работать так плохо, как на экземплярах D1, D2 и D3? И кто-нибудь знает, почему производительность диска сильно отличается от D1 до D4? Это проблема с памятью? Когда я смотрю на диспетчер задач во время извлечения, использование памяти стремительно растет. Я подозреваю, что это потому, что Windows кэширует записанные данные, но когда ей не хватает памяти, она должна сбросить данные на диск. Когда это происходит, производительность диска снижается. Но этого не происходит на моей локальной машине, так почему такое агрессивное кэширование необходимо на этих виртуальных машинах?

Я знаю, что между моей локальной машиной и виртуальной машиной, размещенной в Azure, есть различия, но действительно ли ожидаемая производительность диска действительно ожидаема?

(Первоначально я разместил свой вопрос на Stackoverflow , так как подозревал, что причиной было мое приложение. Но я не уверен больше)

Рене
источник

Ответы:

7

Здесь немного поздно, но для того, чтобы «подключить» твердотельные накопители в Azure, их IOP ограничены в зависимости от размера машины. Это нигде не было упомянуто в ценах, но я поднял эту проблему как билет с технической поддержкой, когда они отсылали меня к сообщению в блоге ниже.

Смотрите эту ссылку: http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/

Ричард Хауэр
источник
Отличная информация, спасибо Ричард! Я подозревал, что это связано с регулированием, но в то время я не мог найти какую-либо конкретную информацию об этом. Этот пост в блоге отвечает на мои вопросы.
Рене
диск Azure Limit io..что за хрень..я переключаюсь на облачность гугл .. они не ограничивают это и цена намного дешевле.
Тян
4

Может быть, это не связано с памятью. «Физические» диски в Azure используют так называемое хранилище BLOB-объектов, и по этой причине производительность не такая, как на локальном компьютере, даже с аналогичным оборудованием. Вы можете найти больше информации по этой ссылке . Похоже, что это общая проблема для сообщества SQL Server, которое сильно зависит от производительности диска. Я процитирую статью, которую я нашел об этом

В Руководстве по повышению производительности для SQL Server в виртуальных машинах Azure упоминается (на страницах 15 и 26), что в виртуальных машинах Azure можно использовать пространства хранения для повышения производительности хранения для рабочих нагрузок SQL Server.

Дисковые пространства - это встроенная функция Windows Server 2012, которая позволяет использовать несколько физических дисков для создания одного виртуального диска, что позволяет обойти ограничения ввода-вывода для самого диска виртуальной машины. Цитирую еще раз:

С большими виртуальными машинами, которые поддерживают много (до 16) физических дисков, возможно очень значительное увеличение производительности хранилища. Это может сделать Azure жизнеспособной платформой для многих рабочих нагрузок SQL, которые в противном случае были бы слишком ограничены производительностью ввода-вывода одного диска Azure.

Эта статья покажет вам шаги для создания места для хранения.

Вы должны попробовать это в первую очередь. Возможно, вы даже можете использовать меньший экземпляр, поскольку служба хранения является отдельной службой от самого экземпляра.

Бруно Фариа
источник
Вы правы, что стандартные диски в Azure на самом деле используют хранилище BLOB-объектов, но я не верю, что это относится к дискам SSD. Согласно информации, предоставленной моим Microsoft, это локальные физические SSD-диски. И когда это так, я думаю, странно, что производительность сильно отличается между размерами экземпляра D. Что касается дискового пространства: я исследовал это и провел несколько тестов, но, к сожалению, это не дало мне заметного прироста производительности. В конце концов, я пришел к выводу, что я просто должен признать, что мне нужно использовать больший размер экземпляра для этой задачи.
Рене
1
@ Рене, у тебя была возможность протестировать новый Azure Storage Premium? Извините, что столкнулся с этой старой темой, но мне любопытно посмотреть, как это новое хранилище будет работать в вашей среде.
Бруно Фариа
Извините за мой поздний ответ. Отличный совет об Azure Storage Premium. Я не пробовал это, поскольку это еще не доступно в моем регионе. Но я буду следить за этим. Еще раз спасибо!
Рене