Tar, perf : 1 gros fichier ou plusieurs petit

Résolu
IvyAlice Messages postés 397 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour à tous,

J'aimerais savoir si au niveau performance (temps, cpu, ram ) on a meilleur temps de faire un gros tar (par exemple de 300 Go) ou plusieurs plus petit ( 10 de 30 Go ) ?

J'ai essayé d'en faire l'expérience moi-même avec des fichiers de quelque dizaine de Mo. Mais regarder défilé la commande top pendant que tar travaille, ça n'a pas l'air fiable à 100%.
De plus les résultats ont été assez aléatoire ( sauf pour la ram, valeur tjr identique) et me donnaient l'impression que ça ne change rien d'appliquer l'une ou l'autre de ces technique.

Question complémentaire :
Si on vient à Gzipper le tar en même temps. Est-ce qu'à ce moment là des différences notable au niveau des performances surviennent ?

Merci pour vos avis et conseils

Ivy

3 réponses

  1. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bah en gros ceci est équivalent :

    tar cvf repertoire.tar repertoire
    gzip repertoire


    (note que la première commande ne compresse rien, elle ne fait que "regrouper" les fichiers dans une archive)

    ... avec cette commande

    tar cvzf repertoire.tar.gz repertoire


    Il est clair que la commande gzip à un coup (la compression ne se fait pas de manière instantanée) et donc il est naturel que ne pas compresser soit plus rapide.

    En fait soyons clairs, au delà de cette présentation intuitive, des opérations de compression et de décompression sont assez coûteuses en CPU (et en mémoire). Mais en terme d'espace disque le reste est incomparable.

    Voici quelques benchmarks :
    http://brej.org/compression/c_time.html

    Bonne chance
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Voir la commande "time" pour évaluer les ressources d'une autre commande...
    NOM
           time - Chronométrer ou évaluer les ressources employées par une commande simple
    
    SYNOPSIS
           time [options] commande [arguments...]
    
    DESCRIPTION
           La  fonction  time lance le programme représenté par la commande indiquée, avec les arguments fournis.  Lorsque la commande se termine, time affiche un message sur
           la sortie d'erreur contenant des statistiques sur l'exécution du programme.  Ces statistiques contiennent (i) le temps écoulé entre l'invocation et la  fin  de  la
           commande,  (ii)  le  temps  CPU  écoulé  en  mode  utilisateur (la somme des valeurs tms_utime et tms_cutime de la structure struct tms fournie par l'appel système
           times(2)), et (iii) le temps CPU passé en mode système (la somme des champs tms_stime et tms_cstime de la struct tms fournie par l'appel système times(2)).

    0
  3. IvyAlice Messages postés 397 Statut Membre 32
     
    Hello,
    Merci pour vos réponses.
    Oui je me suis également servi de time mais les résultats étaient vraiment étonnants genre
    reproot
    \- fich1
    \ fich2

    tar -cvf reproot -> il me donne entre 33 et 50 sec ( la machine sur laquelle je fais mes tests est une machine ou rien d'autre ne tourne)

    Si je lance par contre un scripte qui tar d'abords fich1 puis fich2 , j'avais des valeurs genre 6 sec pour le premier fichier et 23 pour le second, ou 18 sec chacun ( pour des fichiers de même taille donc)

    Le cpu variait entre 5 et 32 sec. dans le premier cas et entre 6 et 25 dans le second.( j'ai essayé 2-3 fois chacun)

    Sinon je n'ai pas très bien compris ce 'temps processus' dans le time.

    Oui, compresser prend plus longtemps . Je me suis mal exprimée.
    Est-ce que du moment qu'on compresse un tar, on a des différences (niveau cpu/ram/temps total) entre si on compresse soit 1 gros tar de 300 Go , soit 10 tar de 30 Go . (ou alors si la compression travail de manière à , si il stock par exemple quelque part le fichier temporaire et que si du coup on compresse 1 seul gros fichier il remplit le disk ou quelque chose comme ça )
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Tar ne compresse pas.
      tar -cvf reproot
      Cette commande ne fait que réunir tout dans une archive sans aucune compression.

      Il faut utiliser soit l'option z (gzip) soit j (bzip2) pour compresser

      Et puis v c'est pour afficher à l'écran ce qui se passe, ce qui augmente aussi l'exécution de tar.
      Fait un test pour voir
      time tar cvf 
      time tar cf 
      0