Чрезвычайно низкая скорость массового копирования файлов на общих ресурсах AFP в Йосемити.

Немного информации об оборудовании: я управляю лабораторией 3D-графики, состоящей примерно из дюжины клиентов iMac под управлением 10.10.5 и Mini под управлением сервера 10.10.2 (Server.app v4.0.3/сборка 14S350). Mini находится в корпусе Sonnet xMac, который соединяет его через Thunderbolt с RAID-контроллером Areca ARC-1883X SAS и картой Ethernet SmallTree P2E10G-1-T 10Gb. Areca управляет двумя RAID-массивами SAS емкостью 40 ТБ, а карта SmallTree подключает Mini через Cat6a к коммутатору NetGear ProSafe XS708E 10GbE. Все компьютеры iMac подключены через 1GbE Cat6 к коммутатору HP 1810-48G, который, в свою очередь, подключен по магистрали 6Gb к коммутатору NetGear.

Мои художники столкнулись с проблемой массовых копий файлов между каталогами общего ресурса AFP на Mini, с которыми они работают. Они часто отображают последовательности из сотен или тысяч изображений, и после того, как эти изображения будут отображены в их выходной папке, их нужно скопировать во второй каталог, чтобы наши композиторы могли работать с ними. Операция копирования абсолютно ПОЛЗИТ. Один пример, полученный полчаса назад: 861 файл .exr общим размером около 350 МБ занял около 3 часов, прежде чем мы убили его на ~ 75% и вместо этого сделали это с рабочего стола сервера через совместное использование экрана примерно за 30 секунд (но наши художники делают это десятки раз в день и, конечно, нельзя получить доступ к совместному использованию экрана с сервером, так что это не решение). Они не всегда так висят, но мы сталкиваемся с таким случаем по крайней мере раз в день, и все массовые копии идут намного медленнее, чем должны. Это происходит только с большими группами файлов: мы можем практически мгновенно скопировать один файл размером 300 МБ между каталогами.

Я провел несколько тестов, и, похоже, это больше проблема клиента Yosemite. Я запускаю Mountain Lion на своем собственном ноутбуке и провел несколько тестов в версиях 10.8 и 10.10 по Wi-Fi и проводному Ethernet, а также в локальном и сетевом профилях, поскольку наши художники входят в сетевые учетные записи. Некоторые ограниченные результаты для 300 файлов .exr общим размером 133 МБ:

10.8 / Wi-Fi / Локальный профиль: копирование 300 элементов за 53 секунды

10.8 / Проводной / Локальный профиль: копирование 300 элементов за 47 секунд

10.10 / Проводной / Локальный профиль: копирование 300 элементов за 223 секунды

10.10 / Проводной / Сетевой профиль: копирование 300 элементов за 263 секунды

Сетевые учетные записи немного медленнее, но большая вопиющая разница, похоже, заключается в клиенте 10.8 и клиенте 10.10. Опять же, проблема заключается в длинных списках файлов, а не в отдельных монолитных файлах. Наша скорость прямого соединения Ethernet с сервером просто фантастическая: в Blackmagic Speed ​​Test 10.8 и 10.10 скорость чтения и записи на сервер составляет 110 МБ/с+, и лишь немного медленнее на Wi-Fi Wireless N. Это становится проблемой только тогда, когда нам нужно копировать длинные списки файлов, что нам нужно делать много раз в день.

ЛЮБАЯ помощь, чтобы выяснить, что здесь происходит не так, будет высоко оценена! На данный момент это сводит нас с ума и убивает производительность. Рад опубликовать любые запрошенные журналы или попробовать любые предлагаемые системные настройки. Спасибо!

Это потрясающий уровень детализации. Я посмотрю, есть ли у меня какие-либо идеи, но мне интересно, поможет ли вам запрос в AppleCare инженерной помощи в получении журналов. Если это воспроизводимо при перезагрузке, они будут очень заинтересованы в снижении скорости, как вы сообщаете. Возможно, вы сможете выяснить, что происходит с TCPDUMP между отзывчивой копией и медленной.
Пожалуйста, добавьте версию Server.app на Mini (Server) 10.10.2!
Server.app v4.0.3/сборка 14S350 — добавлено в справочную информацию вверху.

Ответы (1)

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

  1. Настройте клиент тестового примера без запуска сторонних приложений при входе в систему. Перезагрузите этот клиент и подключите общий сетевой ресурс. Выполнить sudo sysdiagnose Finderперед началом копирования.
  2. Запустите трассировку tcp на сетевом адаптере, в который вы скопируете файл. Если вы не подключаетесь через сеть en0, используйте Системную информацию, чтобы увидеть BSD-имя сетевого подключения.
  3. После запуска трассировки запустите копию рассматриваемого файла.
  4. Через 3 минуты (или меньше, если передача выполняется раньше) нажмите Control+C, чтобы завершить захват.
  5. Запустить через секунду sudo sysdiagnose Finderпосле захвата сети

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

sudo sysdiagnose
sudo /Applications/Server.app/Contents/ServerRoot/usr/sbin/serverdiagnose

След:

sudo tcpdump -i en0 -s 0 -B 524288 -w ~/Desktop/AFPslow.pcap

введите описание изображения здесь

Теперь я думаю, что мы на самом деле на что-то. Я не хочу публиковать весь дамп, потому что он весит 100 МБ (хотя я могу опубликовать дополнительную информацию, если вам нужно), но около ПОЛОВИНЫ пакетов не соответствуют контрольной сумме! Я не знаю точно, нормально ли это, но я не могу представить, что это так. Содержимое этих неудавшихся пакетов контрольной суммы немного отличается, но многие из них содержат «[имя файла одного из копируемых файлов] #com.apple.metadata:_kMDItemUserTags» в полезной нагрузке... Предлагая, возможно, неверные метаданные?
Кроме того, вы можете укоротить окно. Мои параметры дампа, скорее всего, будут содержать информацию о файле и, возможно, ключи для учетных данных. Но массовая фильтрация типа сообщения покажет вам ошибку. Я тоже попробую воспроизвести это @infinitesunrise.