Partager via


Optimiser les performances d’AzCopy avec Stockage Azure

AzCopy est un utilitaire de ligne de commande que vous pouvez utiliser pour copier des blobs ou des fichiers vers ou depuis un compte de stockage. Cet article vous aide à optimiser les performances.

Notes

Pour obtenir du contenu pour vous aider à bien démarrer avec AzCopy, consultez Prise en main d’AzCopy.

Vous pouvez effectuer un test d’évaluation des performances, puis utiliser des commandes et des variables d’environnement pour trouver un compromis optimal entre les performances et la consommation des ressources.

Exécuter des tests d’évaluation

Vous pouvez exécuter un test d’évaluation des performances sur des conteneurs d’objets blob ou des partages de fichiers spécifiques pour voir des statistiques générales sur les performances et identifier les goulots d’étranglement des performances. Vous pouvez exécuter le test en chargeant ou en téléchargeant des données de test générées.

Utilisez la commande suivante pour exécuter un test d’évaluation des performances.

Syntaxe

azcopy benchmark 'https://<storage-account-name>.blob.core.windows.net/<container-name>'

Exemple

azcopy benchmark 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D'

Conseil

Cet exemple englobe les arguments de chemin d’accès avec des guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Cette commande exécute un test d’évaluation des performances en chargeant les données de test dans une destination spécifiée. Les données de test sont générées en mémoire, chargées dans la destination, puis supprimées de la destination une fois le test terminé. Vous pouvez spécifier le nombre de fichiers à générer et leur taille souhaitée à l’aide de paramètres de commande facultatifs.

Si vous préférez exécuter ce test en téléchargeant des données, définissez le paramètre mode sur download. Pour obtenir des informations de référence détaillées, consultez benchmark azcopy.

Optimiser pour un grand nombre de fichiers

Le débit peut diminuer pendant le transfert d’un grand nombre de fichiers. Chaque opération de copie se traduit par une ou plusieurs transactions que le service de stockage doit exécuter. Lorsque vous transférez un grand nombre de fichiers, tenez compte du nombre de transactions qui doivent être exécutées et de l’impact potentiel que ces transactions peuvent avoir si d’autres activités se produisent dans le compte de stockage en même temps.

Pour optimiser les performances, vous pouvez réduire la taille de chaque travail en limitant le nombre de fichiers que vous copiez dans un seul travail. Pour les opérations de téléchargement et de chargement, augmentez la concurrence selon le besoin, diminuez l’activité des journaux et désactivez les fonctionnalités qui ont un coût élevé en matière de performances.

Réduire la taille de chaque travail

Pour obtenir des performances optimales, assurez-vous que chaque travail transfère moins de 10 millions de fichiers. Les travaux qui transfèrent plus de 50 millions de fichiers peuvent s’exécuter assez lentement, car le mécanisme de suivi des travaux d’AzCopy entraîne une surcharge importante. Pour réduire la charge, envisagez de diviser les grands travaux en travaux plus petits.

Une façon de réduire la taille d’un travail consiste à limiter le nombre de fichiers affectés par un travail. Pour cela, vous pouvez utiliser des paramètres de commande. Par exemple, un travail peut copier seulement un sous-ensemble de répertoires si vous utilisez le paramètre include path dans le cadre de la commande azcopy copy.

Utilisez le paramètre include-pattern pour copier les fichiers qui ont une extension spécifique (par exemple : *.pdf). Dans un travail distinct, utilisez le exclude-pattern paramètre pour copier tous les fichiers qui n’ont pas l’extension *.pdf . Pour obtenir des exemples, consultez Charger des fichiers spécifiques et Télécharger des objets blob spécifiques.

Après avoir décidé de diviser les travaux volumineux en travaux plus petits, envisagez d’exécuter des travaux sur plusieurs machines virtuelles.

Augmenter les accès concurrentiels

Si vous chargez ou téléchargez des fichiers, utilisez la variable d’environnement AZCOPY_CONCURRENCY_VALUE pour augmenter le nombre de demandes simultanées qui peuvent être effectuées sur votre machine. Définissez cette variable sur la valeur la plus élevée possible sans compromettre les performances de votre machine. Pour plus d’informations sur cette variable, consultez la section Augmenter le nombre de demandes simultanées de cet article.

Si vous copiez des objets blob entre des comptes de stockage, envisagez de définir la valeur de la variable d’environnement AZCOPY_CONCURRENCY_VALUE sur une valeur supérieure à 1000. Vous pouvez définir cette variable élevée, car AzCopy utilise des API serveur à serveur, de sorte que les données sont copiées directement entre les serveurs de stockage et n’utilisent pas la puissance de traitement de votre ordinateur.

Réduire le nombre de journaux générés

Vous pouvez améliorer les performances en réduisant le nombre d’entrées de journal créées par AzCopy au fur et à mesure de l’exécution d’une opération. Par défaut, AzCopy journalise toutes les activités relatives à une opération. Pour obtenir des performances optimales, envisagez de définir le paramètre --log-level de votre commande de copie, de synchronisation ou de suppression sur ERROR. De cette façon, AzCopy consigne seulement les erreurs. Par défaut, le niveau de journalisation est défini sur INFO.

Désactiver la vérification de la longueur

Si vous chargez ou téléchargez des fichiers, envisagez de définir le paramètre --check-length de vos commandes de copie et de synchronisation sur false. Ce paramètre empêche AzCopy de vérifier la longueur d’un fichier après un transfert. Par défaut, AzCopy vérifie la longueur pour garantir que les fichiers source et de destination correspondent une fois le transfert terminé. AzCopy effectue cette vérification après chaque transfert de fichier. Cette vérification peut dégrader les performances quand les travaux transfèrent un grand nombre de petits fichiers.

Activer l’analyse locale simultanée (Linux)

Les analyses de fichiers sur certains systèmes Linux ne s’exécutent pas suffisamment rapidement pour saturer toutes les connexions réseau parallèles. Dans ce cas, vous pouvez définir la valeur AZCOPY_CONCURRENT_SCAN sur un nombre plus élevé.

Augmenter le nombre de demandes simultanées

Vous pouvez augmenter le débit en définissant la variable d’environnement AZCOPY_CONCURRENCY_VALUE. Cette variable spécifie le nombre de demandes pouvant être effectuées simultanément.

Si votre ordinateur a moins de cinq PROCESSEURs, la valeur de cette variable est définie 32sur . Sinon, la valeur par défaut est égale à 16 multiplié par le nombre d’unités centrales. La valeur maximale par défaut de cette variable est 300, mais vous pouvez l’augmenter ou la diminuer manuellement.

export AZCOPY_CONCURRENCY_VALUE=<value>

Utilisez azcopy env pour vérifier la valeur actuelle de cette variable. Si la valeur est vide, vous pouvez lire la valeur utilisée en examinant le début de tout fichier journal AzCopy. La valeur sélectionnée et la raison pour laquelle elle a été sélectionnée sont signalées ici.

Avant de définir cette variable, nous vous recommandons d’exécuter un test d’évaluation. Le processus de test de benchmark signale la valeur de concurrence recommandée. En guise d’alternative, si vos conditions de réseau et charges utiles varient, affectez le mot AUTO à cette variable plutôt qu’un nombre particulier. Ce paramètre permet à AzCopy d’exécuter toujours le même processus de réglage automatique qu’il utilise dans les tests de benchmark.

Limiter le débit de données

Utilisez l’indicateur cap-mbps dans vos commandes pour placer un plafond sur le débit de données. Par exemple, la commande suivante reprend un travail et plafonne le débit à 10 mégabits (Mb) par seconde. Cette fonctionnalité est uniquement prise en charge pour le chargement ou le téléchargement de fichiers, et non pour la copie entre les comptes.

azcopy jobs resume <job-id> --cap-mbps 10

Optimiser l’utilisation de la mémoire

Définissez la variable d’environnement AZCOPY_BUFFER_GB pour spécifier la quantité maximale de mémoire système qu’AzCopy doit utiliser pour la mise en mémoire tampon lors du téléchargement et du chargement des fichiers. Exprimez cette valeur en gigaoctets (Go).

export AZCOPY_BUFFER_GB=<value>

Notes

Le suivi des travaux ajoute toujours une surcharge dans l’utilisation de la mémoire. La quantité varie en fonction du nombre de transferts dans une tâche. Les mémoires tampons représentent le composant le plus volumineux de l’utilisation de la mémoire. Vous pouvez vous aider à contrôler la surcharge en utilisant AZCOPY_BUFFER_GB pour répondre approximativement à vos besoins, mais il n’existe aucun indicateur disponible pour limiter strictement l’utilisation globale de la mémoire.

Optimiser la synchronisation des fichiers

La commande de synchronisation identifie tous les fichiers à la destination, puis compare les noms de fichiers et les horodatages modifiés avant de démarrer l’opération de synchronisation. Si vous avez un grand nombre de fichiers, vous pouvez améliorer les performances en éliminant ce traitement frontal.

Pour atteindre cet objectif, utilisez plutôt la commande azcopy copy et définissez l’indicateur --overwrite sur ifSourceNewer. AzCopy compare les fichiers au fur et à mesure qu’il les copie sans effectuer d’analyses et de comparaisons frontales. Cette approche offre un avantage de performance dans les cas où il y a un grand nombre de fichiers à comparer.

La commande azcopy copy ne supprime pas les fichiers de la destination. Si vous souhaitez supprimer des fichiers à la destination lorsqu'ils n'existent plus à la source, utilisez la commande azcopy sync avec l'indicateur --delete-destination défini sur une valeur de true ou prompt.

Utiliser plusieurs clients pour exécuter des travaux en parallèle

AzCopy fonctionne de manière optimale lorsqu’une seule instance s’exécute sur le client. Si vous souhaitez transférer des fichiers en parallèle, utilisez plusieurs clients et exécutez une seule instance d’AzCopy sur chacune d’elles.

Voir aussi