Panoramica della creazione e dell'esecuzione dei job

Questo documento illustra il processo di esecuzione e le opzioni di creazione dei job. I job batch consentono di eseguire carichi di lavoro di elaborazione batch su Google Cloud. Per informazioni sui componenti di un job e sui prerequisiti per l'utilizzo di Batch, consulta la Guida introduttiva all'utilizzo di Batch.

Come funzionano la creazione e l'esecuzione dei job

Per utilizzare Batch, devi creare un job che specifica il tuo carico di lavoro e i suoi requisiti, quindi Batch lo esegue automaticamente.

I dettagli del funzionamento della creazione e dell'esecuzione dei job sono descritti nelle seguenti sezioni:

Ciclo di vita del job

Questa sezione descrive il ciclo di vita di un job e le sue attività dalla creazione all'eliminazione.

Per ogni carico di lavoro da eseguire su Batch, devi seguire il seguente processo di base:

  1. Crea un job: definisci il carico di lavoro da eseguire specificando gli elementi eseguibili, le attività e qualsiasi altro requisito di un job. I dettagli per la creazione di un job sono introdotti nella sezione Opzioni di creazione job di questo documento.
  2. Monitora il job e risolvi i relativi problemi: quando hai finito di creare un job, quest'ultimo viene automaticamente inserito in coda, pianificato ed eseguito sulle risorse specificate. Puoi visualizzare i dettagli di un job creato o di una qualsiasi delle sue attività per verificare lo stato attuale. Quando un job è in esecuzione o terminato, puoi anche monitorare e analizzare il job utilizzando i log. Se un job non va a buon fine, puoi risolvere i problemi utilizzando eventuali messaggi di errore, eventi di stato o log per diagnosticare il problema prima di ricreare il job.
  3. Elimina o esporta il job: i log di un job vengono conservati ed eliminati automaticamente in base al criterio di conservazione di Cloud Logging. Le altre informazioni di un job rimangono disponibili in Batch finché non vengono eliminate da te o da Google Cloud. Google Cloud elimina automaticamente un job 60 giorni dopo il suo completamento. Prima di allora, puoi facoltativamente eliminare il job personalmente oppure, se hai bisogno di conservare le informazioni, puoi esportarlo prima che venga eliminato.

Dopo aver creato un job, il job avanza nei seguenti stati:

  1. In coda (QUEUED): la richiesta di job è stata accettata ed è in attesa in coda. Il job rimane in coda finché le risorse richieste non sono disponibili e i job precedenti non sono stati valutati.
  2. Pianificato (SCHEDULED): il job è stato selezionato dalla coda per l'avvio e le risorse sono in fase di allocazione.
  3. In esecuzione (RUNNING): le risorse per il job sono state create correttamente e le attività possono iniziare a essere eseguite.

    Quando un job è in esecuzione, ciascuna delle sue attività avanza attraverso i seguenti stati:

    1. In attesa (PENDING): l'attività è in attesa di esecuzione di una VM.
    2. Assegnata (ASSIGNED): all'attività è stata assegnata una VM da eseguire.
    3. In esecuzione (RUNNING): l'attività è in esecuzione su una VM.
    4. Un'attività viene completata in uno dei seguenti stati:
      • Riuscita (SUCCEEDED): l'attività è riuscita perché ciascuno dei suoi elementi eseguibili è riuscito (ha restituito un codice di uscita pari a zero) o è stato contrassegnato come non critico utilizzando il campo Ignora stato di uscita (ignoreExitStatus).
      • Non riuscita (FAILED): l'attività non è riuscita perché almeno uno dei suoi elementi eseguibili critici non è riuscito (è stato restituito un codice di uscita diverso da zero).
  4. Un job viene completato in uno dei seguenti stati:

    • Riuscito (SUCCEEDED): tutte le attività del job sono riuscite.
    • Non riuscita (FAILED): almeno un'attività del job non è riuscita.

Per ulteriori informazioni, consulta stati dei job e stati delle attività nella documentazione di riferimento.

Inserimento in coda e pianificazione dei job

In genere, è più probabile che i job vengano eseguiti e completati prima se sono più piccoli e richiedono solo poche risorse comuni. Per i job di esempio nella documentazione di Batch, che sono in genere molto piccoli e utilizzano risorse minime, potresti vederli terminare in pochi minuti.

In particolare, il tempo impiegato da un job per completare l'accodamento e la pianificazione varia a seconda dei job e in orari diversi in base ai seguenti fattori:

  • Disponibilità delle risorse del job: la disponibilità delle risorse richieste dal job all'interno delle località consentite.

    Innanzitutto, un job non può essere eseguito se specifichi risorse non offerte in quella località. In questo caso, il job non riesce e viene generato un errore di disponibilità della zona.

    In secondo luogo, è più probabile che un job venga ritardato o non vada a buon fine se una delle risorse richieste presenta una capacità ridotta rispetto alla domanda attuale a causa di errori di disponibilità delle risorse. Di conseguenza, il job potrebbe essere eseguito prima se hai bisogno di meno risorse più comuni e non limitano l'esecuzione del job in tutte le zone di una regione.

    Per ulteriori informazioni sulle risorse per un job, consulta Esecuzione del job in questo documento. Per ulteriori informazioni sulle località che puoi specificare per un job batch e le relative risorse, consulta la pagina Location.

  • Priorità job: la priorità di un job rispetto alle priorità di altri job nel progetto.

    Facoltativamente, puoi specificare la priorità di un job includendo il flag --priority per gcloud CLI o il campo JSON priority. Puoi definire la priorità di un job come un numero compreso tra 0 (priorità più bassa) e 99 (priorità più alta). L'impostazione di una priorità più alta può aiutare un job a essere eseguito prima dei job con priorità più bassa nel tuo progetto.

    Se non configuri la priorità di un job, per impostazione predefinita viene usata la priorità più bassa, 0. Se due job in coda hanno la stessa priorità, il job creato per primo ha la priorità più alta.

  • Quote e limiti: le soglie previste dal tuo progetto per le risorse e le richieste di Google Cloud.

    Un job non può essere eseguito se supera un limite o la quota del progetto per una qualsiasi delle risorse o richieste richieste. In questo caso, Batch potrebbe ritardare un job e riprovare in un secondo momento oppure non riuscire a eseguire il job e visualizzare un errore correlato.

    Puoi contribuire a evitare ritardi ed errori per il tuo job creando job che rispettano tutti i limiti pertinenti e assicurandoti che il progetto disponga di una quota rilevante sufficiente. Per ulteriori informazioni, consulta Quote e limiti per i batch.

Esecuzione del job

Il tempo necessario per l'esecuzione di un job può variare in base alla pianificazione dell'attività e alle risorse del job.

Pianificazione attività

Quando un job viene eseguito, le sue attività vengono pianificate in base al campo del criterio di pianificazione (schedulingPolicy), che consente di specificare una delle seguenti opzioni:

  • Il prima possibile (AS_SOON_AS_POSSIBLE) (impostazione predefinita): le attività vengono eseguite non appena le risorse sono disponibili e possono essere eseguite in parallelo. Il numero di attività eseguite contemporaneamente dipende dalle attività parallele per VM consentite dalle risorse del job e da altre opzioni di configurazione, come spiegato nella sezione Risorse del job in questo documento.
  • In ordine (IN_ORDER): le attività vengono eseguite una alla volta in ordine di indicizzazione crescente.

Risorse del lavoro

Ogni job batch viene eseguito su un gruppo di istanze gestite a livello di regione, ovvero un gruppo di una o più istanze di macchine virtuali (VM) Compute Engine corrispondenti, ciascuna situata in una delle zone incluse. Ogni VM ha un hardware dedicato per i core delle CPU (in particolare CPU virtuali (vCPU)) e memoria, che influisce sulle prestazioni del job, e un disco di avvio, che archivia un'immagine del sistema operativo (OS) e le istruzioni per l'esecuzione del job.

Durante il tempo di esecuzione di un job, Batch crea ed elimina automaticamente le risorse che soddisfano le tue specifiche. Quando crei un job, ne configuri le risorse specificando quanto segue:

  • Devi specificare le risorse di calcolo (vCPU, memoria e, se richiesto) spazio di archiviazione su disco di avvio aggiuntivo, necessarie per l'esecuzione di ogni attività, a meno che i valori predefiniti non siano sufficienti. Per ulteriori informazioni, consulta il campo Risorse di calcolo per attività (computeResource) e i campi secondari.

  • Facoltativamente, puoi anche specificare i tipi di VM da utilizzare e le risorse aggiuntive per ogni VM, come GPU e volumi di archiviazione. Se non specifichi queste opzioni, Batch seleziona i tipi di VM compatibili e non aggiunge altre risorse. Per ulteriori informazioni, consulta il campo Risorse istanza VM (instances[]) e i campi secondari.

Il numero di VM e il numero di attività che possono essere eseguite contemporaneamente su ciascuna VM variano a seconda dei job in base alla pianificazione delle attività e ai requisiti hardware specificati. Se specifichi che le attività di un job devono essere eseguite IN_ORDER, il job ha una VM ed esegue una sola attività alla volta. In caso contrario, se le attività di un job eseguono AS_SOON_AS_POSSIBLE, puoi stimare il numero di VM e il numero di attività simultanee utilizzando la seguente formula:

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

Questa formula ha i seguenti valori:

  • \({vmsPerJob}\): il numero massimo di VM per un job. La quantità effettiva di VM create per un job potrebbe essere inferiore a questa, ad esempio se Batch prevede che l'esecuzione di un job con meno risorse sia più veloce rispetto ad attendere più risorse. Questo valore è limitato anche dai limiti di VM simultanee per job.
  • \({taskCount}\): il numero totale di attività per il job, che definisci utilizzando il campo del numero di attività (taskCount).
  • \({parallelTasksPerVM}\): il numero massimo di attività che possono essere eseguite contemporaneamente su una VM.

    Questo valore viene determinato da tutti i seguenti criteri:

Opzioni di creazione job

Creare ed eseguire un job di base illustra le nozioni di base, tra cui come definire un eseguibile utilizzando uno script o un'immagine container e come configurare variabili di ambiente predefinite e personalizzate.

Dopo aver compreso i concetti di base della creazione dei job, valuta la possibilità di creare un job che utilizzi una o più delle seguenti opzioni di configurazione aggiuntive:

  • Controlla l'accesso per un job:

  • Configura opzioni aggiuntive per un job:

    • Nella pagina Configura la comunicazione delle attività utilizzando una libreria MPI viene spiegato come configurare un job con attività interdipendenti che comunicano tra loro su diverse VM utilizzando una libreria MPI (Message Passing Interface). Un caso d'uso comune per gli MPI sono i carichi di lavoro del computing ad alte prestazioni (HPC).

    • Personalizza le risorse su cui viene eseguito un job:

      • Nella pagina Definisci le risorse del job utilizzando un modello di istanza VM viene spiegato come specificare un modello VM di Compute Engine per definire le risorse di un job quando lo crei.

      • Utilizzo delle GPU per un job spiega come definire un job che utilizza una o più GPU (Graphics Processing Unit). I casi d'uso comuni per job che utilizzano GPU includono carichi di lavoro intensivi di elaborazione dati o di machine learning (ML).

      • Utilizzo dei volumi di archiviazione per un job spiega come definire un job che possa accedere a uno o più volumi di archiviazione esterni. Le opzioni di archiviazione includono dischi permanenti nuovi o esistenti, nuovi SSD locali, bucket Cloud Storage esistenti e un file system di rete (NFS) esistente come una condivisione file di Filestore.

      • La panoramica dell'ambiente del sistema operativo VM offre una panoramica su quando e come puoi personalizzare l'ambiente del sistema operativo VM per un job, compresi i dischi di avvio e l'immagine del sistema operativo VM del job.

    • Ottimizzare i vari aspetti di un lavoro:

      • Migliorare monitoraggio e analisi:

      • Automatizzare i nuovi tentativi delle attività spiega come riprovare automaticamente le attività di un job dopo tutti gli errori o quelli specificati. I nuovi tentativi automatici possono contribuire a ridurre le difficoltà di risoluzione dei problemi e il tempo di esecuzione complessivo necessario per i job che si verificano errori temporanei. Ad esempio, utilizza i nuovi tentativi automatici per un job eseguito su VM spot che offrono sconti significativi, ma potrebbero non essere sempre disponibili e possono essere prerilasciati in qualsiasi momento.

      • Colloca le VM per ridurre la latenza spiega come ridurre la latenza di rete tra le VM di un job richiedendo che le VM siano fisicamente vicine tra loro. Questi vantaggi in termini di prestazioni possono essere particolarmente utili per i job con frequenti comunicazioni di rete tra le VM, ad esempio attività che comunicano utilizzando librerie MPI.

      • Nella pagina Garantire la disponibilità delle risorse utilizzando le prenotazioni VM viene spiegato come configurare un job eseguibile su VM prenotate. L'utilizzo delle VM prenotate può aiutarti a ridurre al minimo i tempi di pianificazione di un job, a evitare errori di disponibilità delle risorse e a ottimizzare i costi.

      • La sezione Utilizza flusso di immagini spiega come migliorare i tempi di avvio dei job inviando immagini di container in modalità flusso da Artifact Registry.

  • Utilizza servizi aggiuntivi per creare ed eseguire job:

Passaggi successivi