Многопоточное копирование файлов по сети

Обновлено: 06.07.2024

RichCopy, инструмент от Microsoft, который лучше, чем robocopy-with-GUI, в настоящее время является предпочтительным инструментом для копирования файлов. Одна из его основных особенностей, отмеченная в статье TechNet, посвященной этому инструменту, заключается в том, что он параллельно копирует несколько файлов. По умолчанию одновременно копируются три файла, что хорошо видно в графическом интерфейсе: [Прогресс: xx% файла A, yy% файла B, . ]. В блогах есть много записей, в которых хвалят этот инструмент и утверждают, что он ускоряет процесс копирования.

Мой вопрос: почему этот метод повышает производительность? Насколько мне известно, при копировании файлов на современных компьютерных системах узким местом является HDD, а не процессор или сеть. Мое предположение состоит в том, что копирование нескольких файлов одновременно делает весь процесс медленнее, поскольку жесткому диску необходимо переключаться между разными файлами, а не просто последовательно передавать один файл. Поскольку RichCopy работает быстрее, в моих предположениях должна быть какая-то ошибка.

PS: Я долго думал, подходит ли для этого StackOverflow (речь идет о технике программирования) или SuperUser (речь об использовании инструмента). Я выбрал StackOverflow, так как меня интересуют конструктивные решения инструмента, а не его использование.

6 ответов 6

Инструмент использует усовершенствования аппаратного обеспечения, которые могут намного лучше оптимизировать несколько запросов на чтение и запись.

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

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

Наивное приложение "копировать несколько файлов" скопирует один файл, затем дождется его завершения, прежде чем копировать следующий.

Это будет означать, что отдельный файл НЕ МОЖЕТ быть скопирован быстрее, чем задержка сети, даже если он пустой (0 байт). Поскольку он, вероятно, выполняет несколько вызовов файлового сервера (открытие, запись, закрытие), это может в несколько раз превышать задержку.

Чтобы эффективно копировать файлы, вам нужен сервер и клиент, использующие нормальный протокол с конвейерной обработкой; то есть - клиент НЕ ждет сохранения первого файла перед отправкой следующего, и действительно, несколько или много файлов могут находиться "на проводе" одновременно.

Конечно, для этого потребуется специальный сервер, а не файловый сервер SMB (или аналогичный). Например, rsync делает это и очень хорошо копирует большое количество файлов, несмотря на однопоточность.

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

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

Передача файловых протоколов Microsoft очень плохо «разработана». Их реализации еще хуже. Я доказываю это тем, что SAMBA превосходит Windows на том же оборудовании. Параллельно задержки копирования, вызванные ожиданием подтверждений, уменьшаются за счет копирования других файлов в «мертвое время».

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

Это сетевой инструмент, поэтому узким местом является сеть, а не жесткий диск. Вплоть до (низкой) точки вы можете получить больше пропускной способности от TCP-соединения, используя несколько параллельных подключений. Это (а) распараллеливает рукопожатия TCP; (b) может лучше использовать произведение пропускной способности на задержку, если оно велико; и (c) не делает одно произвольно медленное соединение критическим путем, если по какой-то причине оно сталкивается с высоким RTT или частотой отказов.

Еще один способ сделать (б) — использовать огромный приемный буфер TCP-сокета, но это не всегда удобно.

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

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

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

Я думаю, что эти предположения слишком упрощены.

Во-первых, локальные сети работают на скорости 100 Мбит/1 Гбит бит. В сетях дальней связи максимальная скорость передачи данных меньше, чем максимальная скорость самого медленного канала.

Во-вторых, эффективная пропускная способность потока TCP/IP в Интернете часто зависит от времени, необходимого для передачи сообщений и подтверждений. Например, у меня 8+Мбит ссылка, но у меня скорость передачи данных при скачивании редко превышает 1-2Мбит в секунду, когда я качаю из США. Таким образом, если вы можете запускать несколько потоков параллельно, один поток может ожидать подтверждения, в то время как другой перекачивает пакеты. (Но если вы попытаетесь отправить слишком много, у вас начнутся перегрузки, тайм-ауты, отсрочки и снижение общей скорости передачи.)

Наконец, операционные системы хорошо справляются с выполнением множества задач ввода-вывода параллельно с другой работой. Если вы загружаете 2 или более файлов параллельно, операционная система может считывать/обрабатывать сетевые пакеты для одной загрузки и записывать на диск для другой. одновременно.

Когда вам нужно скопировать большое количество файлов на другой диск, Robocopy может значительно ускорить процесс благодаря своей многопоточной функции — вот как ее использовать.

 Многопоточность Windows 10 Robocopy

В Windows 10, когда вам нужно скопировать файлы на другой диск, вы обычно используете стандартный процесс выбора, копирования и вставки. Хотя это прекрасно работает, скорость становится узким местом, так как передача большого количества файлов может занять очень много времени.

В качестве альтернативы многие опытные пользователи используют Robocopy (надежное копирование файлов) — инструмент командной строки, встроенный в Windows 10, который предлагает больше возможностей для более быстрого перемещения данных в другое место. Одной из особенностей, которая делает Robocopy особенной (и которую часто упускают из виду), является ее многопоточная функция, которая позволяет копировать несколько файлов одновременно. Вместо того, чтобы использовать функцию копирования по одному файлу, встроенную в Проводник.

В этом руководстве вы научитесь использовать функцию многопоточного копирования в Robocopy, чтобы ускорить процесс переноса файлов и папок на другой диск в Windows 10.

Как использовать многопоточность в Robocopy

Чтобы использовать многопоточную функцию Robocopy для более быстрого копирования файлов и папок на другой диск, выполните следующие действия:

Откройте Пуск в Windows 10.

Выполните поиск командной строки, щелкните результат правой кнопкой мыши и выберите параметр "Запуск от имени администратора".

Введите следующую команду, чтобы скопировать файлы и папки на другой диск, и нажмите Enter:

В команде обязательно обновите исходный и конечный пути и параметры. Например, эта команда копирует данные с диска «C» на «D» и использует для копирования потоки «32»:

Разбивка команды Robocopy

Robocopy имеет множество функций, и в команде, показанной в этом руководстве, мы используем следующие параметры, чтобы сделать копирование надежным и быстрым.

    /S — Копировать подкаталоги, но не пустые.

Самый важный переключатель, на который следует обратить внимание в приведенной выше команде, — это /MT, который позволяет Robocopy копировать файлы в многопоточном режиме. Если вы не установите число рядом с переключателем /MT, по умолчанию будет 8, что означает, что Robocopy попытается скопировать восемь файлов одновременно. Однако Robocopy поддерживает от 1 до 128 потоков.

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

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

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

Pureinfotech рассчитывает на вашу поддержку. Вы можете внести свой вклад с помощью кнопки ниже, чтобы продолжать создавать отличный контент.

Мы можем получать комиссию за покупки по нашим ссылкам, чтобы продолжать предлагать бесплатный контент. Информация о политике конфиденциальности.

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

На самом деле RichCopy — это инструмент, разработанный в Microsoft, который использовался ими для внутреннего копирования файлов в течение нескольких лет, прежде чем он стал доступен для загрузки. Это многопоточная программа, позволяющая параллельно копировать множество файлов, и она имеет несколько функций, которые могут потребоваться от сторонней программы копирования, такие как пауза, возобновление, проверка, профили, фильтрация файлов/каталогов, несколько источников одновременно и полная команда. линия поддержки.

RichCopy

Тест копирования нескольких файлов 1: 223 секунды
Тест копирования ISO 2: 233 секунды
Тест копирования по сети 3: 64 секунды

<р>10. Суперкопир 2.3

SuperCopier — это утилита для переноса данных с открытым исходным кодом, которая по внешнему виду и функциональным возможностям очень похожа на UltraCopier, за исключением того, что эта утилита кажется более стабильной. Доступ к большинству действий осуществляется из системного трея, включая добавление новой задачи копирования, и он имеет стандартные кнопки паузы / возобновления / пропуска в дополнение к списку копирования и несколько параметров для устранения ошибок или конфликтов файлов. Размер буфера и скорость передачи также можно контролировать в окне конфигурации.

SuperCopier

Тест копирования нескольких файлов 1: 187 секунд
Тест копирования ISO 2: 92 секунды
Тест копирования по сети 3: 98 секунд

<р>11. Теракопи 2.27

TeraCopy — один из самых популярных инструментов, поскольку он может полностью заменить Windows Explorer в качестве обработчика копирования по умолчанию, а также добавить себя в контекстное меню. Он также может приостанавливать, пропускать и проверять скопированные файлы с помощью CRC32 в дополнение к перетаскиванию файлов в очередь копирования. Портативная версия доступна с помощью установщика, и пользователи Total Commander и Directory Opus могут интегрировать TeraCopy в эти файловые менеджеры.

TeraCopy

Тест копирования нескольких файлов 1: 147 секунд
Тест копирования ISO 2: 110 секунд
Тест копирования по сети 3: 102 секунды

<р>12. Ультракопир 0.3.1

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

UltraCopier

Тест копирования нескольких файлов 1: 184 секунды
Тест копирования ISO 2: 86 секунд
Тест копирования по сети 3: 92 секунды

<р>13. Неудержимый копир 5.2

Roadkil's Unstoppable Copier существует уже некоторое время и является популярным инструментом для копирования как можно большего объема данных с поврежденных или поврежденных дисков и дисков. Программа имеет ряд полезных функций, включая пакетный режим, который вы можете запустить из командной строки, ведение журнала, пункт контекстного меню, щелкнув правой кнопкой мыши, и несколько вариантов обработки потенциально поврежденных или поврежденных файлов. Также доступна портативная версия.

Неостанавливаемый копировальный аппарат

Тест копирования нескольких файлов 1: 435 секунд
Тест копирования ISO 2: 96 секунд
Тест копирования по сети 3: 175 секунд

<р>14. Копирование файлов WinMend 1.4.2.0

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

WinMend File Copy

Тест копирования нескольких файлов 1: 213 секунд
Тест копирования ISO 2: 195 секунд
Тест копирования по сети 3: 118 секунд

<р>15. WinRoboCopy 1.2

WinRoboCopy — это просто графический интерфейс для встроенной утилиты командной строки Robocopy, присутствующей в Windows Vista и более поздних версиях. Это не для новичков, потому что многие кнопки и флажки являются переключателями командной строки. Однако у него есть встроенный планировщик, перетаскивание в окно, простой редактор сценариев до и после и сохранение настроек (или Robojob) для разных профилей копирования.

RoboCopy

Тест копирования нескольких файлов 1: 162 секунды
Тест копирования ISO 2: 90 секунд
Тест копирования по сети 3: Не будет копировать по сети.

Мы протестировали 4 других инструмента для копирования файлов, и они не были включены по разным причинам; LD Move был в топ-4 или 5 в тесте копирования ISO, но постоянно вылетал в тестах 1 и 3.Аналогичный инструмент под названием QCopy также отлично выполнил копирование ISO, но после 20 минут копирования файлов меньшего размера мы сдались, потому что он сообщил, что осталось еще несколько часов, даже с сетевым копированием, для которого он был разработан. Через 20 минут SchizoCopy и Bit Copier работали со скоростью менее 1 % в минуту, что означало, что им потребовалось бы более полутора часов, чтобы завершить тест, который другие выполняли менее чем за 2 минуты.

Результаты и выводы

Здесь представлена ​​сводная таблица всех результатов каждого программного обеспечения в трех проведенных тестах. Чтобы добавить базовый уровень и для любопытства, Windows XP, 7 и 8 (обе 64-разрядные) также были включены, чтобы увидеть, как работает их передача Windows по умолчанию. Обратите внимание, что операционные системы чистые и со стандартными настройками, ничего не отключено, чтобы улучшить результаты, включая Защитника Windows. Зеленый - самый быстрый, за ним следует желтый на втором месте. Красный — самый медленный, оранжевый — второй по медленности.

результат теста копирования файла

Основные моменты:

  • В аналогичном тесте мы были удивлены и разочарованы, увидев столь низкую производительность Windows 8 после всех улучшений, которые Microsoft должна была внести в нее. Это в значительной степени объясняется тем, что антивирусная часть Security Essentials Защитника Windows сканирует каждый файл и замедляет все, поэтому вы получаете лучшую защиту из коробки, но более низкую скорость передачи. При быстром тестировании с выключенной функцией результат был сравним с Windows 7.
  • Возможно, самый популярный инструмент TeraCopy был действительно средним по скорости работы. Результат в тесте 1 на множественное копирование файлов был довольно хорошим, но в тестах 2 и 3 он был явно средним.
  • Если говорить о чистой скорости копирования, то вам действительно не обойтись без быстрого копирования. Он выиграл оба теста на копирование файлов и занял третье место в сетевом тесте.
  • Если вы не хотите копировать файлы по сети, Extreme Copy также является очень быстрым инструментом и уступает или не уступает Fast Copy в 2 из 3 тестов. Но при использовании в сети Extreme Copy неизменно оказывалась самым медленным программным обеспечением, прошедшим этот тест.
  • Хотя копирование с диска на диск было ужасным, RichCopy стал явным победителем в сетевом тесте и был разработан с учетом сетей с высокой задержкой или низкой пропускной способностью. Это то, на что вам может быть интересно обратить внимание, если вы выполняете много сетевых передач.
  • Поскольку это популярный инструмент, нам пришлось включить Unstoppable Copier, но результаты могут показаться немного неблагоприятными, поскольку он был одним из самых медленных в целом. Программа больше похожа на копировщик поврежденных файлов и не рассчитана на высокую скорость, поэтому она по-прежнему полезна, особенно портативная версия.

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

Хотя это и не окончательный тест, он, по крайней мере, показывает, насколько хорошо или плохо Windows и некоторые другие инструменты работают в распространенных сценариях, с которыми большинство из нас, вероятно, столкнется довольно часто. Эти тесты должны дать вам лучшее представление о том, какие бесплатные инструменты копирования больше подходят для ваших нужд…

У нас есть утилита, которая используется для загрузки файлов (и выполнения других операций с файлом) в общедоступное сетевое расположение.
Размер файла обычно варьируется от нескольких МБ до 500 МБ.
Поступило предложение о том, что нам, возможно, следует поддерживать многопоточность при загрузке файлов в общее расположение — не обязательно делать это в виде фрагментов байтов — каждый поток должен выбирать один файл и пытаться загрузить его.

Я не уверен, что многопоточность может ускорить такие операции ввода-вывода. Верна ли моя догадка?

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

Редактировать 2: решили провести несколько тестов с простым приложением, реализующим загрузку файлов через TPL. После этого анализа мы решим, продолжать или нет. Спасибо всем за оказанную помощь.

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

Вероятно, самое простое разумное решение — позволить операционной системе все обработать: SHFileOperation(FO_COPY) . Это дает вам все оптимизации, которые сотрудники Microsoft сочли разумными.

9 ответов 9

Это зависит от ограничивающего фактора, не так ли? Если узким местом является служебная программа, то, конечно, запуск более одной копии или использование большего количества потоков ускорит работу. Если ограничивающим фактором является сеть, то добавление нескольких экземпляров утилиты не поможет, поскольку вы все равно застрянете, перемещая не более X байтов в секунду. На самом деле это может повредить, потому что у вас есть дополнительные накладные расходы на вторую копию приложения. То же самое с disk-IO. Вы можете копировать только так быстро, как любая машина может читать и записывать на диск. Если он уже исчерпан, добавление копий не поможет.

Что вам нужно сделать, так это проверить, что является узким местом, и двигаться дальше.

Как многопоточность не поможет:

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

Как поможет многопоточность:

Однако многопоточность может помочь по-другому: имея всего два потока на клиенте, файловый ввод-вывод может быть десинхронизирован с сетевым вводом-выводом. Это означает, что клиент может одновременно передавать фрагмент файла и одновременно читать следующий фрагмент со своего диска. (Сервер уже способен одновременно записывать фрагмент файла на диск и получать следующий фрагмент из сети.) Это значительно ускорит процесс передачи, поскольку клиент, как правило, сохраняет либо сетевой канал, либо диск. канал (в зависимости от того, что медленнее) насыщен, вместо доступа к каждому за раз, с перерывами. Я полагаю, что каждая специализированная утилита копирования файлов должна быть достаточно умной, чтобы делать это, но я могу ошибаться, поэтому, если «Robocopy» рекламирует, что они делают многопоточное копирование, это нормально, продолжайте.

EDIT: я исправил часть, которую я написал о RAID.

EDIT: я исправил часть о необходимости двух потоков на сервере.

Думаю, самое главное здесь (как и почти везде) — это измерение. У вас нет никакого контроля над тем, как работают эти утилиты, поэтому вы узнаете, делаете ли вы это максимально быстро, только если измерите пропускную способность, чтобы увидеть, близка ли она к объявленной пропускной способности вашего диска или сети (в зависимости от того, что меньше). .)

Сводка Robocopy

Robocopy позволяет передавать файлы несколькими потоками. Но означает ли большее количество потоков более быструю передачу?

В моем предыдущем тесте я показал, что копирование/передача файлов с параметром /MT в целом выполняется быстрее, чем без использования этого параметра.

Это ставит нас перед вопросом: сколько потоков нам нужно? А значит больше потоков = больше мощности? Давайте узнаем.

Настройка

Для этого теста я использую ноутбук с процессором Intel Core i7-8550U. Это дает мне 4 ядра с 8 логическими процессорами. Файлы передаются на NAS через Ethernet-соединение.
Важное замечание: это не лабораторная установка. Это мой ежедневный компьютер и активный NAS. Таким образом, скорость передачи может быть выше или ниже в вашей среде, а на некоторые запуски могут влиять процессы или пользователи, использующие систему.
Также обратите внимание, что это основано на совершенно новой настройке. Таким образом, вы не можете сравнить результаты предыдущего теста с этим тестом (и вы увидите, что различий очень много).

По аналогии со старым тестом я подготовил 3 сценария объемом ~20 ГБ каждый:

  • 1 файл размером 21 474 836 480 байт.
  • 2 701 файла изображения размером 21 504 029 144 байта (7–8 МБ каждый)
  • 43 866 текстовых файлов размером 21 557 901 592 байт (400–600 КБ каждый)

Я использовал следующую команду для копирования файлов на NAS:
robocopy.exe путь-источник путь-назначение *.* /W:1 /R:1 /NFL /MT:n
/W и /R означают, что robocopy повторяет попытку чтения/записи файлов только один раз. Я проверял после каждого запуска, все ли файлы были переданы без проблем.
/NFL означает, что переданные файлы не будут перечислены. Сохраняет мою командную строку в чистоте.
/MT определяет количество потоков. Для прогонов с параметром «Без МТ» я полностью опустил этот параметр.

Каждый сценарий я запускал со следующим количеством потоков: без MT, 1, 2, 4, 8, 16, 32, 64, 128. И каждое из этих сочетаний по десять раз. Это означает в общей сложности 270 заданий копирования.

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

Сводка Robocopy

Результаты

Один файл

Результаты предыдущего теста были довольно очевидными: многопоточность сэкономила до 50 % времени выполнения.

Копирование одного файла с большим или меньшим количеством потоков дало довольно противоречивые результаты. Использование 4 потоков сделало весь процесс еще хуже. Но в целом продолжительность осталась более или менее неизменной.

 Многопоточность Robocopy — один файл

Многопоточность Robocopy — один файл

Файлы изображений

Первоначальный тест без /MT занимает около 280 секунд. Использование 1 нити только ухудшило результат. Вам нужно на 54 секунды (почти минуту!) дольше, чтобы скопировать файлы. После этого время выполнения значительно уменьшается: 8 потоков экономят больше минуты (280 против 215 секунд). А после 32 потоков результаты уменьшаются всего на несколько секунд.

 Многопоточность Robocopy — файлы изображений

Многопоточность Robocopy — файлы изображений

Текстовые файлы

Этот тест оказал наибольшее влияние на продолжительность с большим количеством потоков.

Использование без инструмента /MT заняло 1314 секунд, и снова стало хуже с 1 потоком. Но после этого продолжительность упала очень быстро: 4 потока сэкономили вам более 14 минут, а 128 потоков заняли еще на 100 секунд меньше!

 Многопоточность Robocopy — текстовые файлы

Многопоточность Robocopy — текстовые файлы

Резюме / Заключение

В целом рекомендуется использовать параметр /MT. Возможно, вы не выиграете от этого, но и не повредите (если только вы не используете только 1 поток. Плохая идея!). Особенно маленькие файлы в больших количествах копируются быстрее с большим количеством потоков. Для моей установки большее количество потоков работало почти всегда лучше, даже если я использовал больше потоков, чем мой ЦП мог обрабатывать одновременно.
Но имейте в виду, что это может повлиять на фоновые процессы или службы, если вы используете robocopy с большим количеством потоков на рабочем сервере!

7 мыслей о «Robocopy: работает ли /MT с большим количеством потоков быстрее?»

Спасибо за это! Мне нужно переместить 6 ТБ файлов на NAS, и мне было очень любопытно. Я ценю ваш научный подход

Я не удивлен, что указание 1 потока привело к ухудшению производительности, поскольку во всей технической документации, которую я читал, говорилось, что по умолчанию, т.е. без указания параметра MT, значение равно 8 потокам. Поэтому вы можете подумать, что все, что меньше 8 потоков, будет хуже. У меня возникает вопрос, как далеко вы можете зайти. Я где-то читал, что максимальное количество потоков связано с количеством ядер, но не могу вспомнить, физическое это или виртуальное.

Небольшое исправление: robocopy по умолчанию не работает в многопоточном режиме без флага /mt.

Эта документация, ссылающаяся на 8 потоков «по умолчанию», применима к запуску флага /mt без указания количества потоков.

"robocopy /mt" эквивалентно запуску "robocopy /mt:8"

Но «robocopy» без флага /mt не будет выполнять многопоточность.

Спасибо за информацию о коммутаторе MT. Очень полезно

Более субъективным тестом было бы узнать, сколько потоков требуется, чтобы администратор сети постучал в вашу дверь и сказал вам замедлить скорость 🙂

Какова максимальная емкость вашей сетевой карты? 1 ГБ? 10 ГБ? Как только вы насытите пропускную способность вашей сети, больше потоков на самом деле не сильно поможет. Это хорошо, но чтобы эта информация была более полезной, было бы неплохо увидеть пропускную способность вашей сети и загрузку ЦП во время каждого из тестов.

Читайте также: