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 dapat menghentikan instance jika tidak diperlukan untuk menangani traffic masuk atau penggunaan CPU saat ini di luar permintaan. Instance tidak akan pernah tidak aktif selama lebih dari 15 menit setelah memproses permintaan kecuali jika instance tetap aktif menggunakan instance minimum.

Penggabungan CPU yang selalu dialokasikan dengan sejumlah instance minimum akan menghasilkan sejumlah instance yang aktif dan berjalan dengan akses penuh ke resource CPU, sehingga memungkinkan kasus penggunaan pemrosesan di latar belakang. Saat menggunakan pola ini, Cloud Run akan 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.

CPU selalu mengalokasikan penskalaan dari nol

Penskalaan dari nol hanya dapat dipicu oleh permintaan, sehingga layanan yang tidak memproses permintaan tidak dapat menskalakan dari nol. Untuk beban kerja ini, Anda dapat menetapkan instance minimum > 0, atau menyertakan "permintaan bangun" dalam desain Anda untuk memulai ulang pemrosesan setelah penskalaan ke nol.

CPU selalu mengalokasikan penskalaan ke nol

Mengingat tidak ada instance yang pernah menggunakan CPU 0%, melihat semua penggunaan CPU tidak akan pernah mencapai skala nol. Ini berarti keputusan untuk menskalakan dari satu hingga nol hanya dapat dibuat dengan memeriksa apakah instance sedang memproses permintaan.

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 Buat Layanan jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi layanan yang ada, klik layanan, lalu klik Edit and deploy new revision.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai keinginan, kemudian klik Container, vo;ume, jejaring, sekuritas 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.

Command line

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 REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

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

    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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

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

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.

Command line

  1. Gunakan perintah berikut:

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