13

Сегодня я впервые почувствовал, как у меня тягостные мысли о гигабитных сетях, между моим настольным компьютером MacMini 2011 и Windows 8 Pro, подключенным через Cat.5e к Linksys WRT320N(спортивный dd-WRT).

Убедившись, что скорость линии в обеих системах составляла 1 Гбит / с, я приступил к копированию 2,4 ГБ MP4 с Mini на рабочий стол Win 8 (совместное использование SMB). Несмотря на удовлетворение 30-34 МБ / с, которое показала Teracopy (для меня это был правильный шаг по сравнению с 10 МБ / с), мне все же было любопытно узнать об этой огромной разнице в рекламируемой и реальной скорости.

Два часа работы в Google заставили меня поверить, что есть другие факторы, которые привели к снижению скорости, одним из которых является SMB. Так что просто ради этого я iPerf запустил обе системы и угадаю, что это показывает - около 875 Мбит / с в обеих системах!

Затем я наткнулся на эту небольшую информацию, после чего я отключил Teracopy и скопировал тот же файл через обычный копировальный аппарат Windows 8. 109 МБ / с. Расплавленные мозги :)

Что именно вызывает это? И можно ли включить такие скорости через Teracopy? Я действительно копаю дополнительные функции, которые есть у Teracopy, теперь я наверняка буду скучать по ним:D

6 ответов6

16

По гигабитному соединению Teracopy работает со скоростью 31 МБ / с, а в Windows 8 - со скоростью ~ 109 МБ в секунду?

Что именно вызывает это? И можно ли включить такие скорости через Teracopy? Я действительно копаю дополнительные функции, которые есть у Teracopy, теперь я наверняка буду скучать по ним:D

Два слова: проверка и кеш

Техническое объяснение

Это общая процедура для копирования файла с помощью проводника Windows:

  1. Считать порцию данных с исходного диска в память
  2. Отправить чанк через систему (ы)
  3. Запишите чанк на целевой диск
  4. Если это еще не сделано, вернитесь к шагу 1

Это кажется простым и достаточно коротким. С помощью этого алгоритма передачи каждый байт файла обрабатывается только два раза: одно чтение, одна запись.

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

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

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

Teracopy может делать две вещи, которые могут замедлить передачу файлов, что не делает Explorer:

  • Забудь про кеш и читай прямо с диска

  • Убедитесь, что пункт назначения был написан правильно

В отличие от Проводника, который проверяет только основные ошибки во время передачи, Teracopy может фактически проверить, что данные были правильно записаны на целевой диск, чтобы предотвратить повреждение данных, которое может произойти из-за проблем на носителе передачи (сеть / кабель диска / и т.д.).) или сам диск (плохой сектор и т. д.) Это означает, что он должен прочитать файл из места назначения, чтобы сравнить его с оригиналом.

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

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

  1. Прочитать чанк с исходного диска
  2. Хэш чанка прочитанного с исходного диска
  3. Отправить чанк через систему (ы)
  4. Запишите это на целевой диск
  5. Очистить кеши
  6. Прочитать чанк обратно с целевого диска
  7. Хешировать чанк с диска назначения
  8. Сравните хэши
  9. Определите следующий шаг
    • Если хэши не совпадают, выведите ошибку и предложите пользователю выполнить действие
    • Если хэши совпадают и не завершены, вернитесь к шагу 1

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

Согласно скриншоту ниже, TeraCopy выполняет проверку после передачи файлов, а не во время. Это означает, что вместо этого он использует оптимизированный для CPU/RAM алгоритм передачи:

  1. Прочитать чанк с исходного диска
  2. Отправить чанк через систему (ы)
  3. Запишите это на целевой диск
  4. Если это еще не сделано, вернитесь к шагу 1
  5. Копирование завершено, поэтому очистите кэши и проверяйте
  6. Прочитать чанк с исходного диска
  7. Хешировать чанк с диска назначения
  8. Прочитать кусок с целевого диска
  9. Хешировать чанк с диска назначения
  10. Сравните хэши
  11. Определите следующий шаг
    • Если хэши не совпадают, выведите ошибку и предложите пользователю выполнить действие
    • Если хэши совпадают и не завершены, вернитесь к шагу 6

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

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

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

заявка

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

Тем не менее, давайте сделаем краткий расчет, используя ваши числа:

  • Локальная передача файлов: 875 Мбит / с (т. Е. Скорость диска)
  • Скорость сети: 1 Гбит / с = 119,21 Мбит / с
  • Копирование через проводник Windows: 109 МБ / с
  • Копирование через TeraCopy: 34 Мбит / с

Сразу же мы видим, что передача файлов в Explorer практически увеличивает пропускную способность вашей сети. Канал 1 Гбит / с равен 1 000 000 000 бит в секунду, что в двоичных единицах байтов составляет 119 МБ / с. Explorer работает со скоростью 109 МБ / с, а оставшиеся 10 МБ / с (что было довольно забавно, было вашим предыдущим максимумом :^Þ), легко можно объяснить издержками, фоновой загрузкой и фрагментацией.

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

Теперь для TeraCopy. Кажется, что TeraCopy набирает почти одну треть скорости Explorer.

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

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

Если вы хотите передать почти 10 ГБ, то вы также можете просто попробовать изменить настройки и повторить передачу для каждой из четырех перестановок и записать скорости, которые вы получаете (для безопасности, закажите, чтобы кэш был между прогонами: V+C+, V+C-, V-C+, V-C-).


1

Я подозреваю, что это связано с тем, что Windows 8 использует SMB v. 3, и я сомневаюсь, что teracopy совместим с SMB v.3 и по умолчанию возвращается к SMB 2. Просто предположение...

0

Я не могу дать вам 100% ответ на ваш вопрос, но могу добавить еще, что может помочь.
Моя причина перехода на Teracopy была связана с тем, что Windows должна "вычислить" все перед тем, как что-либо делать, и сам этот расчет иногда может заморозить весь процесс. В других публикациях упоминалось, что тип копируемого файла имел значение в Windows, я не могу сказать наверняка в Teracopy, так как я не видел, чтобы этот файл появлялся. Но мои собственные попытки до сих пор оставили мне меньше, чем вы получаете в любом случае. Я просто копирую общие типы файлов, а не файлы мультимедиа (т.е. фото / видео).

Мои тесты прошли путь от сетевого хранилища Seagate 3 ТБ с доступом к сетевому адаптеру GB в сети 100% ГБ до системы GB. Лучший вариант, 14 Гбит / с. Переход Windows с NAS на систему HD получил 12,4 Гбит / с, и для его запуска потребовалось немного больше времени. Ничто не приблизилось к вашим 30-34 Мбит / с, намного меньше, чем 109 Мбит / с.

Частично это связано с управлением потоком данных даже в сети GB. Я был бы чрезвычайно счастлив, если бы я мог получить 34 ГБ / с, еще счастливее, если бы я мог получить 109 ГБ / с. Если вы найдете более быстрый копировальный файл, пожалуйста, напишите! :)

0

Это помогло мне решить эту проблему между сетевыми платами Intel для чипсетов.

TOE (TCP Offload Engine) был введен в Windows в 2003 году. Его ужасные результаты были связаны с сетевыми картами Broadcom, которые использовались на большинстве серверов в то время, что приводило к повреждению данных, если вы "выгружали" контрольную сумму. Похоже, что поставщики сетевых карт все еще не правы, и это не просто Broadcom. Разгрузка сети почти всегда медленнее и, по-видимому, также более подвержена ошибкам, чем выполнение всего этого в программном обеспечении. Я бы зашел в настройки вашего адаптера и отключил бы любую аппаратную разгрузку любого рода.

0

Ранее у меня была идентичная проблема с медленными переводами через TeraCopy. Celeron J1800 со встроенной сетевой картой Realtek Gigabit 8111C. Я получал только 35-45 мегабайт в секунду. Довольно расстраивает!

Закончил быть плохим драйвером карты локальной сети.

Установил windows с нуля с OEM драйверами. Также я сделал следующее:

В разделе «Диспетчер устройств» / «Карта LAN» / «Дополнительные настройки» / «Отключить все, кроме управления потоком»

В разделе «Функции Windows» отключите удаленное разностное сжатие.

Сейчас средняя скорость составляет 60-70 Мбит / с

-1

Я также провел несколько тестов с Teracopy 2.3 final и моей Synology Diskstation. На самом деле процесс копирования слишком медленный. Я скопировал файлы со средней скоростью около 40 МБ / с.

Оригинальная программа для копирования файлов Windows 8 работает быстрее, чем Teracopy!

Сейчас я пробую Ultracopier, моя текущая скорость около 80 МБ / с, намного быстрее, чем у Teracopy. Мне нравится Teracopy, но я думаю, что у Teracopy есть проблема с сетевым копированием.

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

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