Подтвердить что ты не робот

Разница между последовательной записью и случайной записью

В чем разница между последовательной записью и случайной записью в случае: - 1) Диск-системы 2) Системы на основе SSD [Flash Device]

Когда приложение пишет что-то, и информация/данные должны быть изменены на диске, тогда как мы узнаем, является ли это последовательной записью или случайной записью. Поскольку до этого момента запись не может быть выделена как "последовательная" или "random". Запись просто буферизуется, а затем применяется к диску, когда мы будем очищать буфер.

Пожалуйста, поправьте меня, если я ошибаюсь.

4b9b3361

Ответ 1

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

Различие очень важно в традиционных дисковых системах, где каждый поиск диска занимает около 10 мс. Последовательная запись данных на тот же диск занимает около 30 мс на МБ. Поэтому, если вы последовательно записываете 100 МБ данных на диск, это займет около 3 секунд. Но если вы делаете 100 случайных записей по 1 МБ каждый, это займет в общей сложности 4 секунды (3 секунды для фактической записи и 10 мс * 100 == 1 секунда для всех поисков).

Поскольку каждая случайная запись становится меньше, вы платите все больше и больше штрафа за поиск диска. В крайнем случае, когда вы выполняете 100 миллионов случайных 1-байтных записей, вы все равно несете 3 секунды для всех фактических записей, но теперь у вас будет 11,57 дней. Таким образом, четкость того, насколько ваши записи являются последовательными или случайными, может действительно повлиять на время, необходимое для выполнения вашей задачи.

Ситуация немного отличается, когда дело доходит до вспышки. При использовании вспышки у вас нет физической головки диска, которую вы должны перемещать. (Это то, где затраты на 10 мс исходят из традиционного диска). Тем не менее, флэш-устройства имеют большие размеры страниц (самый маленький "типичный" размер страницы составляет около 512 байт в соответствии с wikipedia и страница 4K размеры, как представляется, также являются общими). Поэтому, если вы пишете небольшое количество байтов, Flash все еще имеет накладные расходы, так как вы должны прочитать всю страницу, изменить записанные байты и затем записать всю страницу. Я не знаю характерных чисел для вспышки с головы. Но эмпирическое правило заключается в том, что на вспышке, если каждая из ваших записей в целом сопоставима по размеру с размером страницы устройства, тогда вы не увидите большой разницы в производительности между случайной и последовательной записью. Если каждая из ваших записей мала по сравнению с размером страницы устройства, тогда при выполнении произвольной записи вы увидите некоторые накладные расходы.

Теперь для всего вышеизложенного верно, что на прикладном уровне многое скрыто от вас. Есть слои в ядре, контроллер диска/вспышки и т.д., Которые могут, например, вставлять неочевидные поиски в середине вашей "последовательной" записи. Но в большинстве случаев запись, которая "выглядит" последовательной на уровне приложения (без поиска, много непрерывного ввода-вывода), будет иметь производительность последовательной записи, а запись "случайный" на прикладном уровне будет иметь (как правило, хуже) производительность произвольной записи.