У меня есть сценарий резервного копирования, который:
Вот основной сценарий:
nice -n 15 tar -czvf $BKP $PATH_BKP/*.* \
| xargs -I '{}' sh -c "test -f '{}' && md5sum '{}'" \
| tee $MD5
scp -l 80000 $BKP $SCP_BKP
scp $MD5 $SCP_BKP
Эта процедура загрузила процессор на 90% при использовании процедуры gzip, что замедлило рабочий сервер. Я пытался добавить nice -n 15
но сервер все равно зависает.
Я уже читал 1 но разговор мне не помог.
Как лучше всего решить эту проблему? Я открыт для новых архитектур / решений :)
Если вы используете nice, вы меняете приоритет, но это окажет заметное влияние только в том случае, если загрузка ЦП близка к 100%.
В вашем случае сервер становится медленным не из-за использования ЦП, а из-за ввода-вывода в хранилище. Использовать ionice
для изменения приоритета ввода / вывода и сохранения nice
для приоритета ЦП.
Вы можете попробовать использовать chrt для изменения политики планирования программы tar на SCHED_BATCH.
Согласно странице руководства sched_setscheduler (2)
SCHED_BATCH: планирование пакетных процессов (начиная с Linux 2.6.16). SCHED_BATCH может использоваться только со статическим приоритетом 0. Эта политика похожа на SCHED_OTHER в том, что она планирует процесс в соответствии с его динамическим приоритетом (на основе значения nice). Разница в том, что эта политика заставляет планировщик всегда предполагать, что процесс интенсивно загружает процессор. Следовательно, планировщик будет применять небольшой штраф планирования в отношении поведения пробуждения, так что этот процесс будет несколько неблагоприятным при принятии решений о планировании.
This policy is useful for workloads that are noninteractive, but do not want to lower their nice value, and for workloads that want a determin‐ istic scheduling policy without interactivity causing extra preemptions (between the workload's tasks).
Если вам все еще не повезло, вы можете попробовать SCHED_IDLE. Это заставит эту программу проснуться только в том случае, если больше нечего будет запускать.
Это изменяет строку tar на это для партии:
nice -n 15 chrt -b tar -czvf $BKP $PATH_BKP/*.* \
Вы пробовали использовать свинья вместо gzip?