当我跑步时,我的系统负载很重
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 MB/秒; 2 分钟,14 - 22 MB/秒; 3 分钟,5 - 7 MB/秒; 4 分钟,5 - 22 MB/秒; 5 分钟,15 - 17 MB/秒; 6 分钟,8 - 24 MB/秒; 7 分钟,16 - 20 MB/秒
- 19 分钟,18-21 MB/秒,风扇很小/稳定,这样您就可以听到它们
系统:Ubuntu 16.04 64 位
硬件:Macbook Air 2013-mid
答案1
首先,如果您人为减慢备份过程,总体功耗可能会相同或更高。原因很简单,因为操作总数相同,如果处理时间更长,CPU 消耗的峰值功率会更少,但时间会更长。例如,如果进程在 200W 峰值功率下运行 10 秒,则将消耗 10s*200W=2000J,如果进程在 30W 下运行 100 秒,则将消耗 100s*30W=3000J。
如果您主要是为了提高计算机在处理过程中的响应能力,您可以尝试增加进程的niceness(nice会降低cpu优先级,为其他进程释放cpu功率,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,剩下的交给系统。
最后,如果你真的想深入研究它,你可以使用CPU频率缩放在备份期间手动降低 CPU 频率
答案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% 的一个 cpu 线程。 NTFS FUSE 软件也使用了非零的 CPU,但本质上,由于 gzip,您受到 CPU 限制。您的平均负载约为 2,并且有 2 个内核,每个内核有 2 个线程,因此您的系统不会超载。
但是,如果您的目标是降低最大 CPU 使用率(因为风扇以最大速度运行),一种简单的方法是减慢馈送到 gzip 的数据速率。
你进行了测试
tar cf - $HOME/ | pv | gzip > /media/masi/ntfsDisc/testbackup.tar.gz
pv 表示 gzip 的峰值传输速率为 20MiB/秒。我建议通过给予 pv 这个-L 10m
选项来将其减少一半。
tar cf - $HOME/ | pv -L 10m | gzip > /media/masi/ntfsDisc/testbackup.tar.gz
尝试调高或调低该速率限制,直到获得所需的 CPU 使用率。