¿Cómo distribuir la informática de `tar czf` durante más tiempo?

¿Cómo distribuir la informática de `tar czf` durante más tiempo?

Mis sistemas sufren una gran carga cuando ejecuto

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

Los ventiladores van al máximo, etc. Me gustaría encontrar un mejor equilibrio entre la informática y el consumo de energía. No puedo monitorear el proceso lo suficientemente bien. No puedes ralentizarlo durante el cálculo cuando se ejecuta así. Intuición: añade algo de sueño ahí pero cómo. Realmente me gustaría tener un xargsenfoque también para compararlo con productos "listos". mis tops

  • lo hago topen reposo

    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 
    
  • lo hago top1 minuto después delnice 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      
    
  • Lo hago top10 minutos después del inicio.

    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
    

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

  • a 1 min, 13 - 22 MB/s; a 2 min, 14 - 22 MB/s; a los 3 min, 5 - 7 MB/s; a 4 min, 5 - 22 MB/s; a los 5 min, 15 - 17 MB/s; a los 6 min, 8 - 24 MB/s; a 7 min, 16 - 20 MB/s
  • a 19 min, 18-21 MB/s y ventiladores poco/constantemente encendidos para que puedas escucharlos

Sistema: Ubuntu 16.04 de 64 bits
Hardware: Macbook Air 2013-mid

Respuesta1

En primer lugar, el consumo total de energía probablemente será igual o mayor si ralentiza artificialmente el proceso de copia de seguridad. Simplemente porque el número total de operaciones es el mismo y si el proceso lleva más tiempo, la CPU consume menos energía máxima pero durante más tiempo. Por ejemplo, si el proceso se ejecuta durante 10 s a una potencia máxima de 200 W, consumirá 10 s*200 W = 2000 J, si el proceso se ejecuta durante 100 s a 30 W, consumirá 100 s * 30 W = 3000 J.

Si lo que busca principalmente es mejorar la capacidad de respuesta de su computadora durante el proceso, puede intentar aumentar la amabilidad del proceso (nice reducirá la prioridad de la CPU, liberando energía de la CPU para otros procesos, ionice reducirá la prioridad del disco, liberando el disco i/ o para otros procesos):

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

Esto reducirá la prioridad del proceso para que no ralentice otros procesos mientras trabaja en la máquina. Aparte de eso, seguirá intentando finalizar el proceso lo más rápido posible y hará que tus fans se aceleren.

Si realmente desea/necesita reducir el consumo máximo de energía (porque su sistema se sobrecalienta o los ventiladores lo despiertan por la noche), puede probar uno de los siguientes enfoques:

Una solución más elaborada sería no comprimir todo a la vez sino directorio por directorio (ponga este código en un archivo llamado backup_home.sh, hágalo ejecutable y ejecútelo mediante 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

Sin embargo, tenga en cuenta que el consumo general de energía no se reducirá, simplemente se distribuirá durante más tiempo (aumentando la posibilidad de que un archivo cambie durante la copia de seguridad). Además, esto no distribuirá uniformemente la carga ya que probablemente no todas las carpetas tengan lo mismo. tamaño. Le recomiendo que use nice y deje el resto al sistema.

Finalmente, si realmente quieres sumergirte en ello, puedes usarEscalado de frecuencia de la CPUpara desacelerar manualmente su CPU durante la duración de la copia de seguridad

Respuesta2

Un enfoque sería utilizar compresión paralela para utilizar todos los núcleos de su sistema y, por lo tanto, reducir el tiempo de compresión. ¡No reducirá la carga de su sistema, pero se cargará durante el menor tiempo posible!

Puede encontrar cómo hacerlo en estas preguntas y respuestas, por ejemplo:utilizando-multi-core-para-targzip-bzip-compresión-descompresión

Por ejemplo:

tar cf - paths-to-archive | pigz > archive.tar.gz

Respuesta3

El comando

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

es lo mismo que este:

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

Cuando ejecutó top, mostró que gzip estaba usando alrededor del 100% de un subproceso de la CPU. El software NTFS FUSE también está consumiendo una cantidad distinta de cero de CPU, pero esencialmente estás limitado a la CPU debido a ese gzip. Su carga promedio es de alrededor de 2 y con 2 núcleos de 2 subprocesos cada uno, no está sobrecargando su sistema.

Pero, si su objetivo es reducir el uso máximo de la CPU (porque los ventiladores están funcionando al máximo), una manera fácil de hacerlo es reducir la velocidad de los datos que se envían a gzip.

Hiciste la prueba

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

y pv indicó que la velocidad máxima de transferencia a gzip fue de 20 MiB/seg. Recomendaría reducir eso a la mitad dándole la -L 10mopción a pv.

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

Intente ajustar ese límite de velocidad hacia arriba o hacia abajo hasta que obtenga el uso de CPU que desee.

información relacionada