В настоящее время мы исследуем высокую задержку диска на сервере Windows 2012 r2, который работает как сервер SQL. Это виртуальная машина под управлением VMware, и хранилище данных неисправного диска связано с очень высокопроизводительным LUN в сети SAN.
SAN показывает очень хорошее время отклика для LUN даже во время инцидентов и во время моего теста. Хранилище данных также показывает очень хорошее время отклика в любой момент. Я дважды проверил, что процессор и память не являются узким местом.
Microsoft предложила использовать diskspd для проверки производительности нашего диска. Вот результат двух тестов. Я пробегал их пару раз, с большим интервалом и в разное время, поэтому уверен, что результат не случаен.
Командная строка: diskspd -b64k -o32 -t4 -d60 -w50 -Sw -r -L -c20G -Z1G C: \ iotest.data
Всего потоков ввода-вывода | байты | Ввод / вывод | МБ / с | Ввода / вывода в секунду | AvgLat | LatStdDev | файл
12623020032 | 192612 | 200,59 | 3209.46 | 38.636 | 21,687
Командная строка: diskspd -b64k -o32 -t4 -d60 -w50 -Su -r -L -c20G -Z1G C: \ iotest.data
Всего потоков ввода-вывода | байты | Ввод / вывод | МБ / с | Ввода / вывода в секунду | AvgLat | LatStdDev | файл
78517239808 | 1198078 | 1247.71 | 19963.34 | 6.410 | 8,202
Согласно документации по diskspd -Sw отключить запись-хотя IO и -Su отключить программное кеширование. Позвольте мне указать, что с -Sw или без него в первой командной строке результат будет таким же давая мне знать, что этот флаг не имеет большого значения. С помощью этого инструмента (созданного и управляемого командой Windows) мы можем сделать вывод, что кеш (отключить с помощью -Su) снижает производительность диска, но это не кажется правильным.
Мои вопросы:
Почему кэширование программного обеспечения снижает производительность?
Влияет ли это на работающее приложение так же, как и на этот тест?
IOMeter дает мне ту же производительность, что и тест без программного кеширования, почему?
Спасибо,
Вы не понимаете, что -Sw
делает.
Как заявил diskspd
документы, -Sw
фактически обходы Кэш записи ОС, поскольку он открывает целевой файл с FILE_FLAG_WRITE_THROUGH.
Что меня удивляет, так это то, что ваша SAN вообще соблюдает этот флаг: наличие защищенного от потери мощности кеша записи, SAN и массивов хранения обычно не учитывает флаг записи.
С другой стороны, тесты без буферизации и без записи показывают гораздо лучшие результаты.
Может быть этот это ваша настоящая проблема: ваш SAN соблюдает (вероятно, бесполезный, если он наверняка имеет постоянный кеш) флаг записи.
Вы меняете две переменные, буферизованную и сквозную, поэтому вы не можете сказать, что изменилось. Лучшее сравнение было бы между -Sb
"буферизованный" и -Su
"небуферизованный".
На самом деле, вполне вероятно, что -Sw убивает вашу производительность. Любой массив хранения, заслуживающий того, чтобы называться таковым, имеет кеш записи, поэтому записи могут быть подтверждены быстрее, чем они могут быть зафиксированы на дисках в массиве. Сквозная запись может обойти это.
Постоянная проверка всех доступных компонентов в массиве, SAN и хосте, программном и аппаратном обеспечении.