Аннотация

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

Что такое фрагментация?

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

Введение процедуры дефрагментации способно кардинально изменить ситуацию. Суть дефрагментации заключается в объединении отдельных фрагментов файлов в единую область на диске, сокращая путь движения головок и уменьшая среднее время доступа к данным. Этот процесс оказывает непосредственное влияние на повышение общей производительности системы, снижение нагрузки на аппаратуру и про��ление срока службы HDD.Далее мы подробно изучим механизм воздействия фрагментации и дефрагментации на показатели скорости работы жесткого диска, используя конкретные расчеты и наглядные примеры.

Характеристики HDD

Основные характеристики HDD:

-Объем, Гб;

-Линейная скорость чтения/записи(скорость считывания/записи после позиционирования), Mb/s ;

-Количество оборотов диска в минуту, rpm;

-Время перехода track to track, ms.

Возьмем для моделирования HDD со следующими характеристиками:

Рисунок 1. Характеристики HDD
Рисунок 1. Характеристики HDD

Зададимся условным тестируемым файлом, который будет читаться с HDD. Размер файла равен 1 МБ.

Построим модель работы HDD при чтении файла.

1) Файл состоит из кластеров. Количество кластеров в файле:

N{кластеров} = \frac {\text{Размер файла}}  {\text{Размер кластера}} \text{ (1)}

2) Время чтения кластера.

t{кластера} = \frac {\text{Размер кластера}} { \text{Скорость чтения}} \text{ (2)}

3) Время позиционирования.

t_{позиционирования} = t_{\text{ track to track}}+ t_{\text{задержка вращения}}\text{ (3)}

Теперь составим формулу по которой рассчитывается время чтения файла в зависимости от фрагментации:

t_{файла}=N_{кластеров}\cdot(t_{кластера}+t_{поз}\cdot \frac{fragmentation}{100}) \text{ (4)}

То есть, время чтения фала зависит от количества кластеров умноженных на время чтения одного кластера сложенного со временем затрачиваемым на позиционирование на кластере, которое зависит от степени фрагментации.

Посчитаем время чтения файла для разных степеней фрагментации и размера кластера:

Рисунок 2. Таблица с расчетами скоростей HDD в зависимости от фрагментации и размера кластера
Рисунок 2. Таблица с расчетами скоростей HDD в зависимости от фрагментации и размера кластера

Построим графики относительной скорости HDD в зависимости от степени фрагментации:

Рисунок 3. Относительная скорость HDD в зависимости от фрагментации файла и размера кластера.
Рисунок 3. Относительная скорость HDD в зависимости от фрагментации файла и размера кластера.

Рассчитаем таблицу как меняется скорость HDD в зависимости от размера кластера и фрагментации:

Рисунок 4. Расчет скорости HDD при изменении фрагментации файла для разных размеров кластеров.
Рисунок 4. Расчет скорости HDD при изменении фрагментации файла для разных размеров кластеров.

Как видно на маленьких размерах кластера быстродействие даже при незначительной фрагментации падает значительно. Например, при размере кластера 512 байт и фрагментации 5% быстродействие уже падает до ~1% относительно скорости линейного чтения.

На кластерах больших размеров быстродействие падает значительно медленнее, что объясняется тем, что диск затрачивает намного меньшее времени на операции позиционирования.

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

Для того чтобы учесть попадания в кеш в формуле (4) нужно умножить количество кластеров на коэффициент попадания в кеш, тогда будет известно реальное ��оличество чтений кластеров:

N_{\text{кластеров реальных }} = N_{\text{кластеров}}\cdot (1-k_{\text{попаданий в кеш}} ) (5)

Размер кеша, например, если с диска HDD читается база данных размером 1Гб, то чтобы обеспечить 10% попадания в кеш: нужен кеш размером 100Мб. Эта оценка не учитывает повторных попаданий, если учитывать повторные попадания в кеш, то коэффициент попаданий будет больше.

Чтобы получить большое быстродействие (ориентируясь на расчеты и Рисунок 3) нужно 0%-10% процентов фрагментации. Из чего можно сделать вывод, чтобы получать высокую скорость нужна дефрагментация данных и большой кеш, тогда быстродействие будет высоким.

Выводы

  1. Производительность HDD падает нелинейно с ростом фрагментации данных.

  2. Кеши не большого объема не сильно повлияют на рост скорости.

  3. Для повышения эффективности нужно дефрагментировать не только сами файлы, но и также файлы относительно друг друга.

  4. Желательно использовать кластеры большого размера при условии высокой утилизации данных при записи и чтении.