Précharger des fichiers dans Azure HPC Cache

La fonctionnalité d’amorçage d’Azure HPC Cache permet aux clients de précharger des fichiers dans le cache.

Vous pouvez utiliser cette fonctionnalité pour extraire votre jeu de fichiers de travail attendu et remplir le cache avant le début du travail. Cette technique est parfois appelée réchauffement du cache.

L’amorçage du cache améliore les performances en augmentant les « accès » du cache. Si une machine cliente demande une ressource qui doit être lue à partir du stockage principal, la latence d’extraction et de retour de ce fichier peut être importante, en particulier si le système de stockage est un NAS local. Si vous primez le cache avec les fichiers dont il aura besoin avant de démarrer une tâche de calcul, les demandes de fichiers seront plus efficaces pendant le travail.

Cette fonctionnalité utilise un fichier manifeste JSON pour spécifier les fichiers à charger. Chaque travail d’amorçage prend un fichier manifeste.

Créez des travaux d’amorçage de cache à l’aide du portail Azure ou avec les points de terminaison d’API REST Azure mentionnés à la fin de ce document.

Vous pouvez créer jusqu’à 10 tâches d’amorçage. Selon la taille du cache, entre trois et 10 travaux d’amorçage peuvent s’exécuter en même temps ; d’autres sont mis en file d’attente jusqu’à ce que les ressources soient libérées.

Configuration et conditions préalables

Avant de pouvoir créer une tâche de préparation, suivez ces étapes :

  1. Créez un cache HPC Azure. (Reportez-vous à La création d’un cache HPC Azure pour obtenir de l’aide.)
  2. Définissez au moins une cible de stockage, y compris la création de son chemin d’accès d’espace de noms agrégé (ou chemins). Documentation sur la cible de stockage
  3. Créez le manifeste de la tâche de préchargement (instructions ci-dessous) et stockez-le dans un conteneur Blob accessible au cache HPC. Ou, si vous utilisez des API REST Azure pour créer vos travaux d’amorçage, vous pouvez stocker le manifeste à n’importe quelle URL accessible par votre HPC Cache.

Créer un fichier manifeste d’amorçage

Le manifeste d’amorçage est un fichier JSON qui définit le contenu qui sera préchargé dans le cache lors de l’exécution du travail d’amorçage.

Dans le manifeste, spécifiez le chemin d’accès de l’espace de noms aux répertoires ou fichiers que vous souhaitez précharger. Vous pouvez également configurer des règles d’inclusion et d’exclusion pour personnaliser le contenu chargé.

Exemple de manifeste d’amorçage


{
    "config": {
        "cache_mode": "0",
        "maxreadsize": "0",
        "resolve_symlink": "0",
        "threads":"8",
        "skip_estimation":"0"
    },
    
    "files": [
        "/bin/tool.py",
        "/bin/othertool.py"
    ],
    
    "directories": [
        {"path": "/lib/toollib"},
        {
            "path": "/lib/otherlib", 
            "include": ["\\.py$"]
        },
        {
            "path": "/lib/xsupport", 
            "include": ["\\.py$"], 
            "exclude": ["\\.elc$", "\\.pyc$"]
        }
    ],
    
    "include": ["\\.txt$"],
    "exclude": ["~$", "\\.bak$"]
}

Il existe trois sections dans le fichier manifeste d’amorçage :

  • Configuration (config) : paramètres du travail d’amorçage

  • Instructions de fichier et de répertoire :

    • files - fichiers individuels qui seront préchargés
    • directories - Chemins d’accès aux fichiers qui seront préchargés
  • Instructions d’inclusion globale et d’exclusion (include et exclude) : chaînes d’expression régulière qui modifient la tâche d’amorçage du répertoire

Paramètres de configuration

La config section du fichier manifeste définit ces paramètres :

  • Le mode cache définit le comportement de la tâche d’amorçage. Les options sont les suivantes :

    • 0 - Données : chargez toutes les données et attributs de fichier spécifiés dans le cache. Il s’agit de la valeur par défaut.
    • 1 - Métadonnées : chargez uniquement les attributs de fichier.
    • 2 - Estimer : chargez les attributs de fichier et retournez également une estimation du nombre de fichiers, de répertoires et de la taille totale des données (en octets) qui seraient chargées si le contenu de ce manifeste était exécuté en mode données.
  • maxreadsize - Définit le nombre maximal d’octets qui seront préchargés par fichier. Laissez cette valeur définie sur 0 (valeur par défaut) pour toujours charger l’intégralité du fichier, quelle que soit la taille.

  • resolve_symlink - Définissez cette valeur sur true (1) si vous souhaitez résoudre les liens symboliques lors de l’amorçage. Si resolve_symlink est activé, les cibles de liaison symboliques sont entièrement chargées, quelles que soient les règles d’inclusion et d’exclusion.

  • threads - Nombre de fils d’amorçage à utiliser. Les valeurs valides sont comprises entre 1 et 128. La valeur par défaut est 8 pour équilibrer entre les demandes de client d’amorçage et de maintenance.

  • skip_estimation - Avant de commencer à copier des fichiers, la tâche d’amorçage effectue une estimation de la quantité de données à amorcer. Définissez l’indicateur skip_estimation sur true (1) si vous souhaitez passer directement à la phase d’amorçage du fichier. Si vous ignorez la phase d’estimation, le rapport de progression peut être moins précis. La valeur par défaut est 0 pour inclure la phase d’estimation.

Chemins des fichiers et des répertoires

Les sections files et directories du manifeste spécifient quels fichiers sont préchargés pendant le travail d’amorçage.

Spécifiez des fichiers et des répertoires par leurs chemins d’espace de noms de cache. Il s’agit des mêmes chemins que ceux utilisés par les clients pour accéder aux fichiers via HPC Cache, et ils n’ont pas besoin d’être identiques aux chemins du système de stockage ou aux noms d’exportation. Pour en savoir plus, lisez Planifier l’espace de noms agrégé .

Démarrez les chemins à partir de la racine de l’espace de noms du cache.

Note

Les éléments listés dans files sont inclus même s’ils correspondent à des règles d’exclusion ultérieures.

La directories valeur comporte une liste de chemins qui sont évalués pour le contenu à précharger dans le cache. Toutes les sous-arborescences sont incluses dans la tâche d’amorçage, sauf si elles sont spécifiquement exclues.

Les valeurs de chemin d’accès du répertoire peuvent avoir leurs propres instructions d'inclusion et d'exclusion, qui ne s’appliquent qu’au chemin avec lequel elles sont définies. Par exemple, la ligne "directories": [{"path": "/cache/library1", "exclude": "\\.bak$"}] précharge tous les fichiers sous le chemin d'accès d'espace de noms /cache/library1/ à l’exception des fichiers de ce chemin d’accès qui se terminent par .bak.

Les instructions include/exclude au niveau du répertoire ne sont pas les mêmes que les instructions d’inclusion globale et d’exclusion décrites ci-dessous. Veillez à lire les détails sur la façon dont les instructions au niveau du répertoire interagissent avec les instructions d’inclusion globale et d’exclusion.

Note

En raison de l’analyse du fichier manifeste, deux caractères d’échappement sont nécessaires pour protéger un caractère de chaîne problématique dans les instructions include et exclude. Par exemple, utilisez l’expression \\.txt pour faire correspondre .txt fichiers.

Inclure et exclure des déclarations

Après les fichiers et répertoires, vous pouvez spécifier des include et exclude instructions globales. Ces paramètres globaux s’appliquent à tous les répertoires. Ils ne s’appliquent pas aux fichiers spécifiés dans une files instruction.

En règle générale, les règles sont mises en correspondance dans l’ordre, de sorte que les instructions qui apparaissent plus haut dans le fichier manifeste sont appliquées avant les versions ultérieures. Les descriptions de cet article supposent également que les règles antérieures ont déjà été appliquées et non mises en correspondance.

  • Instructions d'inclusion - lorsque les répertoires sont analysés, le processus d'amorçage ignore les fichiers qui ne correspondent pas aux expressions régulières dans le include paramètre.

  • Exclure les déclarations : lors du balayage des répertoires, le processus d’amorçage ignore tout fichier qui correspond aux expressions régulières configurées dans le paramètre exclude.

    En savoir plus sur la façon dont les règles d’exclusion globale interagissent avec d’autres règles :

    • Les règles d’exclusion globale remplacent les règles d’inclusion globale. Autrement dit, si un nom de fichier correspond à une expression d’inclusion globale et à une expression d’exclusion globale, il ne sera pas préchargé par le travail d’amorçage.

    • Les règles d'inclusion au niveau du répertoire remplacent les règles d’exclusion globale.

      Un nom de fichier qui correspond à une expression include au niveau du répertoire et à une expression globaled’exclusionsera préchargé par le travail d’amorçage.

    • Les instructions de fichier remplacent toutes les règles d’exclusion.

Vous pouvez omettre d’inclure et d’exclure des instructions pour primer tous les fichiers dans les répertoires.

Pour plus d’informations sur les règles include/exclude et sur la façon dont elles correspondent aux noms de fichiers :

  • Si un nom correspond à une entrée dans la liste d’exclusion par répertoire, il est ignoré.

  • S’il existe une liste d’inclusions par répertoire, le nom est inclus ou exclu selon qu’il apparaît ou non dans cette liste.

  • Si un nom correspond à une entrée dans la liste d’exclusion globale, il est ignoré.

  • S’il existe une liste d’inclusion globale, le nom est inclus s’il apparaît sur cette liste ou exclu s’il n’apparaît pas dans cette liste.

  • S’il existe une liste d'inclusion par répertoire, le nom est exclu. Sinon, il est inclus.

  • Si un répertoire et un ancêtre de ce répertoire apparaissent tous deux dans la liste des répertoires, les règles spécifiques du répertoire sont appliquées avec les règles globales et les règles du répertoire ancêtre sont ignorées.

  • Les noms et les règles sont sensibles à la casse. Les sources non sensibles à la casse ne sont pas prises en charge.

  • Le nombre total de règles de fichier plus les règles de répertoire peut ne pas dépasser 4 000. Le nombre de règles d’expression régulière pour toute liste include/exclude peut ne pas dépasser 5.

  • Si une spécification de répertoire se chevauche une autre, celle avec le chemin d’accès le plus explicite est prioritaire.

  • C'est une erreur qu'un manifeste spécifie le même chemin plusieurs fois dans la liste de fichiers ou la liste de répertoires.

Charger le fichier manifeste d’amorçage

Une fois votre fichier manifeste prêt, chargez-le dans un conteneur d’objets blob Azure dans un compte de stockage accessible à partir de votre cache HPC. Si vous utilisez des API au lieu du portail pour créer vos travaux d’amorçage, vous avez la possibilité de le stocker sur un autre serveur web, mais vous devez prendre différentes mesures pour vous assurer que le cache peut y accéder.

  • Si vous créez un travail d’amorçage à partir du portail Azure, sélectionnez le fichier manifeste dans la page des paramètres de cache HPC Cache Prime , comme décrit ci-dessous. Le fait de le sélectionner dans les paramètres de cache crée automatiquement une signature d’accès partagé (SAP) qui donne au cache un accès limité au fichier d’amorçage.

  • Si vous utilisez des API pour créer le travail d’amorçage au lieu d’utiliser le portail, assurez-vous que le cache est autorisé à accéder à ce fichier. Stockez le fichier dans un emplacement accessible (par exemple, sur un serveur web que vous contrôlez à l’intérieur de votre cache ou réseau de stockage), ou créez manuellement une URL SAP pour votre fichier d’amorçage.

    Lire Accorder un accès limité aux ressources de stockage Azure à l’aide de signatures d’accès partagé (SAS) pour apprendre à créer une URL SAS de compte pour votre fichier manifeste d’amorçage. Le fichier manifeste doit être accessible avec HTTPS.

Le cache accède au fichier manifeste une fois au démarrage du travail d’amorçage. L’URL SAP générée pour le cache n’est pas exposée.

Créer un travail d’amorçage

Utilisez le portail Azure pour créer une tâche d’amorçage. Affichez votre cache HPC Azure dans le portail et sélectionnez la page Cache principal sous le titre Paramètres.

capture d’écran de la page Priming dans le portail, avec plusieurs tâches à divers stades.

Cliquez sur le texte Démarrer la tâche d’amorçage en haut du tableau pour définir une nouvelle tâche.

Dans le champ Nom du travail, tapez un nom unique pour le travail d’amorçage.

Utilisez le champ de fichier Priming pour sélectionner votre fichier manifeste d’amorçage. Sélectionnez le compte de stockage, le conteneur et le fichier où votre manifeste d’amorçage est stocké.

capture d’écran de la page Démarrer le travail d’amorçage, avec un nom de travail et un chemin d’accès au fichier d’amorçage renseignés. Sous le champ de fichier Priming, vous trouverez un lien intitulé « Sélectionner à partir de l’emplacement d’objet blob existant ».

Pour sélectionner le fichier manifeste d’amorçage, cliquez sur le lien pour sélectionner une cible de stockage. Sélectionnez ensuite le conteneur dans lequel votre fichier manifeste .json est stocké.

Si vous ne trouvez pas le fichier manifeste, votre cache peut ne pas être en mesure d’accéder au conteneur du fichier. Assurez-vous que le cache dispose d’une connectivité réseau au compte de stockage et qu’il est en mesure de lire des données à partir du conteneur.

Gérer les travaux d’amorçage

Les travaux d’amorçage sont répertoriés dans la page Prime cache du portail Azure.

Cette page affiche le nom de chaque tâche, son état, son état actuel et les statistiques récapitulatives de la progression d’amorçage. Le résumé de la colonne Détails est mis à jour régulièrement à mesure que le travail progresse. Le champ État du travail est renseigné au démarrage d’un travail d’amorçage ; ce champ fournit également des informations d’erreur de base telles que le manifeste non valide si un problème se produit.

Pendant qu’un travail est en cours d’exécution, la colonne Pourcentage complet affiche une estimation de la progression.

Avant qu’un travail d’amorçage ne commence, il a l'état En file d'attente. Son état du travail, le pourcentage terminé et les champs Détails sont vides.

capture d’écran de la liste des travaux d’amorçage dans le portail, avec des travaux dans différents états (en cours d’exécution, en pause et réussite). Le curseur a cliqué sur le ... symbole situé à droite de la ligne d’un travail, et un menu contextuel affiche des options pour suspendre ou reprendre.

Cliquez sur la section ... à droite de la table pour suspendre ou reprendre un travail d’amorçage. (La mise à jour de l’état peut prendre quelques minutes.)

Pour supprimer une tâche d’amorçage, sélectionnez-la dans la liste et utilisez la commande Stop en haut du tableau. Vous pouvez utiliser le contrôle Stop pour supprimer un travail dans n’importe quel état.

API REST Azure

Vous pouvez utiliser ces points de terminaison d’API REST pour créer et gérer des travaux d’amorçage HPC Cache. Il s’agit d’une partie de la 2022-05-01 version de l’API REST. Veillez donc à utiliser cette chaîne dans le terme api_version .

Lisez la référence de l’API REST Azure pour apprendre à utiliser ces outils.

Ajouter une nouvelle tâche d’amorçage

L’interface startPrimingJob crée et met en file d’attente une tâche de préparation. Le travail démarre automatiquement lorsque les ressources sont disponibles.


URL: POST

     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/startPrimingJob?api-version=2022-05-01

     BODY:
     {
         "primingJobName": "MY-PRIMING-JOB",
         "primingManifestUrl": "MY-JSON-MANIFEST-FILE-URL"
     }

Pour la primingManifestUrl valeur, transmettez l’URL SAS du fichier ou une autre URL HTTPS accessible au cache. Lisez Upload the priming manifest file pour en savoir plus.

Arrêter un travail d’amorçage

L’interface stopPrimingJob annule un travail (s’il est en cours d’exécution) et le supprime de la liste des travaux. Utilisez cette interface pour supprimer un travail d’amorçage dans n’importe quel état.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/stopPrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-REMOVE"
     }

Obtenir des travaux d’amorçage

Utilisez l’API Get cache pour répertorier les travaux d’amorçage d’un cache. Cette API retourne beaucoup d’informations sur le cache ; recherchez les informations de travail d’amorçage dans la section « Propriétés du cache ».

Les noms et identifiants des travaux d’amorçage sont fournis, ainsi que d’autres informations.


URL: GET 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME?api-version=2022-05-01

BODY:

Suspendre un travail d’amorçage

L’interface pausePrimingJob suspend un travail en cours d’exécution.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/pausePrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-PAUSE"
     }

Reprendre un travail d’amorçage

Utilisez l’interface resumePrimingJob pour réactiver un travail d’amorçage suspendu.


URL: POST 
     https://MY-ARM-HOST/subscriptions/MY-SUBSCRIPTION-ID/resourceGroups/MY-RESOURCE-GROUP-NAME/providers/Microsoft.StorageCache/caches/MY-CACHE-NAME/resumePrimingJob?api-version=2022-05-01

BODY:
     {
         "primingJobId": "MY-JOB-ID-TO-RESUME"
     }

Questions fréquemment posées

  • Puis-je réutiliser un travail d’amorçage ?

    Pas exactement, car chaque tâche d’amorçage dans la liste doit avoir un nom unique. Après avoir supprimé une tâche de démarrage de la liste, vous pouvez créer une nouvelle tâche avec le même nom.

    Vous pouvez créer plusieurs travaux d’amorçage qui référencent le même fichier manifeste.

  • Combien de temps un travail d'amorçage, échoué ou terminé, reste-t-il dans la liste ?

    Les tâches d’amorçage restent dans la liste jusqu’à ce que vous les supprimez. Dans la page du cache Prime du portail, cochez la case en regard de la tâche et sélectionnez le contrôle Arrêter au sommet de la liste, pour supprimer la tâche.

  • Que se passe-t-il si le contenu que je précharge est supérieur à mon stockage de cache ?

    Si le cache devient complet, les fichiers récupérés ultérieurement remplacent les fichiers qui ont été prédéprimés précédemment.

Étapes suivantes