web-dev-qa-db-fra.com

Existe-t-il des avantages / inconvénients de l'option / j Robocopy (copie sans tampon)?

Robocopy a une option de ligne de commande /J recommandée pour la copie de fichiers volumineux (elle utilise des entrées/sorties non mises en mémoire tampon).

Quels sont les inconvénients (le cas échéant)? Une raison pour laquelle ceci n'est pas activé par défaut? (C'est ce qui m'a fait penser qu'il pourrait y avoir des inconvénients.)

9
Clay Nichols

Excellente question.

Unbuffered I/O est une simple copie de fichier d'un emplacement source vers un emplacement de destination. Les E/S mises en tampon augmentent la copie simple pour optimiser les lectures ultérieures (et écrit) du même fichier en le copiant dans le cache du système de fichiers , qui est une région de mémoire virtuelle. Les entrées/sorties mises en tampon entraînent une baisse des performances lors du premier accès au fichier car elles doivent copier le fichier en mémoire. Cependant, étant donné que l'accès à la mémoire est plus rapide que l'accès au disque, l'accès ultérieur aux fichiers devrait être plus rapide. Le système d'exploitation prend en charge la synchronisation des écritures de fichiers sur le disque et les lectures peuvent être extraites directement de la mémoire.

La note d'utilisation mentionne des fichiers volumineux vis-à-vis des E/S mises en mémoire tampon pour les raisons suivantes:

  1. Le coût initial est coûteux. La perte de performances avec les E/S en mémoire tampon est bien pire pour les fichiers volumineux.
  2. Vous obtenez peu en retour. De toute façon, les blocs de fichiers volumineux n'ont pas tendance à rester longtemps dans le cache, à moins que vous ne disposiez de beaucoup de mémoire par rapport à la taille du fichier.
  3. Cela n'empêche peut-être pas les E/S de disque. La lecture et l'écriture de blocs de données de fichiers volumineux augmentent la probabilité d'exiger des E/S de disque.
  4. De toute façon, vous n'avez probablement pas besoin de mettre en mémoire tampon. Dans la pratique, les fichiers volumineux sont généralement moins utilisés que les fichiers plus petits.

Donc, il y a un compromis, mais ce qui est approprié pour vous dépend de votre cas particulier. Si vous compressez plusieurs fichiers et transmettez le fichier Zip à une cible de sauvegarde, optez pour le mode sans mémoire tampon. Copier un tas de fichiers qui viennent d'être modifiés? La mise en mémoire tampon devrait être plus rapide.

Enfin, notez que la taille du fichier n'est pas le seul facteur à prendre en compte pour choisir entre mémoire tampon et mémoire tampon. Comme avec n'importe quel cache, le cache du système de fichiers est plus rapide mais plus petit que la source derrière lui. Elle nécessite une stratégie de remplacement du cache qui détermine le moment d'expulser des éléments afin de laisser de la place pour de nouveaux éléments. Il perd son avantage lorsque des objets fréquemment consultés sont expulsés. Par exemple, si vous synchronisez les répertoires de départ des utilisateurs chaque jour sur un emplacement distinct (c’est-à-dire lorsque les utilisateurs utilisent activement les fichiers), les E/S mises en mémoire tampon bénéficieraient des fichiers déjà présents dans le cache, mais pourraient temporairement polluer le cache avec des fichiers périmés. ; par contre, sans mémoire tampon renoncerait à tout avantage des fichiers déjà mis en cache. Aucun gagnant clair dans un tel cas.

Remarque: ceci s'applique également à xcopy /J

Consultez Microsoft Ask the Performance Team Blog pour plus d'informations.

6

J'ai essayé ce qui suit:

Lorsque vous copiez depuis un périphérique rapide (NAS via Gigabit-Ethernet) vers un autre périphérique rapide (USB3-Disk)

  • sans/J: les données sont lues dans une mémoire tampon et écrites ensuite, de sorte que le réseau ou le disque dur est inactif.
  • with/J: les données sont lues et écrites sans attendre, de sorte que le réseau et le disque dur sont utilisés simultanément

Je suggère d'utiliser cette option.

1
Rüdiger

Si vous effectuez une copie sur le réseau étendu, il est recommandé de NE PAS activer l'option/J pour les fichiers volumineux, car votre temps de copie moyen augmentera considérablement. Les fichiers que j'ai copiés allaient de 500 Mo à 23 Go.

Sur une ligne à 50 Mbits/s, j'ai utilisé une moyenne de 43,5 Mbits/s (autres trafics et frais généraux) tout en ne descendant jamais en dessous de 32 Mbits/s SANS/J. Avec/J, ma moyenne était d’environ 25 Mbits/s ... en regardant perfmon, je pouvais voir de grands pics et des vallées en bas.

J'espère que cela aide quelqu'un.

0
user778642