Я предлагаю вам научиться использовать команду renice. Вы можете сделать то же самое с помощью команды:
renice 19 -p <pid1 pid2 ... pidN>
В локальном случае, запущенном с использованием / bin / sh varient, используйте:
renice 19 -p $$
это изменит хороший уровень текущей оболочки на уровень 19.
{{1 }}Думаю, мы придем к выводу, что это аппаратная проблема. Как оказалось, этот конкретный сервер был поставлен без промежуточного узла вентилятора. Вентилятор необходим в конфигурации сервера, поскольку он содержит кожух, который, помимо других частей, препятствует потоку воздуха от карты RAID. Для решения этой проблемы нужен вентилятор. Это может объяснить, почему скорость передачи постепенно замедлялась. Даже в простое карта заметно нагревалась. С тех пор мы установили промежуточный блок вентиляторов, и скорость передачи была довольно стабильной на уровне 30 -40 МБ/с с пиками 120 МБ/с в гигабитной сети. Хотел бы я проверить на 10G, но больше не имею доступа.
Заключение о том, что большое количество маленьких файлов является причиной низкой скорости передачи по rsync.
В этом случае будет более эффективным потоковый подход, например, использование ssh + tar
Обновление :На самом деле, в моем случае это неверно (и не решает проблему ). Я запускал эти тесты в каталогах, которые использовал в качестве теста. Было указано, что они могут быть в кеше страниц, поэтому я обязательно проверил еще раз в новом каталоге, и скорость резко упала.
У вас много ядер и достаточная пропускная способность сети, поэтому я предлагаю вам распараллелить требование. Несколько rsync
процессов, каждый из которых обрабатывает свою часть набора файлов.
Две точки:
top - 18:04:39 up 113 days, 3:47, 3 users, load average: 0,50, 0,59, 0,62 Tâches: 489 total, 4 en cours, 485 en veille, 0 arrêté, 0 zombie %Cpu(s): 40,7 ut, 14,5 sy, 0,0 ni, 36,3 id, 3,4 wa, 0,0 hi, 5,1 si, 0,0 st MiB Mem : 7976,3 total, 212,8 libr, 2717,9 util, 5045,7 tamp/cache MiB Éch : 8583,0 total, 8381,2 libr, 201,8 util. 4598,0 dispo Mem PID UTIL. PR NI VIRT RES SHR S %CPU %MEM TEMPS+ COM. 27262 emmanuel 20 0 33956 7924 4204 R 58,3 0,1 0:21.51 ssh 31185 emmanuel 20 0 52164 3208 2140 S 35,1 0,0 0:05.03 rsync 27249 emmanuel 20 0 1340140 158896 45432 S 8,9 1,9 4:40.63 python2 52 root 20 0 0 0 0 R 6,3 0,0 9:51.41 kswapd0 25149 root 20 0 324716 126192 63120 S 2,0 1,5 25:26.24 Xorg 25679 emmanuel 20 0 2555068 774108 100220 S 1,3 9,5 9:28.86 WebExtensions
Обратите внимание, что rsync+ssh почти полностью загружает один ЦП?
Как повысить производительность:
Для начальной копии не используйте rsync . Серьезно. rsync отлично подходит для синхронизации данных. Но для копии в сторону и пустой цели это отстой. Это намного, намного медленнее, чем старый добрый cp . Итак, мой совет::используйте cp поверх NFS , и вы максимально загрузите свое оборудование (, какая бы часть ни была самой медленной, целевой RAID или сеть ).
На целевом сервере отредактируйте /etc/exports:
/mnt/raid *(rw,async,no_root_squash,no_subtree_check)
Запустить NFS:systemctl restart nfs-kernel-server
mount <server IP>:/mnt/raid /mnt/target
Затем скопируйте все:
cp -av /mnt/source /mnt/target
Предпочтительно использовать экран или tmux для запуска вашей копии и предотвращения несчастных случаев (потеря соединения ssh и т. д. ).
На целевой машине запустите сервер netcat :
cd /mnt/target ; nc -l -p 45724 | tar x
На исходной стороне запустите это:
cd /mnt/source; tar cf - * | nc <target IP> 45724