Allocazione della CPU (servizi)

Per impostazione predefinita, alle istanze Cloud Run viene allocata la CPU solo durante l'elaborazione delle richieste, l'avvio e l'arresto del container. (Consultare ciclo di vita dell'istanza). 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 come sempre allocata può essere utile per l'esecuzione di attività in background di breve durata e di altre attività di elaborazione asincrona.

Illustrazione delle modalità di allocazione della CPU

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

Combinazione di CPU sempre allocata con un numero minimo di istanze minime rende operative alcune istanze con accesso completo alla CPU per l'elaborazione in background. Quando utilizzi questo pattern, Cloud Run applica l'autoscaling delle istanze anche se un servizio utilizza la CPU al di fuori di qualsiasi richiesta.

Se utilizzi i controlli di salute, la CPU viene allocata per ogni controllo. Consulta i controlli di integrità dei container per dettagli sulla fatturazione.

Impatto sui prezzi

Se scegli di allocare la CPU solo durante l'elaborazione delle richieste, ti vengono addebitati i costi per richiesta e solo quando l'istanza elabora una richiesta. Se scegli l'impostazione CPU sempre allocata, ti vengono addebitati i costi dell'intero ciclo di vita dell'istanza. Per i dettagli, consulta le tabelle dei prezzi di Cloud Run.

Il motore per suggerimenti di Google esamina automaticamente il traffico ricevuto il tuo servizio Cloud Run nell'ultimo mese e ti consiglierà di passare dalla CPU allocata durante le richieste a CPU sempre allocata, se è più economica.

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 i pattern di traffico, l'esecuzione in background e il costo, ciascuno descritto nelle sezioni seguenti.

Considerazioni sui pattern di traffico

  • Si consiglia di utilizzare CPU allocata solo durante l'elaborazione delle richieste quando in entrata Il traffico è sporadico, intenso o intenso.
  • L'opzione La CPU è sempre allocata è consigliata quando il traffico in entrata è costante e varia lentamente.

Considerazioni sull'esecuzione in background

La selezione di CPU sempre allocata ti consente di eseguire attività in background di breve durata e altro lavoro di elaborazione asincrona dopo aver restituito le risposte. Ad esempio:

  • Sfruttare agenti di monitoraggio come OpenTelemetry che potrebbero presumere di poter essere eseguiti in background.
  • Utilizzo delle coroutine di Go, dell'async di Node.js, dei thread Java e delle coroutine di Kotlin.
  • Utilizzo di framework di applicazioni che si basano su pianificazione/background integrati le funzionalità di machine learning.

Istanze inattive, incluse quelle mantenute in uso utilizzando un numero minimo di istanze, può essere arrestata in qualsiasi momento. Se devi completare attività in sospeso prima il container è terminato, puoi intercettare SIGTERM 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 i tempi di esecuzione fino a 30 minuti.

Considerazioni sui costi

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

  • Il tuo servizio Cloud Run sta elaborando un numero elevato di richieste attuali a un ritmo piuttosto costante.
  • Non vedi molte istanze "inutilizzate" quando esamini la metrica Conteggio istanze.

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

Considerazioni sulla scalabilità automatica

Cloud Run scala automaticamente il numero di istanze di container.

Per un servizio impostato su CPU allocata solo durante l'elaborazione delle richieste, Cloud Run scala automaticamente il numero di istanze in base all'utilizzo della CPU solo durante l'elaborazione delle richieste.

Per un servizio impostato su CPU sempre allocata, Cloud Run scala automaticamente il numero di istanze in base all'utilizzo della CPU per l'intero ciclo di vita dell'istanza di container, tranne quando si aumenta la scalabilità da e verso zero, in cui utilizza solo le richieste.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment dei servizi Cloud Run, chiedi all'amministratore di concederti 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 servizio Cloud Run interagisce con le API Google Cloud, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.

Imposta e aggiorna l'allocazione della CPU

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive acquisiranno 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 container in esecuzione in un'istanza Compute Engine. Puoi modificare questa impostazione utilizzando la console Google Cloud, lo strumento riga di comando o un file YAML quando crei un nuovo servizio 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 Esegui il deployment del container e seleziona Servizio per nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi fai clic su Modifica ed esegui il deployment di una nuova revisione.

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

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Seleziona l'allocazione della CPU desiderata in Allocazione e prezzi delle CPU. Seleziona La CPU viene allocata solo durante l'elaborazione delle richieste per fare in modo che le istanze ricevano CPU solo quando ricevono richieste. Seleziona La CPU è sempre allocata per allocare la CPU per l'intera durata dei di Compute Engine.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

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 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 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, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. 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 servizio Cloud Run
    • BOOLEAN con true per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste o 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, consulta: Comandi Terraform di base.

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

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

  deletion_protection = false # set to "true" in production

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

Visualizzare le impostazioni di allocazione della CPU

Per visualizzare le impostazioni di allocazione della CPU attuali 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 è elencato nella scheda Contenitore.

gcloud

  1. Utilizza questo comando:

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