25

После нескольких минут копирования он становится все медленнее и медленнее. Зачем?

Например, он начинается с 20 МБайт / с, а когда он заканчивается с ним, это @ 10 МБ / с.

Различные файлы, большие, маленькие и т.д.

ОБНОВЛЕНИЕ: вопрос касается различных операционных систем, так что это "общий вопрос"

3 ответа3

23

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

20 Мбит / с, которые вы видите, - это данные, записываемые в кэш диска (обычно быстрая, но небольшая память). Как только этот кеш заполнен, он должен быть сброшен на диск - и теперь у вас более узкий диск.

Пример 1: Эффект действительно ярко выражен, когда у вас есть контроллер с большим кешем (например, хороший контроллер RAID5), где ~ 500 Мб данных можно быстро кэшировать, прежде чем они будут записаны на диск.

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

Отказ от ответственности: эти примеры не будут работать, если у вас не включено кэширование записи в вашей операционной системе / на диске.

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

1

Хотя кеширование вызывает некоторые из них, это не единственный фактор. Если бы кэширование было единственным фактором, то мы ожидали бы, что скорость записи быстро упадет с нескольких сотен МБ / с до фактической скорости записи на диске и останется там до конца записи. Однако, это не то, что я наблюдал при выполнении больших передач на диск и с него (например, при записи загрузочных образов). Вместо этого я наблюдаю, что скорость постепенно уменьшается в течение всей операции.

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

Внутри флеш-чипа есть блок данных, в который можно записать данные. При записи компьютер может выполнять только две функции: он может стереть весь блок или изменить некоторые (или все) биты в блоке с 0 на 1.

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

Итак, когда ваш компьютер записывает кучу данных на флэш-диск, вот (не совсем точное, но достаточно хорошее) объяснение того, как это происходит:

  1. Возьмите первый набор блоков для записи и запишите их все.
  2. Прочитайте все блоки, которые мы только что написали, и составьте список тех, которые не соответствуют
  3. Напишите следующий набор блоков, а также те, которые были написаны неправильно в прошлый раз.
  4. Повторяйте 2-3, пока все блоки не будут написаны правильно.

Когда компьютер выполняет запись на диск, он сообщает о скорости, с которой он впервые записывает блоки на диск. Поскольку он также должен будет перезаписывать более ранние блоки одновременно, общая пропускная способность, которая может использоваться для первичных блоков, уменьшается по мере увеличения числа перезаписей, которые также должны произойти. Таким образом, кажущаяся скорость записи уменьшается со временем.

0

Когда файл записывается на диск, будь то флэш-накопитель USB или жесткий диск, данные НЕ / НИКОГДА не читаются, чтобы проверить, совпадают ли они. Это займет вечность. проверка записи выполняется аппаратным обеспечением (проверка циклического избыточного кода), и, если происходит ошибка, она отправляется обратно в приложение с аппаратного обеспечения, обнаружившего ошибку. Замедление, которое происходит и замедляется (даже до паузы), вызвано тем, что процессор записывает быстрее, чем устройство может его обработать. Вы не обнаружите, что это происходит с внутренними жесткими дисками. Вы никогда не увидите, что на самом деле происходит в ОС Windows, но в Linux вы можете увидеть, что процессор останавливается до тех пор, пока USB-оборудование не скажет «ОК», чтобы продолжить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .