15

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

РЕДАКТИРОВАТЬ: есть ли какие-либо другие факторы, касающиеся файловой системы, в которую входит? Например, имеет ли значение копирование 1 каталога, содержащего 10 файлов, по сравнению с копированием 10 файлов со всего диска? Мне интересно только об одном исходном носителе и одном целевом носителе (без чтения с нескольких дисков).

3 ответа3

15

Здесь есть много факторов, которые могут повлиять на это.

  • Исходный диск - это вращающийся диск или SSD? Если диск вращается, расположение файлов может повлиять на производительность. Поскольку эти два файла, вероятно, находятся в разных частях диска, это повлечет за собой штрафы за поиск головы. Как вы сказали, если вы выберете два файла одновременно и начнете копирование таким образом, ОС будет обрабатывать копии последовательно.
  • Расположение файлов - фрагментация файлов (как на источнике, так и на месте назначения) может повлиять на производительность дисков не-SSD
  • Назначение - если у вас есть два потока записи, записывающих в одну цель, то вы снова столкнулись с проблемой поиска головы (опять же, если не SSD), и вы могли бы сильно чередовать файлы. Раньше я работал в компании, которая занималась производством высокопроизводительных хранилищ, и одной из больших проблем для них было то, сколько потоков видео в реальном времени они могли читать или записывать (для видео 2k требуется ~ 300 мегабит в секунду). Чередование записей замедлит процесс копирования, а также замедлит чтение файла. Конечно, если ваш диск фрагментирован для запуска, ваш файл все равно будет записан с чередованием.
  • один / несколько источников / целей - в зависимости от того, все ли файлы записаны с одного диска или все они записываются на один диск, проблема поиска головы может быть более или менее
  • размер файла - для действительно маленьких файлов проблема поиска головы не будет иметь значения, так как голова все равно должна будет искать следующий файл (это означает, что вместо того, чтобы переходить назад и вперед между файлами, голова будет читать файлы последовательно)

А если операционная система достаточно умна, чтобы это исправить, то в целом они есть. То есть, если вы копируете несколько файлов одновременно (например, подумайте о выборе нескольких файлов одновременно и перетаскивании).

Конечно, если вы запускаете две команды cp , то они будут запускаться обеими командами или в Windows, если вы копируете / вставляете отдельные файлы и получаете два окна прогресса "копирования" на экране, тогда оптимизация не произойдет , В этом случае вы явно сообщили ОС, что хотите запустить две копии одновременно, поэтому не будет решено, что одна копия важнее другой, и начните ставить их в очередь.

12

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

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

По-видимому, существует ряд приложений, которые вынуждают операции копирования файлов ставить в очередь и выполнять последовательно, например, Teracopy и FastCopy.

Однако выполнение операций одновременного копирования на нескольких физических томах - это совсем другое дело. Как происходит передача файлов по альтернативным протоколам.

Что касается вашего вопроса о копировании на диск, подключенный к USB-порту, он сильно зависит от типа памяти, которую использует диск, и используемой спецификации USB (безусловно, заслуживающего внимания узкого места для USB 1.0 и 2.0), а также от ранее упомянутые факторы, относящиеся к объему исходного текста.

1

Если вы несколько раз выберите и скопируете - либо из графического интерфейса, либо с помощью команды, подобной «copy C:\folder * D:\folder\», - тогда файлы все равно будут последовательно копироваться, что ставит вопрос под сомнение.

Если вы копируете некоторые файлы, и пока они копируются, начните копировать больше файлов - либо двумя отдельными операциями из графического интерфейса, либо двумя отдельными командами, выполняемыми одновременно, например, «cp -r /usr /bin / / opt /bin / &». cp -r /usr / local /bin / / opt / local /bin / "- тогда ваша производительность почти наверняка снизится - возможно, немного (высокопроизводительный твердотельный диск, большие файлы в обеих операциях копирования) или может быть ТОННА (вращающийся диск, относительно небольшие файлы за одну или обе операции). Более совершенные операционные системы могут в некоторой степени снизить потери производительности - например, современные ядра Linux используют планировщик ввода / вывода CFQ (Completely Fair Queuing), который в некоторой степени "пакетно" блокирует операции для повышения эффективности - но вы все равно будете принимать хит производительности. В некоторых случаях попадание может быть ОГРОМНЫМ, так как вращающиеся диски ДРАСТИЧЕСКИ медленнее при случайном вводе / выводе, чем последовательный ввод / вывод (возможно, на два порядка или более медленнее, поэтому современные планировщики ввода / вывода стараются изо всех сил решить проблему) путем пакетирования и кэширования операций, чтобы минимизировать ненужные поиски).

TL; DR - запускать только одну операцию копирования за раз, независимо от того, сколько отдельных файлов включено в эту операцию, если вас беспокоит производительность.

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