Condividi tramite


Precaricare i file in Cache HPC di Azure

La funzionalità di priming di Cache HPC di Azure consente ai clienti di precaricare i file nella cache.

È possibile usare questa funzionalità per recuperare il set di lavoro dei file previsto e popolare la cache prima dell'inizio del lavoro. Questa tecnica viene talvolta chiamata cache warming.

Il priming della cache migliora le prestazioni aumentando gli hit nella cache. Se un computer client richiede una risorsa che deve essere letta dall'archiviazione back-end, la latenza per il recupero e la restituzione del file può essere significativa, soprattutto se il sistema di archiviazione è un NAS locale. Se si effettua il priming della cache con i file necessari prima di avviare un'attività di calcolo, le richieste di file saranno più efficienti durante il processo.

Questa funzionalità usa un file manifesto JSON per specificare i file da caricare. Ogni processo di priming accetta un singolo file manifesto.

Creare processi di priming della cache usando il portale di Azure o con gli endpoint dell'API REST di Azure menzionati alla fine di questo documento.

È possibile creare fino a 10 attività di priming. A seconda delle dimensioni della cache, è possibile eseguire contemporaneamente da 3 a 10 processi di priming; altri vengono accodati fino a quando le risorse non vengono liberate.

Configurazione e prerequisiti

Prima di poter creare un processo di priming, seguire questa procedura:

  1. Creare una Cache HPC di Azure. (Per assistenza, fare riferimento a Creare una Cache HPC di Azure.)
  2. Definire almeno una destinazione di archiviazione, inclusa la creazione del relativo percorso (o percorsi) dello spazio dei nomi aggregato. Documentazione sulla destinazione di archiviazione
  3. Creare il manifesto del processo di priming (vedere le istruzioni di seguito) e archiviarlo in un contenitore BLOB accessibile alla cache HPC. In alternativa, se si usano le API REST di Azure per creare i processi di priming, è possibile archiviare il manifesto in qualunque URL accessibile dalla cache HPC.

Creare un file manifesto di priming

Il manifesto di priming è un file JSON che definisce il contenuto che verrà precaricato nella cache quando viene eseguito il processo di priming.

Nel manifesto, specificare il percorso dello spazio dei nomi per le directory o i file da precaricare. È anche possibile configurare regole di inclusione ed esclusione per personalizzare il contenuto caricato.

Manifesto di priming di esempio


{
    "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$"]
}

Esistono tre sezioni del file manifesto di priming:

  • Configurazione (config): impostazioni per il processo di priming

  • Istruzioni di file e directory:

    • files: singoli file che verranno precaricati
    • directories: percorsi di file che verranno precaricati
  • Istruzioni di inclusione ed esclusione globali (include e exclude): stringhe di espressioni regolari che modificano l'attività di priming della directory

Impostazioni di configurazione

La sezione config del file manifesto imposta questi parametri:

  • Modalità cache: imposta il comportamento del processo di priming. Le opzioni sono:

    • 0 - Dati: caricare tutti i dati e gli attributi del file specificati nella cache. Si tratta dell'impostazione predefinita.
    • 1 - Metadati: caricare solo gli attributi del file.
    • 2 - Stima: caricare gli attributi del file e restituire anche un numero stimato di file, directory e dimensioni totali dei dati (in byte) di cui verrebbe eseguito il priming se il contenuto in questo manifesto venisse eseguito in modalità Dati.
  • maxreadsize: imposta il numero massimo di byte che verranno precaricati per ogni file. Lasciare impostato su 0 (impostazione predefinita) per caricare sempre l'intero file, indipendentemente dalle dimensioni.

  • resolve_symlink: impostare su true (1) se si desidera risolvere i collegamenti simbolici durante il priming. Se resolve_symlink è abilitato, le destinazioni dei collegamenti simbolici vengono caricate completamente, indipendentemente dalle regole di inclusione ed esclusione.

  • threads: il numero di thread di priming da usare. I valori validi sono compresi tra 1 e 128. Il valore predefinito è 8, per un bilanciamento tra priming e il servizio delle richieste client.

  • skip_estimation: prima di iniziare la copia dei file, il processo di priming esegue una stima della quantità di dati di cui eseguire il priming. Impostare il flag skip_estimation su true (1) se si desidera passare direttamente alla fase di priming del file. Se si ignora la fase di stima, il report di stato potrebbe essere meno accurato. Il valore predefinito è 0, per includere la fase di stima.

Percorso di file e directory

Le sezioni files e directories del manifesto specificano quali file vengono precaricati durante il processo di priming.

Specificare file e directory in base ai percorsi dello spazio dei nomi della cache. Questi sono gli stessi percorsi usati dai client per accedere ai file tramite la cache HPC e non devono essere uguali ai percorsi di sistema di archiviazione o ai nomi di esportazione. Per altre informazioni, leggere Pianificare lo spazio dei nomi aggregato.

Avviare i percorsi dalla radice dello spazio dei nomi della cache.

Nota

Gli elementi elencati in files vengono inclusi anche se corrispondono a regole di esclusione successive.

Il valore directories contiene un elenco di percorsi valutati per il precaricamento del contenuto nella cache. Tutti le sottostrutture vengono incluse nel processo di priming, a meno che non vengano escluse in modo specifico.

I valori del percorso della directory possono includere istruzioni di inclusione ed esclusione personalizzate, che si applicano solo al percorso con cui vengono definite. Ad esempio, la riga "directories": [{"path": "/cache/library1", "exclude": "\\.bak$"}] precarica tutti i file nel percorso dello spazio dei nomi /cache/library1/ ad eccezione dei file in tale percorso che terminano con .bak.

Le istruzioni di inclusione/esclusione a livello di directory non corrispondono alle istruzioni di inclusione ed esclusione globali descritte di seguito. Prestare attenzione a leggere i dettagli sul modo in cui le istruzioni a livello di directory interagiscono con le istruzioni di inclusione ed esclusione globali.

Nota

A causa del modo in cui viene analizzato il file manifesto, sono necessari due caratteri di escape per proteggere un carattere stringa problematico nelle istruzioni di inclusione ed esclusione. Ad esempio, usare l'espressione \\.txt per trovare la corrispondenza con i file .txt.

Istruzioni di inclusione ed esclusione

Dopo i file e le directory, è possibile specificare istruzioni include e exclude globali. Queste impostazioni globali si applicano a tutte le directory. Non si applicano ai file specificati in un'istruzione files.

In generale, le regole vengono confrontate nell’ordine, quindi le istruzioni visualizzate in precedenza nel file manifesto vengono applicate prima di quelle successive. Le descrizioni in questo articolo presuppongono, inoltre, che le regole precedenti siano già state applicate e non corrispondano.

  • Istruzioni di inclusione: durante l'analisi delle directory, il processo di priming ignora tutti i file che non corrispondono alle espressioni regolari nell'impostazione include.

  • Istruzioni di esclusione: durante l'analisi delle directory, il processo di priming ignora tutti i file che corrispondono alle espressioni regolari nell'impostazione exclude.

    Altre informazioni sull'interazione delle regole di esclusione globali con altre regole:

    • Le regole di esclusione globali sostituiscono le regole di inclusione globali. Pertanto, se un nome file corrisponde sia a un’espressione di inclusione globale che a un’espressione di esclusione globale, non verrà precaricata dal processo di priming.

    • Le regole di inclusione a livello di directory sostituiscono regole di esclusione globali.

      Un nome file che corrisponde sia a un’espressione di inclusione a livello di directory che a un’espressione di esclusione globale verrà precaricato dal processo di priming.

    • Le istruzioni di file sostituiscono tutte le regole di esclusione.

È possibile omettere le istruzioni di inclusione ed esclusione per inserire tutti i file nelle directory.

Altre informazioni sulle regole di inclusione/esclusione e sul modo in cui corrispondono ai nomi file:

  • Se un nome corrisponde a una voce nell'elenco di esclusione per directory, viene ignorato.

  • Se esiste un elenco di inclusione per directory, il nome viene incluso o escluso a seconda che venga visualizzato o meno in tale elenco.

  • Se un nome corrisponde a una voce nell'elenco di esclusione globale, viene ignorato.

  • Se esiste un elenco di inclusioni globale, il nome viene incluso se viene visualizzato nell'elenco o escluso se non viene visualizzato in tale elenco.

  • Se esiste un elenco di inclusione per directory, il nome viene escluso. In caso contrario, viene incluso.

  • Se una directory e un predecessore di tale directory vengono entrambi visualizzati nell'elenco delle directory, le regole specifiche per la directory vengono applicate insieme alle regole globali e le regole per la directory predecessore vengono ignorate.

  • Nomi e regole distinguono maiuscole e minuscole. Le origini che non distinguono maiuscole e minuscole non sono supportate.

  • Il numero totale di regole di file e regole di directory non può essere superiore a 4000. Il numero di regole di espressioni regolari per ogni elenco di inclusione/esclusione non può essere superiore a 5.

  • Se una specifica di directory si sovrappone a un'altra, ha la precedenza quella con il percorso più esplicito.

  • È un errore per un manifesto specificare più volte lo stesso percorso nell'elenco di file o nell'elenco di directory.

Caricare un file manifesto di priming

Quando il file manifesto è pronto, caricarlo in un contenitore BLOB di Azure in un account di archiviazione accessibile dalla cache HPC. Se si usano LE API anziché il portale per creare i processi di priming, è possibile l’archiviazione in un altro server Web, ma è necessario eseguire passaggi diversi per accertarsi che la cache possa accedervi.

  • Se si crea un processo di priming dal portale di Azure, selezionare il file manifesto nella pagina delle impostazioni Priming cache della cache HPC, come descritto di seguito. Selezionandolo dalle impostazioni della cache, viene creato automaticamente una firma di accesso condiviso (SAS) che fornisce alla cache l'accesso limitato al file di priming.

  • Se si usano le API per creare il processo di priming anziché usare il portale, accertarsi che la cache sia autorizzata ad accedere a tale file. Archiviare il file in un percorso accessibile, ad esempio in un server Web controllato all’interno della cache o della rete di archiviazione, oppure creare manualmente un URL SAS per il file di priming.

    Per informazioni su come creare un URL SAS dell'account per il file manifesto di priming, leggere Concedere l'accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS). Il file manifesto deve essere accessibile con HTTPS.

La cache accede al file manifesto una sola volta all'avvio del processo di priming. L'URL SAS generato per la cache non è esposto.

Creare un processo di priming

Usare il portale di Azure per creare un processo di priming. Visualizzare Cache HPC di Azure nel portale e selezionare la pagina Priming cache nell’intestazione Impostazioni.

Screenshot della pagina Priming nel portale, con diversi processi in vari stati.

Fare clic sul testo Avvia processo di priming nella parte superiore della tabella per definire un nuovo processo.

Nel campo Nome processo, digitare un nome univoco per il processo di priming.

Usare il campo File priming per selezionare il file manifesto di priming. Selezionare l'account di archiviazione, il contenitore e il file in cui è archiviato il manifesto di priming.

Screenshot della pagina Avvia processo di priming, con il nome di un processo e un percorso del file priming compilato. Sotto il campo File priming è presente un collegamento con etichetta

Per selezionare il file manifesto di priming, fare clic sul collegamento per selezionare una destinazione di archiviazione. Selezionare, quindi, il contenitore in cui è archiviato il file manifesto .json.

Se non è possibile trovare il file manifesto, la cache potrebbe non essere in grado di accedere al contenitore del file. Accertarsi che la cache disponga della connettività di rete all'account di archiviazione e sia in grado di leggere i dati dal contenitore.

Gestire processi di priming

I processi di priming sono elencati nella pagina Priming cache nel portale di Azure.

Questa pagina mostra il nome di ogni processo, lo stato, lo stato corrente e le statistiche di riepilogo sullo stato del priming. Il riepilogo nella colonna Dettagli viene aggiornato periodicamente mano a mano che il processo procede. Il campo Stato processo viene popolato all'avvio di un processo di priming; questo campo fornisce anche informazioni su errori di base, ad esempio Manifesto non valido, se si verifica un problema.

Durante l'esecuzione di un processo, la colonna Percentuale di completamento mostra una stima dello stato.

Prima dell'avvio di un processo di priming, lo stato è In coda. I campi Stato processo, Percentuale di completamento e Dettagli sono vuoti.

Screenshot dell'elenco dei processi di priming nel portale, con processi in vari stati (esecuzione, sospeso e riuscito). Il cursore ha fatto clic sul simbolo ... a destra della riga di un processo e un menu di scelta rapida mostra le opzioni di sospensione e ripresa.

Fare clic sulla sezione ... a destra della tabella per sospendere o riprendere un processo di priming. L’aggiornamento dello stato potrebbe richiedere alcuni minuti.

Per eliminare un processo di priming, selezionarlo nell'elenco e usare il controllo Arresta nella parte superiore della tabella. È possibile usare il controllo Arresta per eliminare un processo in qualunque stato.

API REST di Azure

È possibile usare questi endpoint dell’API REST per creare e gestire processi di priming della cache HPC. Fanno parte della versione 2022-05-01 dell'API REST, per cui occorre accertarsi di usare tale stringa nel termine api_version.

Per informazioni su come usare questi strumenti, leggere Informazioni di riferimento sull'API REST di Azure.

Aggiungere un nuovo processo di priming

L'interfaccia startPrimingJob crea e accoda un processo di priming. Il processo viene avviato automaticamente quando sono disponibili le risorse.


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"
     }

Per il valore primingManifestUrl, passare l'URL SAS del file o a un altro URL HTTPS accessibile alla cache. Per altre informazioni, leggere Caricare un file manifesto di priming.

Arrestare un processo di priming

L'interfaccia stopPrimingJob annulla un processo (se è in esecuzione) e lo rimuove dall'elenco di processi. Usare questa interfaccia per eliminare un processo di priming in qualunque stato.


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"
     }

Ottenere i processi di priming

Usare l'API Get cache per elencare i processi di priming della cache. Questa API restituisce numerose informazioni sulla cache; cercare le informazioni sul processo di priming nella sezione "proprietà cache".

Vengono restituiti i nomi e gli ID dei processi di priming, insieme ad altre informazioni.


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:

Sospendere un processo di priming

L'interfaccia pausePrimingJob sospende un processo in esecuzione.


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"
     }

Riprendere un processo di priming

Usare l'interfaccia resumePrimingJob per riattivare un processo di priming sospeso.


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"
     }

Domande frequenti

  • È possibile riutilizzare processo di priming?

    Non esattamente, perché ogni processo di priming nell'elenco deve avere un nome univoco. Dopo aver eliminato un processo di priming dall'elenco, è possibile creare un nuovo processo con lo stesso nome.

    È possibile creare più processi di priming che fanno riferimento allo stesso file manifesto.

  • Per quanto tempo un processo di priming non riuscito o completato rimane nell'elenco?

    I processi priming vengono mantenuti nell'elenco fino a quando vengono eliminati. Nella pagina Priming cache del portale, selezionare la casella di controllo accanto al processo, quindi selezionare il controllo Arresta nella parte superiore dell’elenco per eliminare il processo.

  • Cosa accade se il contenuto che si sta precaricando è più grande dello spazio di archiviazione della cache?

    Se la cache si riempie, i file recuperati in un secondo momento sovrascriveranno i file di cui è già stato eseguite il priming.

Passaggi successivi