Allocazione della CPU (servizi)

Per impostazione predefinita, alle istanze Cloud Run viene allocata la CPU solo durante l'elaborazione delle richieste e l'avvio e l'arresto del container. (fai riferimento al ciclo di vita dell'istanza). Puoi modificare questo comportamento in modo che la CPU venga sempre allocata e disponibile anche quando non ci sono richieste in entrata. Impostare la CPU da allocare sempre può essere utile per eseguire attività in background di breve durata e altre attività di elaborazione asincrone.

Illustrazione delle modalità di allocazione della CPU

Anche se la CPU viene sempre allocata, la scalabilità automatica di Cloud Run è ancora attiva e potrebbe terminare le istanze se non sono necessarie per gestire il traffico in entrata o l'utilizzo attuale della CPU al di fuori delle richieste. Un'istanza non rimane mai inattiva per più di 15 minuti dopo l'elaborazione di una richiesta, a meno che non venga mantenuta attiva con un numero minimo di istanze.

La combinazione di CPU sempre allocata con un numero di istanze minime permette di avere diverse istanze attive e in esecuzione con accesso completo alle risorse della CPU, consentendo casi d'uso di elaborazione in background. Quando utilizzi questo pattern, Cloud Run applica la scalabilità automatica delle istanze anche se un servizio utilizza CPU al di fuori di qualsiasi richiesta.

Se usi probe di controllo di integrità, la CPU viene allocata per ogni probe. Consulta i probe di integrità del container per i dettagli di fatturazione.

Impatto sui prezzi

Se scegli la CPU da allocare solo durante l'elaborazione delle richieste, ti viene addebitato il costo per richiesta e solo quando l'istanza elabora una richiesta. Se scegli l'impostazione CPU sempre allocata, ti viene addebitato l'intero ciclo di vita dell'istanza. Per informazioni dettagliate, consulta le tabelle dei prezzi di Cloud Run.

Il motore per suggerimenti di Google analizza automaticamente il traffico ricevuto dal tuo servizio Cloud Run nell'ultimo mese e consiglia di passare dalla CPU allocata durante le richieste alla CPU sempre allocata, se questa opzione è più economica.

Come scegliere l'allocazione appropriata della CPU

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

Considerazioni sui pattern di traffico

  • Si consiglia di utilizzare CPU allocata solo durante l'elaborazione delle richieste quando il traffico in entrata è sporadico, bursante o picco.
  • Si consiglia di utilizzare CPU sempre allocata quando il traffico in entrata è costante e con variazioni lente.

Considerazioni sull'esecuzione in background

La selezione di CPU sempre allocata ti consente di eseguire attività in background di breve durata e altre attività di elaborazione asincrona dopo la restituzione delle risposte. Ad esempio:

  • Sfruttare agenti di monitoraggio come OpenTelemetry che potrebbero presumere di essere in grado di essere in grado di essere eseguiti in background.
  • Utilizzo di goroutine di Go, asincrono Node.js, thread Java e coroutine Kotlin.
  • Utilizzo di framework applicativi che si basano su funzionalità di pianificazione/sfondo integrate.

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

Valuta la possibilità di utilizzare Cloud Tasks per eseguire attività asincrone. Cloud Tasks ritenta 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 elabora un numero elevato di richieste attuali a una velocità piuttosto costante.
  • Quando esamini la metrica del numero di istanze, non vengono visualizzate molte istanze "inattive".

Puoi utilizzare il Calcolatore prezzi per stimare le differenze di costo.

Scalabilità sempre allocata della CPU da zero

La scalabilità da zero può essere attivata solo da una richiesta, quindi un servizio che non elabora le richieste non può scalare da zero. Per questi carichi di lavoro, puoi impostare un numero minimo di istanze > 0 o includere una "richiesta di riattivazione" nel progetto per riavviare l'elaborazione dopo la scalabilità a zero.

Scalabilità sempre allocata della CPU a zero

Dal momento che nessuna istanza è mai allo 0% di CPU, esaminando tutto l'utilizzo della CPU non comporterebbe mai una scalabilità a zero. Ciò significa che la decisione di scalare da uno a zero può essere presa solo verificando se l'istanza sta elaborando una richiesta.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run si interfaccia con le API Google Cloud, ad esempio le librerie client di Cloud, consulta la guida alla configurazione delle identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Imposta e aggiorna l'allocazione della CPU

Qualsiasi modifica alla configurazione porta alla 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. Nella console Google Cloud, vai a Cloud Run:

    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 e poi su Modifica ed esegui il deployment di una nuova revisione.

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

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Seleziona l'allocazione della CPU che preferisci in Allocazione e prezzi della CPU. Seleziona La CPU viene allocata solo durante l'elaborazione delle richieste per fare in modo che le tue istanze ricevano CPU solo quando ricevono richieste. Seleziona La CPU è sempre allocata per allocare la CPU per l'intera durata delle istanze.
  5. 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 in modo che siano sempre allocate:

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. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creato. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    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 su sempre allocata.
    • REVISION con un nuovo nome di revisione o eliminala (se presente). Se fornisci un nuovo nome per la revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il comando seguente:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, vedi Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione di Terraform, in template.containers.resources.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Visualizza le impostazioni di allocazione della CPU

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

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli 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 questo comando:

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