當我跑步時,我的系統負荷很重
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 使用率。