Существует много факторов, влияющих на скорость передачи файлов. Я рекомендую вам прочитать следующие вики-статьи, чтобы лучше понять, что происходит, когда файл передается с одного устройства на компьютерное оборудование, подключенное / вставленное / выведенное на другое устройство. Этот ответ в основном теоретический. Объяснение и примеры приведены для того, чтобы помочь вам понять некоторые очень сложные понятия и не являются на 100% технически правильными.
- Компьютерный автобус
- Жесткие диски
- Файловая система
- Универсальная память(очень интересный взгляд на будущее хранилища)
Понимание автобусов
Компьютерная шина - это фактические провода, по которым перемещаются данные. Различные шины, такие как универсальная последовательная шина (USB) и Ethernet, передают данные с использованием разных протоколов, через разные микросхемы контроллера или интегральную схему (IC). На разных компьютерах они будут использовать разные IC в разных конфигурациях, что повлияет на скорость передачи. Некоторые более дешевые системы будут полагаться на процессор, в то время как другие будут иметь выделенный контроллер только для обработки передачи данных. USB на большинстве компьютеров теперь будет иметь собственную микросхему контроллера и сможет загружать большую часть обработки из CPU. USB может иметь более одного устройства, использующего один и тот же канал связи. Например, ваша мышь и жесткий диск могут использовать один и тот же набор проводов для цепи контроллера, что означает, что каждый раз, когда вы перемещаете мышь, вы прерываете жесткий диск.
Чтобы ускорить процесс, большинство шин имеют логику, которая позволяет им использовать (прямой интерфейс памяти) DMI. Это означает, что шине будет предоставлена часть оперативной памяти, в которой будут буферизироваться / кэшироваться данные. Таким образом, ваша 16-мегабайтная загрузка, передаваемая по сети, может быть помещена в буфер до того, как она будет фактически записана на жесткий диск. Где, как большой 1,5 ГБ файл передается, заполнит буфер. Таким образом, первая часть передачи будет довольно быстрой, пока буфер не заполнится, после чего она вернется к фактической скорости передачи устройства. Теперь вы увидите рекламу диска там размера буфера. Вроде 32мб и тд. Таким образом, в то время как USB2 объявляет скорость передачи 480 Мбит / с, буфер диска составляет 32 МБ, как только он заполнен, мы вернулись к фактической скорости передачи устройства.
Понимание жестких дисков
Жесткие диски - это механические устройства, на которые влияет скорость, с которой устройство может фактически перемещаться к части диска. Вики, посвященная скорости жесткого диска , объяснит это довольно хорошо. Диск / головка диска должны переместиться из положения покоя в место, где фактически находятся данные файла, а затем прочитать или записать в зависимости от того, какую операцию вы выполняли. Чтение происходит быстрее, так как при определении состояния части диска меньше работы, чем при ее изменении. Чем более фрагментирован файл, т. Е. Чем больше он распределен по диску, тем больше времени требуется механическим компонентам для перемещения на место для чтения или записи. Вы заметите, что заявленная скорость шины ESATA составляет около 3 ГБ / с. Ваша механическая и логическая схема диска - это две отдельные части. Таким образом, хотя дисковый буфер, скажем, 32 МБ, будет заполнен со скоростью 3 ГБ / с по статической шине. Механические компоненты занимают намного больше времени, поэтому даже на самых высокопроизводительных механических дисках скорость передачи данных будет составлять от 15 до 30 Мбит / с.
Понимание файловых систем.
Теперь файловая система в операционной системе в отличие от файловой системы немного сложнее. Вам необходимо учитывать виртуальную память операционной системы, чтобы понять, как файл создается, читается и записывается. Это одна из причин, по которой вам нужно размонтировать / извлечь диск перед тем, как вынуть его, поскольку некоторые файлы, возможно, не завершили передачу и продолжали делать это в фоновом режиме. Если вы сделаете это до того, как он будет полностью завершен, вы можете испортить файл, который вы передавали, или хуже файловой системы. Виртуальная память - это, по сути, огромный кэш / буфер, используемый операционной системой для хранения самых последних использованных данных в быстро доступной оперативной памяти.
Файловая система дисков, такая как NTFS / ext #(1,2,3,4), позволяет операционной системе преобразовывать понятный для компьютера адрес, такой как CHS (головка цилиндра), в понятное человеку имя файла или данные. Это требует работы операционной системы, чтобы увидеть, какие CHS доступны и где находятся ваши данные. Вот где приходит фрагментация. Если у вас много свободных областей, распределенных по диску, механическим компонентам диска потребуется много времени, чтобы найти их и выполнить операцию записи, поскольку запись занимает больше времени, чем чтение.
Обычно во время передачи вы ограничиваетесь скоростью передачи записывающего устройства, а не скоростью передачи считывающего устройства. Большие файлы занимают больше времени, так как потребуется больше свободного места, и есть большая вероятность, что не все они будут смежными (не фрагментированными). Теперь, если вы перемещаете файлы с одного раздела на другой на одном и том же диске, это наихудший сценарий с точки зрения переноса. Подумайте о перемещении диска на один адрес для чтения, а затем на другой для записи, когда буфер заполнится. Это действительно замедлит ваш перевод.
Заключение
Я не могу точно понять, как настроена ваша система, но я надеюсь, что вы сможете увидеть, сколько всего вовлечено в простой процесс копирования и вставки. Два основных фактора, влияющих на скорость чтения и записи, - это механика дисков и состояние файловых систем. NTFS / FAT 32 будет сеять, если не дефрагментировать. Linux(ext3,4) будет иметь программное обеспечение для дефрагментации, которое может помочь, но, как правило, гораздо лучше распределяет смежные области, чем windows. Linux ext # все еще не совершенен, и вы могли бы улучшить скорость с помощью дефрагментации, но я сомневаюсь, что вы действительно заметите разницу.