Ограничение количества файлов для параллельного копирования

Я запускаю команду gsutil cp параллельно (с параметром -m) в каталоге с 25 файлами json по 4 ГБ (которые я также сжимаю с параметром -z).

gsutil -m cp -z json -R dir_with_4g_chunks gs://my_bucket/

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

Copying file://dir_with_4g_chunks/a_4g_chunk [Content-Type=application/octet-stream]...

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

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

Есть ли ограничение на количество файлов, которые я могу загрузить с параметром -m? Можно ли это настроить в файле конфигурации boto?


person Seb    schedule 04.06.2013    source источник


Ответы (2)


Из описания параметра -m:

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

Если вы посмотрите на свой файл .boto, вы должны увидеть этот сгенерированный комментарий:

# 'parallel_process_count' and 'parallel_thread_count' specify the number
# of OS processes and Python threads, respectively, to use when executing
# operations in parallel. The default settings should work well as configured,
# however, to enhance performance for transfers involving large numbers of
# files, you may experiment with hand tuning these values to optimize
# performance for your particular system configuration.
# MacOS and Windows users should see
# https://github.com/GoogleCloudPlatform/gsutil/issues/77 before attempting
# to experiment with these values.
#parallel_process_count = 12
#parallel_thread_count = 10

Я предполагаю, что вы используете Windows или Mac, потому что значения по умолчанию для машин, отличных от Linux, — 24 потока и 1 процесс. Это приведет к копированию сначала 24 ваших файлов, а затем 1 последнего файла. Попробуйте поэкспериментировать с увеличением этих значений, чтобы передать все 25 файлов одновременно.

person jterrace    schedule 04.06.2013

Мне не удалось найти файл .boto на моем Mac (согласно ответу jterrace выше), вместо этого я указал эти значения с помощью переключателя -o:

gsutil -m -o "Boto:parallel_thread_count=4" cp directory1/* gs://my-bucket/

Это, казалось, контролировало скорость передачи.

person IanGSY    schedule 04.03.2015