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

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

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

Я хотел бы использовать виртуальную машину 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 ГБ.

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

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

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

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

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

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

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

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

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

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

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

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

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