Я делаю большие резервные копии, которые сильно нагружают мой сервер при использовании tar/gzip
. У меня есть настройка задачи как cronjob, которая обращается к моему сценарию, который обрабатывает резервное копирование. я знаю это nice
мог бы помочь в этой ситуации, но я немного не уверен, как правильно его использовать.
В моем скрипте есть следующие команды:
tar -cf
gzip -9
Мог бы я просто добавить nice
команда перед ним как так, чтобы уменьшить приоритет ?:
nice -n 13 tar -cf
nice -n 13 gzip -9
Есть ли предостережения при использовании этого подхода? Спасибо.
Есть предостережения, на которые следует обратить внимание. Поскольку в вопросе не указывается точная ОС (но подразумевается, что это некоторая Unix-подобная ОС), список предостережений будет зависеть от конкретной ОС и версии. Наиболее важные из них:
nice
предназначен для того, чтобы влиять на количество процессорного времени, отведенного процессу, но не на объем оперативной памяти или емкости ввода-вывода. Таким образом, вместо ожидаемого эффекта другие возможные результаты включают:
nice
не имеет никакого эффекта, потому что процесс резервного копирования был связан с вводом-выводом с самого начала, а планирование ввода-вывода не зависит от nice
. Если ОС является последней версией Linux, на планирование ввода-вывода могут или не могут влиять nice
в зависимости от того, что ionice
настройка уже используется.Более того, даже точное влияние на планирование ЦП во многом зависит от конкретной операционной системы и настроек. Некоторые ядра имеют настройки, которые позволяют процессу работать с более высоким или более низким приоритетом, чем те, которые доступны с помощью nice
команда.
Одно предостережение, с которым я столкнулся сам, похоже, относится к Ubuntu 14.04. В конфигурации по умолчанию он группирует процессы для целей планирования. Затем каждая группа получает изрядную долю процессорного времени. nice
влияет только на то, как процессорное время распределяется между процессами внутри такой группы, но не на то, сколько времени выделяется каждой группе. Для меня это полностью подорвало использование nice
, потому что процесс с низким приоритетом может отнимать время ЦП у процессов в разных группах.
Я бы выбрал другой подход ...
Нет, я бы не стал возиться с nice
для этого. И gzip
не так уж и здорово. Кроме того, вы используете gzip -9
что дает максимальную степень сжатия за счет процессора. Вам действительно нужен такой уровень сжатия по сравнению с уровнем по умолчанию (уровень 6)?
Ваша система так сильно нагружается, если вы не использовать gzip уровня 9?
Каковы характеристики вашего сервера? Сколько у вас ЦП и какого типа? cat /proc/cpuinfo
Если у вас несколько процессоров, не могли бы вы использовать pigz
вместо? Он многопоточный, немного более эффективен и может намного лучше использовать ресурсы вашей системы.
Некоторые тесты с файлом 1,8 ГБ:
Стандарт gzip
(-6 уровень сжатия)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m18.335s
Compressed file size: 85M CHL0001.TXT.gz
Decompression time: 0m6.300s
gzip -9 (максимальное сжатие)
Original file size: 1.8G CHL0001.TXT
Compression time: 1m29.432s
Compressed file size: 75M CHL0001.TXT.gz
Decompression time: 0m6.325s
pigz (-6 уровень сжатия)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m1.878s
Compressed file size: 85M CHL0001.TXT.gz
Decompression time: 0m2.506s
pigz -9 (максимальное сжатие, многопоточный)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m5.611s
Compressed file size: 76M CHL0001.TXT.gz
Decompression time: 0m2.489s
Заключение: стоит ли дополнительный бит сжатия значительно большего времени, потраченного на сжатие данных?
Я понимаю, что это отклоняется от исходного вопроса, но он остается в теме эффективности (вы упоминаете «огромные нагрузки на мой сервер») ...
Я делаю вывод (или предполагаю!) Из того, что вы опубликовали, что вы создаете tar
содержащий набор файлов, а затем gzip
- результат. Вы можете сэкономить много дискового ввода-вывода (и временного требования к пространству), подключив один напрямую к другому:
tar cf - /path/to/stuff | gzip > archive.tar.gz
Вы можете обнаружить, что это существенно влияет на общее затраченное время.