Назад | Перейти на главную страницу

Есть ли смысл копировать файлы параллельно к одному монтированию NFS?

Вот пример:

( cp /tmp/one /nfs/one ) &
( cp /tmp/two /nfs/two ) &
( cp /tmp/three /nfs/three ) &
( cp /tmp/four /nfs/four ) &
( cp /tmp/five /nfs/five ) &
wait

Против загруженного сервера NFS, делает ли это что-нибудь выигрыш против

cp /tmp/one /nfs/one;
cp /tmp/two /nfs/two;
cp /tmp/three /nfs/three;
cp /tmp/four /nfs/four;
cp /tmp/five /nfs/five;

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

Размер рассматриваемых файлов составляет от 20 КБ до 2 МБ, не более 6 за раз, и они всегда копируются по одному и тому же полному пути (только с разными именами файлов). Некоторые из них происходят на массиве серверов (~ 50), и все они ссылаются на один и тот же небольшой набор подключений NFS.

распараллеливание, вероятно, не помогает. Однако это будет зависеть от нескольких вещей: скорости вашего локального диска, скорости вашей локальной сети и того же на сервере.

Если ваш локальный диск привязан при создании единственной копии, то нет. Это не поможет.

Если ваша локальная сеть привязана при выполнении единственной копии, то нет. Это не поможет.

Если сеть вашего NFS-сервера привязана к единственной копии, тогда нет. Это не поможет.

Если диск вашего NFS-сервера привязан при создании единственной копии, то ... ну, вы понимаете.

Лучший способ определить, будет ли это полезно или нет, - это рассчитать время для обеих операций, несколько раз, скажем, 10 запусков, чтобы получить что-то статистически полезное. По сути, если вы обнаружите, что не исчерпываете ни одну из этих четырех вышеперечисленных задач при выполнении одной копии, тогда вы мощь увидеть выигрыш в производительности при параллельном выполнении. Но это вам скажет только тестирование.

Поскольку некоторые файлы имеют размер 20 КБ, вы, вероятно, тратите часть своей пропускной способности на операции, отличные от фактической записи.

Есть отличный NFS -n вариант в iostat инструмент, который покажет вам, какой процент ваших операций ввода-вывода в секунду тратится на фактическое письмо.

# iostat -nmht 20

Filesystem:   ... rMB_svr/s  wMB_svr/s  ops/s  rops/s  wops/s
nfsserv:/share
              ... 0.00       17.5       9660   0.00    4508

Подождите несколько периодов (здесь каждый период составляет 20 секунд), чтобы iostat собрал статистику.

В этом примере только половина IOPS приходится на операции записи. Вы также можете видеть, что размер блока здесь 4k. Вероятно, вы могли бы улучшить производительность, перекрыв WOPS и не-WOPS и запустив свои процессы параллельно.

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