Allocazione della CPU (servizi)

Per impostazione predefinita, le istanze di Cloud Run vengono allocate solo durante l'elaborazione delle richieste, l'avvio e l'arresto del container. (Consulta il 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 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

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

La combinazione di CPU allocata sempre con una serie di istanze minime risulta in una serie di istanze in esecuzione con accesso completo alle risorse CPU, consentendo casi d'uso di elaborazione in background. Quando utilizzi questo pattern, tieni presente che Cloud Run applica la scalabilità automatica delle istanze solo se un servizio gestisce le richieste. L'utilizzo della CPU delle istanze che non gestiscono le richieste viene ignorato completamente da Cloud Run.

Impatto sui prezzi

Se scegli la CPU da allocare solo durante l'elaborazione delle richieste, ti verranno addebitati i costi per ogni richiesta e solo quando l'istanza elabora una richiesta. Se scegli l'impostazione CPU sempre allocata, ti verrà addebitato l'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 dal tuo servizio Cloud Run nell'ultimo mese e ti consiglierà di passare da CPU allocate durante le richieste a CPU sempre allocata, se questa è 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 i costi, 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, bursty o piccante.
  • La CPU sempre allocata è consigliata quando il traffico in entrata è costante e a bassa velocità.

Considerazioni sull'esecuzione in background

Se selezioni CPU sempre allocata, puoi eseguire attività in background di breve durata e altri lavori di elaborazione asincrona dopo aver restituito le risposte. Ad esempio:

  • Sfrutta gli agenti di monitoraggio come OpenTelemetry che potrebbero presumere di poter essere eseguiti in background.
  • Utilizzando Goroutine di Node.js asincroni, thread Java e cooutine di Kotlin.
  • Utilizzo di framework delle applicazioni che si basano su funzionalità integrate di pianificazione/sfondo.

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

Prendi in considerazione l'utilizzo di Cloud Tasks per eseguire attività asincrone. Cloud Tasks tenta 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, La CPU sempre allocata è probabilmente più economica se:

  • Il tuo servizio Cloud Run elabora un numero elevato di richieste attuali a una frequenza piuttosto costante.
  • Non visualizzi molte istanze "inattive" quando esamini la metrica del numero di istanze.

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

Considerazioni sulla scalabilità automatica

Dovrebbero essere utilizzate sia CPU assegnate solo durante l'elaborazione delle richieste sia sempre CPU per i servizi basati su richiesta.

Cloud Run esegue solo scale out quando l'utilizzo della CPU durante l'elaborazione delle richieste supera il 60%.

Se selezioni CPU sempre allocata ed esegui attività in background senza richieste, Cloud Run non eseguirà lo scale out anche se l'utilizzo della CPU supera la soglia del 60% e, in alcuni casi, un'istanza potrebbe diventare troppo occupata per accettare le richieste in entrata.

Impostazione e aggiornamento dell'allocazione della CPU

Qualsiasi modifica alla configurazione porta alla creazione di una nuova revisione. Le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Se scegli l'opzione di 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 questa impostazione 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 e poi 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, Networking, Security per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

  5. 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 le tue istanze, che riceveranno la CPU solo quando ricevono richieste. Seleziona CPU sempre allocata per allocare la CPU per l'intera durata delle istanze.

  6. Fai clic su Crea o Salva.

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 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 le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che genera risultati puliti in formato YAML. Successivamente, potrai modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando 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 delle richieste, o false per impostare la CPU da allocare sempre.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome della revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non superare 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 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.