Подписаться

Почему такой медленный диск/файловая подсистема?

При копировании большого файла с С: на 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: 

Базовые Linux сервера (веб, телефония, почта) 500 IOPS
Сервер до 3ГБ ОЗУ, 2 ядра, 60ГБ диск 1000 IOPS
Сервер от 4ГБ до 6 ГБ ОЗУ, 2+ ядра, 60ГБ+ диск 1500 IOPS
Сервер от 8ГБ до 24ГБ ОЗУ, 4+ ядра, 60ГБ+ диск 2000 IOPS
Сервер от 24ГБ до 32ГБ ОЗУ 3000 IOPS

 

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

Комментарии

На базе технологии Zendesk