Как распределить вычисления `tar czf `на более длительное время?

С помощью теста GNU find -regexвы можете использовать:

find /application/DB/presto/ -regex '/application/DB/presto/presto-server-\([0-9]*\.\)?[0-9]+'

... для этого требуется начальный путь, а затем числовая часть:

  • опционально :первые цифры и точка
  • одна или несколько цифр

Это соответствует всем и только вашим «правильным» примерам и ни одному из ваших «недопустимых» примеров.

Измените [0-9]*на [0-9]+, если вы хотите, чтобы перед любым начальным периодом требовалась цифра; разница между:

/application/DB/presto/presto-server-0.936

и

/application/DB/presto/presto-server-.936

1
28.06.2016, 20:41
3 ответа

Команда

tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/

аналогична этой:

tar cf - $HOME/ | gzip > /media/masi/ntfsDisc/backup_home.tar.gz

Когда вы запускали top , он показал, что gzip использует около 100% одного потока процессора. Программное обеспечение NTFS FUSE также использует ненулевое количество ЦП, но, по сути, вы ограничены ЦП из-за этого gzip. Ваша средняя нагрузка составляет около 2, и с 2 ядрами по 2 потока каждое вы не перегружаете свою систему.

Но если ваша цель - уменьшить максимальное использование ЦП (поскольку вентиляторы работают на максимуме), один из простых способов сделать это - снизить скорость передачи данных в gzip.

Вы выполнили тест

tar cf - $HOME/ | pv | gzip > /media/masi/ntfsDisc/testbackup.tar.gz

, и pv указал, что пиковая скорость передачи в gzip составляла 20 МБ / с. Я бы порекомендовал сократить это вдвое, задав для pv параметр -L 10m .

tar cf - $HOME/ | pv -L 10m | gzip > /media/masi/ntfsDisc/testbackup.tar.gz

Попробуйте изменить этот предел скорости выше или ниже, пока не получите желаемую загрузку ЦП.

1
27.01.2020, 23:14

Один из подходов заключается в использовании параллельного сжатия, чтобы использовать все ядра вашей системы и, следовательно, уменьшить время сжатия. Это не снизит нагрузку на вашу систему, но она будет загружена в течение наименьшего количества времени!

Вы можете найти, как это сделать, например, в этом Q/A : utilizing-multi-core-for-targzip-bzip-compression-decompression

Например:

tar cf - paths-to-archive | pigz > archive.tar.gz
2
27.01.2020, 23:14

Прежде всего, общее энергопотребление будет таким же или даже больше, если искусственно замедлить процесс резервного копирования. Просто потому, что общее количество операций одинаково, и если процесс занимает больше времени, процессор потребляет меньше пиковой мощности, но в течение более длительного времени. Например, если процесс выполняется в течение 10 с при пиковой мощности 200 Вт, то будет потребляться 10 с*200 Вт=2000 Дж, если процесс выполняется в течение 100 с при мощности 30 Вт, то будет потребляться 100 с*30 Вт=3000 Дж.

Если вы в основном хотите улучшить отзывчивость вашего компьютера во время процесса, вы можете попробовать увеличить "приятность" процесса (nice понизит приоритет процессора, освобождая мощность процессора для других процессов, ionice понизит приоритет диска, освобождая дисковый i/o для других процессов):

sudo nice -n19 ionice -c2 -n7 tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/

Это понизит приоритет процесса, чтобы он не замедлял другие процессы, пока вы работаете на машине. В остальном процесс все равно будет пытаться завершить работу как можно быстрее и заставит ваши вентиляторы вращаться.

Если вы действительно хотите/необходимо снизить пиковое энергопотребление (потому что система перегревается или вентиляторы будят вас по ночам), вы можете попробовать один из следующих подходов:

Более сложным решением будет сжатие не всего сразу, а по каталогам (поместите этот код в файл backup_home. sh, сделать его исполняемым и запустить через sudo backup_home.sh):

#!/bin/bash
OLDIFS=$IFS
IFS='
'
for dir in $(ls -d1 $HOME/*); do
   nice tar rf /media/masi/ntfsDisc/backup_home.tar $HOME/
   sleep 10
done;
gzip /media/masi/ntfsDisc/backup_home.tar
IFS=$OLDIFS

Заметьте, однако, что общее энергопотребление не уменьшится, оно просто распределится на большее время (увеличивается вероятность того, что файл будет изменен во время резервного копирования. Также это не приведет к равномерному распределению нагрузки, поскольку, скорее всего, не все папки имеют одинаковый размер. Я настоятельно рекомендую вам использовать nice и оставить остальное на усмотрение системы.

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

3
27.01.2020, 23:14

Теги

Похожие вопросы