Чому такий повільний диск/файлова підсистема?

При копіюванні великого файлу із С: на D:, E::... Ви спостерігаєте в Windows Explorer швидкість копіювання в декілька мегабайт в секунду(від 8 і вище) і ставите питання "Чому такий повільний диск? У мене на ноутбуку копіює швидше!"!

Якщо коротко, то - це особливість роботи віртуальних машин в хмарі(не лише в нашому), де кожна віртуальна машина має свою квоту (ліміт) на обчислювальні ресурси. В цьому випадку ліміт на к-сть операцій введення-виведення. Ліміти покликані не допустити ситуацій коли хтось один завантажить устаткування на 100% і тим самим зробить проблематичну роботу інших клієнтів. Т.е. це нормальна швидкість для Вашого сервера в хмарі.

Продуктивність диска вимірюється декількома показниками:

  • максимальна кількість операцій введення - виведення в секунду(IOPS)
  • час відгуку диска, в мілісекундах(Latency, ms)
  • середня довжина черги операцій введення - виведення(Average Disk Queue)
  • і нарешті, пропускна спроможність, в МБ/сік(Bandwidth)

Критичними показниками для робочого навантаження(робота в програмах 1С, виконання SQL Server і тому подібне) є час відгуку і довжина черги - саме від них в основному залежить "чуйність" програм на сервері.

Нормальними значення цих показників вважаються:

  • час відгуку менше 10мс (для активних процесів, для фонових це не дотримується)
  • довжина черги менше ніж 2

(перевірити ці показники можна запустивши на сервері "Монітор ресурсів")

Інші два показники тісно пов'язані один з одним - при більшій кількості IOPS можлива велика пропускна спроможність диска. Проте має значення і розмір самої операції введення - виведення.

К примеру, в Вашем сервере стоит лимит 1000 IOPS и при мелких операциях (обычная рабочая нагрузка 4-8КБ ввод-вывод), скорее всего Вы даже не ощутите его влияние. При копировании через Windows Explorer происходит однопоточная операция ввода-вывода уже большими блоками данных (1МБ+), которая системой лимитирования "дробится" на много операций по 8КБ. Т.е одна операция чтения-записи 1МБ данных преобразуется в 128 операций по 8КБ (Normalized IOPS https://technet.microsoft.com/ru-ru/library/dn282281.aspx) и, соответственно, пропускная способность ограничивается данным лимитом: 1000/128 = ~8МБ/сек в идеале. Также стоит отметить, что лимит "выстрелит" в случае когда нет возможности использовать кеш Windows - большой файл (не помещается в ОЗУ), либо длительное постоянное чтение-запись (бекап, оптимизация бд и тп). При небольших объемах файлов при копировании операционная система задействует кеш и лимит опять-таки не ощутится.

Поточні ліміти на кількість IOPS:

IOPS oblako

PS. Більш докладно про оцінку продуктивності диска можна також прочитати в статті https://habrahabr.ru/post/154235/

Для SQL Server - важливі показники продуктивності диска (англ.) http://www.sqlshack. com / sql-server-disk-performance-metrics-part-1-important-disk-performance-metrics /

PPS. Програма robocopy копіює в кілька потоків і зазвичай працює швидше ніж Windows Explorer