Alokasi CPU (layanan)

Secara default, instance Cloud Run hanya menerima alokasi CPU selama pemrosesan permintaan, startup dan penonaktifan container. (Lihat siklus proses instance). Anda dapat mengubah perilaku ini sehingga CPU selalu dialokasikan dan tersedia meskipun saat tidak ada permintaan masuk. Menyetel CPU agar selalu dialokasikan dapat berguna untuk menjalankan tugas latar belakang jangka pendek dan tugas pemrosesan asinkron lainnya.

Ilustrasi mode alokasi CPU

Meskipun CPU selalu dialokasikan, penskalaan otomatis Cloud Run masih berlaku, dan mungkin saja menghentikan instance jika tidak diperlukan untuk menangani traffic masuk atau penggunaan CPU saat ini di luar permintaan. Instance tidak akan pernah menjadi nonaktif selama lebih dari 15 menit setelah memproses permintaan, kecuali jika instance tersebut tetap aktif menggunakan instance minimum.

Menggabungkan CPU yang selalu dialokasikan dengan sejumlah instance minimum akan menghasilkan sejumlah instance aktif dan berjalan dengan akses penuh ke resource CPU, sehingga memungkinkan kasus penggunaan pemrosesan latar belakang. Saat menggunakan pola ini, Cloud Run menerapkan penskalaan instance meskipun layanan menggunakan CPU di luar permintaan apa pun.

Jika Anda menggunakan pemeriksaan health check, CPU akan dialokasikan untuk setiap pemeriksaan. Lihat pemeriksaan health check container untuk mengetahui detail penagihan.

Dampak harga

Jika Anda memilih CPU untuk dialokasikan hanya selama pemrosesan permintaan, Anda akan dikenakan biaya per permintaan dan hanya saat instance memproses permintaan. Jika Anda memilih setelan CPU selalu dialokasikan, Anda akan dikenakan biaya untuk seluruh siklus proses instance tersebut. Lihat tabel harga Cloud Run untuk mengetahui detailnya.

Pemberi rekomendasi Google secara otomatis melihat pada traffic yang diterima oleh layanan Cloud Run Anda selama sebulan terakhir, dan akan merekomendasikan untuk beralih dari CPU yang dialokasikan selama permintaan ke CPU selalu dialokasikan, jika ini lebih murah.

Cara memilih alokasi CPU yang sesuai

Memilih alokasi CPU yang sesuai untuk kasus penggunaan Anda bergantung pada beberapa faktor, seperti pola traffic, eksekusi latar belakang, dan biaya, yang masing-masing dijelaskan di bagian berikut.

Pertimbangan pola traffic

  • CPU yang hanya dialokasikan selama pemrosesan permintaan direkomendasikan saat traffic yang masuk tidak beraturan, meledak, atau melonjak.
  • Opsi CPU selalu dialokasikan direkomendasikan saat traffic yang masuk stabil, bervariasi secara perlahan.

Pertimbangan eksekusi latar belakang

Dengan memilih CPU selalu dialokasikan, memungkinkan Anda untuk menjalankan tugas latar belakang jangka pendek dan pekerjaan pemrosesan asinkron lainnya setelah menampilkan tanggapan Contoh:

  • Memanfaatkan agen pemantauan seperti OpenTelemetry yang mungkin dianggap dapat berjalan di latar belakang.
  • Menggunakan Go's Goroutines, Node.js async, Java threads, dan Kotlin coroutines.
  • Menggunakan framework aplikasi yang mengandalkan penjadwalan bawaan/fungsionalitas latar belakang.

Instance yang nonaktif, termasuk yang tetap aktif menggunakan instance minimum, dapat dinonaktifkan kapan saja. Jika Anda perlu menyelesaikan tugas yang belum selesai sebelum container dihentikan, Anda dapat gunakan SIGTERM untuk memberi instance masa tenggang 10 detik sebelum dihentikan.

Pertimbangkan untuk menggunakan Cloud Tasks untuk menjalankan tugas asinkron. Cloud Tasks secara otomatis mencoba ulang tugas-tugas yang gagal dan mendukung waktu berjalan hingga 30 menit.

Pertimbangan biaya

Jika saat ini Anda menggunakan CPU hanya dialokasikan selama pemrosesan permintaan, CPU selalu dialokasikan mungkin lebih ekonomis jika:

  • Layanan Cloud Run Anda sedang memproses permintaan saat ini dalam jumlah besar dengan kecepatan yang cukup stabil.
  • Anda tidak melihat banyaknya instance "nonaktif" saat melihat pada metrik jumlah instance.

Anda dapat menggunakan kalkulator harga untuk memperkirakan perbedaan biaya.

Pertimbangan penskalaan otomatis

Cloud Run menskalakan otomatis jumlah instance container.

Untuk layanan yang ditetapkan ke CPU hanya dialokasikan selama pemrosesan permintaan, Cloud Run akan menskalakan jumlah instance secara otomatis berdasarkan penggunaan CPU hanya selama pemrosesan permintaan.

Untuk layanan yang ditetapkan ke CPU selalu dialokasikan, Cloud Run akan menskalakan secara otomatis jumlah instance berdasarkan penggunaan CPU selama seluruh siklus proses instance container, kecuali saat menskalakan ke dan dari nol, yang hanya menggunakan permintaan.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengonfigurasi dan men-deploy layanan Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat peran IAM Cloud Run dan izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Setel dan perbarui alokasi CPU

Perubahan konfigurasi apa pun akan menghasilkan pembuatan revisi baru. Revisi berikutnya juga akan secara otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Jika Anda memilih opsi CPU yang selalu dialokasikan, Anda harus menentukan memori minimal 512 MiB.

Secara default, CPU hanya dialokasikan selama pemrosesan permintaan untuk setiap instance container. Anda dapat mengubahnya menggunakan konsol Google Cloud, command line gcloud, atau file YAML saat Anda membuat layanan baru atau men-deploy revisi baru:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container dan pilih Service untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, volume, networking, security untuk memperluas halaman konfigurasi layanan.

  4. Klik tab Container.

    gambar

    • Pilih alokasi CPU yang diinginkan di bagian Alokasi CPU dan harga. Pilih CPU selalu dialokasikan selama pemrosesan permintaan untuk instance Anda agar dapat menerima CPU hanya saat instance menerima permintaan. Pilih CPU selalu dialokasikan untuk mengalokasikan CPU selama masa aktif instance.
  5. Klik Buat atau Deploy.

gcloud

Anda dapat memperbarui alokasi CPU. Untuk menyetel agar CPU selalu dialokasikan untuk layanan tertentu:

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

Ganti SERVICE dengan nama layanan Anda.

Untuk menyetel alokasi CPU hanya selama pemrosesan permintaan:

gcloud run services update SERVICE --cpu-throttling 

Anda juga dapat menyetel alokasi CPU selama deployment. Untuk menyetel CPU agar selalu dialokasikan:

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

Untuk menyetel alokasi CPU hanya selama pemrosesan permintaan:

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

Ganti IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Perbarui atribut cpu:

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

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda
    • BOOLEAN dengan true untuk menyetel alokasi CPU hanya selama pemrosesan permintaan, atau false untuk menyetel CPU agar selalu dialokasikan.
    • REVISION dengan nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:
      • Dimulai denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  3. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode google_cloud_run_v2_service berikut ke resource di konfigurasi Terraform Anda, pada 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
      }
    }
  }
}

Lihat setelan alokasi CPU

Guna melihat setelan alokasi CPU saat ini untuk layanan Cloud Run Anda:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka halaman Detail layanan.

  3. Klik tab Revisi.

  4. Di panel detail di sebelah kanan, setelan alokasi CPU dicantumkan di bagian tab Container.

gcloud

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Temukan setelan alokasi CPU dalam konfigurasi yang ditampilkan.