Meine Systeme werden stark belastet, wenn ich
sudo tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/
Lüfter laufen auf Maximum usw. Ich würde gerne ein besseres Gleichgewicht zwischen Rechenleistung und Stromverbrauch finden. Ich kann den Prozess nicht gut genug überwachen. Man kann ihn während der Berechnung nicht verlangsamen, wenn er so läuft. Intuition: da etwas Ruhe hinzufügen, aber wie? Ich hätte xargs
auch wirklich gerne einen Ansatz, um es mit „fertigen“ Produkten zu vergleichen. Meine Tops
Ich tue
top
in Ruhetop - 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
Ich mache
top
1 Minute nach demnice 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
Ich mache
top
10 Minuten nach dem Starttop - 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
Mein PVtar cf - $HOME/ | pv | gzip > media/masi/ntfsDisc/testbackup.tar.gz
- bei 1 Minute 13 – 22 MB/s; bei 2 Minuten 14 – 22 MB/s; bei 3 Minuten 5 – 7 MB/s; bei 4 Minuten 5 – 22 MB/s; bei 5 Minuten 15 – 17 MB/s; bei 6 Minuten 8 – 24 MB/s; bei 7 Minuten 16 – 20 MB/s
- bei 19 min, 18-21 MB/s und Lüfter wenig/dauerhaft an, so dass man sie hören kann
System: Ubuntu 16.04 64 Bit
Hardware: Macbook Air 2013-Mitte
Antwort1
Erstens wird der Gesamtstromverbrauch wahrscheinlich gleich oder höher sein, wenn Sie den Sicherungsvorgang künstlich verlangsamen. Einfach, weil die Gesamtzahl der Vorgänge gleich ist und die CPU weniger Spitzenleistung verbraucht, wenn der Vorgang länger dauert, aber über einen längeren Zeitraum. Wenn der Vorgang beispielsweise 10 s lang bei einer Spitzenleistung von 200 W läuft, verbraucht er 10 s*200 W=2000 J, wenn der Vorgang 100 s lang bei 30 W läuft, verbraucht er 100 s*30 W=3000 J.
Wenn es Ihnen vor allem darum geht, die Reaktionsfähigkeit Ihres Computers während des Prozesses zu verbessern, können Sie versuchen, die Niceness des Prozesses zu erhöhen (Nice senkt die CPU-Priorität und gibt CPU-Leistung für andere Prozesse frei, Ionice senkt die Festplattenpriorität und gibt Festplatten-E/A für andere Prozesse frei):
sudo nice -n19 ionice -c2 -n7 tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/
Dadurch wird die Priorität des Prozesses verringert, sodass andere Prozesse nicht verlangsamt werden, während Sie an der Maschine arbeiten. Ansonsten wird weiterhin versucht, den Prozess so schnell wie möglich abzuschließen und Ihre Lüfter zum Hochfahren zu bringen.
Wenn Sie den Spitzenstromverbrauch wirklich reduzieren möchten/müssen (weil Ihr System überhitzt oder die Lüfter Sie nachts wecken), können Sie einen der folgenden Ansätze versuchen:
Eine aufwändigere Lösung wäre, nicht alles auf einmal zu komprimieren, sondern Verzeichnis für Verzeichnis (fügen Sie diesen Code in eine Datei namens backup_home.sh ein, machen Sie sie ausführbar und führen Sie sie über aus 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
Beachten Sie jedoch, dass der Gesamtstromverbrauch dadurch nicht reduziert wird, sondern sich lediglich über einen längeren Zeitraum verteilt (wodurch die Wahrscheinlichkeit steigt, dass eine Datei während der Sicherung geändert wird). Außerdem wird die Last dadurch nicht gleichmäßig verteilt, da wahrscheinlich nicht alle Ordner die gleiche Größe haben. Ich empfehle Ihnen dringend, nice zu verwenden und den Rest dem System zu überlassen.
Und wenn Sie wirklich tiefer in die Materie eintauchen möchten, können SieCPU-Frequenzskalierungum Ihre CPU für die Dauer des Backups manuell zu untertakten
Antwort2
Ein Ansatz wäre, parallele Komprimierung zu verwenden, um alle Kerne Ihres Systems zu nutzen und so die Komprimierungszeit zu verkürzen. Dadurch wird die Belastung Ihres Systems zwar nicht verringert, es wird jedoch für die kürzeste Zeit belastet!
Wie das geht, erfahren Sie beispielsweise in diesem Q&A:Nutzung von Multi-Core für Targzip-Bzip-Komprimierung/-Dekomprimierung
Zum Beispiel:
tar cf - paths-to-archive | pigz > archive.tar.gz
Antwort3
Der Befehl
tar czf /media/masi/ntfsDisc/backup_home.tar.gz $HOME/
ist das gleiche wie das hier:
tar cf - $HOME/ | gzip > /media/masi/ntfsDisc/backup_home.tar.gz
Als Sie ausgeführt haben top
, zeigte sich, dass das Gzip-Programm etwa 100 % eines CPU-Threads beanspruchte. Die NTFS FUSE-Software beansprucht ebenfalls eine CPU-Menge ungleich Null, aber im Grunde sind Sie wegen dieses Gzip-Programms CPU-gebunden. Ihre durchschnittliche Auslastung liegt bei etwa 2, und mit 2 Kernen mit jeweils 2 Threads überlasten Sie Ihr System nicht.
Wenn Ihr Ziel jedoch darin besteht, die maximale CPU-Auslastung zu reduzieren (weil die Lüfter mit maximaler Leistung laufen), können Sie dies ganz einfach erreichen, indem Sie die Geschwindigkeit der an gzip übermittelten Daten verringern.
Du hast den Test durchgeführt
tar cf - $HOME/ | pv | gzip > /media/masi/ntfsDisc/testbackup.tar.gz
und pv gab an, dass die maximale Übertragungsrate in gzip 20 MiB/s betrug. Ich würde empfehlen, diese zu halbieren, indem Sie pv die -L 10m
Option geben.
tar cf - $HOME/ | pv -L 10m | gzip > /media/masi/ntfsDisc/testbackup.tar.gz
Versuchen Sie, die Ratenbegrenzung nach oben oder unten anzupassen, bis Sie die gewünschte CPU-Auslastung erreichen.