Мои системы подвергаются большой нагрузке, когда я работаю
sudo tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/
Вентиляторы работают на максимум и т. д. Хотелось бы найти лучший баланс между вычислением и энергопотреблением. Я не могу достаточно хорошо контролировать процесс. Вы не можете замедлить его во время вычислений, когда работаете таким образом. Интуиция: добавить немного сна, но как. Мне бы xargs
тоже очень хотелось иметь подход, чтобы сравнить его с «готовыми» продуктами. Мои топы
Я делаю это
top
в состоянии покояtop - 09:34:34 up 19:14, 1 user, load average: 0.52, 0.42, 0.24 Tasks: 236 total, 1 running, 235 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.5 us, 1.1 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s KiB Mem : 8115460 total, 257036 free, 3006452 used, 4851972 buff/cache KiB Swap: 8326140 total, 8321852 free, 4288 used. 4369448 avail Mem
Я делаю
top
1 минуту послеnice tar czf ...
top - 09:48:49 up 19:28, 1 user, load average: 1.63, 0.99, 0.62 Tasks: 244 total, 2 running, 242 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.4 us, 0.9 sy, 24.1 ni, 73.2 id, 0.3 wa, 0.0 hi, 0.1 si, 0.0 s KiB Mem : 8115460 total, 127644 free, 3237648 used, 4750168 buff/cache KiB Swap: 8326140 total, 8321868 free, 4272 used. 4092404 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28831 root 30 10 4640 1600 1316 R 97.7 0.0 1:43.24 gzip 9573 root 20 0 21196 2860 1772 S 2.3 0.0 13:16.29 mount.nt+ 842 root 20 0 380136 63780 48568 S 1.7 0.8 23:57.16 Xorg
Я делаю
top
через 10 минут после началаtop - 10:00:33 up 19:40, 1 user, load average: 1.98, 2.13, 1.50 Tasks: 253 total, 2 running, 251 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.6 us, 2.8 sy, 21.4 ni, 73.0 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 s KiB Mem : 8115460 total, 130408 free, 4432384 used, 3552668 buff/cache KiB Swap: 8326140 total, 8321948 free, 4192 used. 2837616 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28831 root 30 10 4640 1600 1316 R 87.0 0.0 11:49.08 gzip 9573 root 20 0 21196 2860 1772 S 13.6 0.0 14:45.84 mount.nt+ 842 root 20 0 384936 66304 51092 S 2.0 0.8 24:18.44 Xorg 28830 root 30 10 37584 3096 2688 S 1.3 0.0 0:14.50 tar 1674
Мой PVtar cf - $HOME/ | pv | gzip > media/masi/ntfsDisc/testbackup.tar.gz
- в 1 мин, 13 - 22 МБ/с; в 2 мин, 14 - 22 МБ/с; в 3 мин, 5 - 7 МБ/с; в 4 мин, 5 - 22 МБ/с; в 5 мин, 15 - 17 МБ/с; в 6 мин, 8 - 24 МБ/с; в 7 мин, 16 - 20 МБ/с
- на 19 минуте, 18-21 МБ/с и вентиляторы работают медленно/постоянно, так что вы можете их услышать
Система: Ubuntu 16.04 64 бит
Оборудование: Macbook Air 2013-середина
решение1
Прежде всего, общее энергопотребление, скорее всего, будет таким же или больше, если вы искусственно замедлите процесс резервного копирования. Просто потому, что общее количество операций одинаково, и если процесс занимает больше времени, процессор потребляет меньше пиковой мощности, но в течение большего времени. Например, если процесс выполняется в течение 10 с при пиковой мощности 200 Вт, он потребит 10 с*200 Вт=2000 Дж, если процесс выполняется в течение 100 с при 30 Вт, он потребит 100 с*30 Вт=3000 Дж.
Если вы в основном хотите улучшить отзывчивость вашего компьютера во время процесса, вы можете попробовать увеличить niceness процесса (nice снизит приоритет процессора, освободив мощность процессора для других процессов, ionice снизит приоритет диска, освободив дисковый ввод-вывод для других процессов):
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 и предоставить все остальное системе.
Наконец, если вы действительно хотите погрузиться в это, вы можете использоватьМасштабирование частоты ЦПвручную снизить частоту процессора на время резервного копирования
решение2
Одним из подходов было бы использование параллельного сжатия для использования всех ядер вашей системы и, следовательно, сокращения времени сжатия. Это не снизит нагрузку на вашу систему, но она будет загружена в течение кратчайшего времени!
Как это сделать, вы можете узнать, например, в этом разделе вопросов и ответов:использование-многоядерного-для-targzip-bzip-сжатия-распаковки
Например:
tar cf - paths-to-archive | pigz > archive.tar.gz
решение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
Попробуйте увеличить или уменьшить этот предел, пока не получите желаемую загрузку ЦП.