Allocazione della CPU (servizi)

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Per impostazione predefinita, le istanze di container Cloud Run vengono allocate alla CPU solo durante l'elaborazione delle richieste, l'avvio e l'arresto del container. (Consulta il ciclo di vita delle istanze container). Puoi modificare questo comportamento in modo che la CPU sia sempre allocata e disponibile anche quando non ci sono richieste in entrata. L'impostazione della CPU da sempre allocata può essere utile per eseguire attività in background di breve durata e altre attività di elaborazione asincrone.

Illustrazione delle modalità di allocazione della CPU

Tieni presente che, anche se la CPU è sempre allocata, è ancora attiva la scalabilità automatica di Cloud Run e può terminare le istanze di container se non sono necessarie per gestire il traffico in entrata. Un'istanza non rimarrà mai inattiva per più di 15 minuti dopo l'elaborazione di una richiesta, a meno che non venga mantenuta attiva utilizzando le istanze minime.

Combinando la CPU sempre allocata con un numero di istanze minime, si ottiene un numero di istanze di container in esecuzione con accesso completo alle risorse CPU, abilitando i casi d'uso di elaborazione in background.

Impatto sui prezzi

Se scegli di CPU da allocare solo durante l'elaborazione delle richieste, ti vengono addebitati i costi per richiesta e solo quando l'istanza di container elabora una richiesta. Se scegli l'impostazione CPU sempre allocata, ti verrà addebitato il costo dell'intero ciclo di vita dell'istanza del container. Consulta le tabelle dei prezzi di Cloud Run per i dettagli.

Come scegliere l'allocazione della CPU appropriata

La scelta dell'allocazione della CPU appropriata per il tuo caso d'uso dipende da diversi fattori, come pattern di traffico, esecuzione in background e costo, ognuno dei quali è descritto nelle sezioni seguenti.

Considerazioni sui pattern di traffico

  • La CPU allocata solo durante l'elaborazione delle richieste è consigliata quando il traffico in entrata è sporadico, con bursting o picchi.
  • La CPU sempre allocata è consigliata quando il traffico in entrata è costante, a bassa velocità.

Considerazioni sull'esecuzione in background

Se selezioni CPU sempre allocata, puoi eseguire attività in background di breve durata e altre operazioni di elaborazione asincrone dopo la restituzione delle risposte. Ad esempio:

  • Sfruttare gli agenti di monitoraggio come OpenTelemetry che possono presumere di essere in esecuzione in background.
  • Utilizzando le goroutine di Go, Node.js asincroni, i thread Java e le coroutine Kotlin.
  • Utilizzare framework di applicazioni che si basano su funzionalità di pianificazione/background integrate.

Le istanze inattive, incluse quelle mantenute al caldo utilizzando le istanze minime, possono essere arrestate in qualsiasi momento. Se devi completare le attività in sospeso prima che il container venga terminato, puoi intraprendere SIGTERM, per concedere a un'istanza di container un tempo di tolleranza di 10 secondi prima che venga interrotto.

Valuta la possibilità di utilizzare Cloud Tasks per eseguire attività asincrone. Cloud Tasks ripete automaticamente le attività non riuscite e supporta tempi di esecuzione fino a 30 minuti.

Considerazioni sui costi

Se al momento utilizzi CPU allocata solo durante l'elaborazione delle richieste, CPU sempre allocata è probabilmente più economica se:

  • Il tuo servizio Cloud Run sta elaborando un numero elevato di richieste attuali a una frequenza piuttosto costante.
  • Non vedi molte istanze di container quando guardi la metrica conteggio istanze container.

Per stimare le differenze di costo, puoi utilizzare il Calcolatore prezzi.

Impostazione e aggiornamento dell'allocazione della CPU

Qualsiasi modifica della configurazione determina la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Se scegli l'opzione CPU sempre allocata, devi specificare almeno 512 MiB di memoria.

Per impostazione predefinita, la CPU viene allocata solo durante l'elaborazione delle richieste per ogni istanza di container. Puoi modificare questo valore utilizzando la console Google Cloud, la riga di comando gcloud o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione:

Console

  1. Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni del servizio iniziale come preferisci, quindi fai clic su Container, connessioni, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

  5. Seleziona l'allocazione della CPU desiderata in Allocazione e prezzi della CPU. Seleziona CPU allocata solo durante l'elaborazione delle richieste per consentire alle tue istanze di ricevere CPU solo quando ricevono le richieste. Seleziona La CPU è sempre allocata per allocare la CPU per l'intera durata delle istanze container.

  6. Fai clic su Crea o Esegui il deployment.

Riga di comando

Puoi aggiornare l'allocazione della CPU. Per impostare le CPU da allocare sempre per un determinato servizio:

gcloud run services update SERVICE --no-cpu-throttling 

Sostituisci SERVICE con il nome del tuo servizio.

Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:

gcloud run services update SERVICE --cpu-throttling 

Puoi anche impostare l'allocazione della CPU durante il deployment. Per impostare le CPU da allocare sempre:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:

gcloud run deploy --image IMAGE_URL --cpu-throttling

Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.

YAML

Puoi scaricare e visualizzare la configurazione del servizio esistente utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato con il comando gcloud run services replace. Assicurati di modificare solo i campi come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'attributo cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • BOOLEAN con true per impostare l'allocazione della CPU solo durante l'elaborazione della richiesta oppure false per impostare la CPU per l'allocazione sempre.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se si fornisce un nuovo nome di revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non superi i 63 caratteri
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Visualizza le impostazioni di allocazione della CPU

Per visualizzare le impostazioni di allocazione della CPU correnti per il tuo servizio Cloud Run:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli del servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, l'impostazione di allocazione della CPU è elencata nella scheda Container.

Riga di comando

  1. Utilizza il comando seguente:

    gcloud run services describe SERVICE
  2. Individua l'impostazione di allocazione della CPU nella configurazione restituita.