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

tar gzip замедляет сервер

У меня есть сценарий резервного копирования, который:

  1. сжать некоторые файлы
  2. генерировать md5
  3. скопируйте сжатый файл на другой сервер.
  4. другой сервер заканчивает сравнение MD5 (чтобы найти ошибки копирования).

Вот основной сценарий:

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?