Kontrol biaya

Halaman ini menjelaskan cara menetapkan batas harian dan memantau waktu EECU yang sedang berlangsung untuk membantu mengontrol biaya komputasi di Earth Engine.

Membatasi waktu EECU harian

Untuk membantu mengontrol biaya Earth Engine, Anda dapat menetapkan batas jumlah waktu EECU yang dapat digunakan project Anda dalam sehari dengan memperbarui Kuota Cloud berikut:

  • Earth Engine compute time (EECU-time) per day in seconds: Kuota tingkat project yang membatasi waktu EECU gabungan semua pengguna dalam project.

Untuk mengetahui informasi selengkapnya tentang kuota Earth Engine yang dapat Anda tetapkan, lihat kuota Earth Engine.

Menetapkan batas harian

Anda dapat melihat dan mengedit kuota di halaman Kuota & Batas Sistem di konsol Google Cloud. Jika Anda menyesuaikan kuota, perubahan akan diterapkan dalam beberapa menit. Untuk menyetel atau memperbarui batas harian, lakukan hal berikut:

  1. Pastikan Anda memiliki Izin untuk mengubah kuota project di project yang Anda pilih.
  2. Buka halaman Quotas di konsol Google Cloud.
  3. Gunakan filter Metrik di kotak penelusuran Filter untuk memfilter earthengine.googleapis.com/daily_eecu_usage_time. Jika Anda tidak melihat kuota Earth Engine compute time (EECU-time) per day in seconds, pastikan Anda telah mengaktifkan Earth Engine API untuk project yang dipilih.
  4. Klik Edit kuota dari menu tiga titik.
  5. Jika kotak centang Tidak terbatas dicentang, hapus centangnya.
  6. Masukkan batas dalam detik EECU yang Anda inginkan di kolom Nilai baru. Klik Kirim Permintaan.

Untuk mengetahui informasi selengkapnya tentang cara melihat dan mengelola kuota, lihat Melihat dan mengelola kuota.

Pesan error yang ditampilkan

Setelah Anda menetapkan batas harian, Earth Engine akan menampilkan pesan error berikut jika Anda melampaui batas tersebut:

Penggunaan Anda melebihi kuota kustom untuk 'earthengine.googleapis.com/daily_eecu_usage_time', yang dapat disesuaikan oleh administrator Anda di konsol Google Cloud: https://console.cloud.google.com/quotas/?project=_.

Setelah kuota terlampaui, permintaan Earth Engine akan gagal hingga kuota direset pada hari berikutnya atau batasnya dinaikkan oleh administrator.

Pemantauan dan pemberitahuan terperinci

Jika Anda perlu mengontrol dan memantau biaya dengan perincian yang lebih baik daripada batas harian, resep berikut memerlukan lebih banyak penyiapan, tetapi memungkinkan pemberitahuan dan pembatalan di tingkat workload_tag dan tugas batch.

Resep ini menggunakan pemantauan waktu EECU yang sedang berlangsung yang ditampilkan untuk permintaan yang sedang berjalan. Lihat panduan Penggunaan Monitoring untuk mengetahui informasi selengkapnya tentang pelaporan waktu EECU yang sedang berlangsung di Cloud Monitoring.

Mengonfigurasikan pemberitahuan

Anda dapat mengonfigurasi pemberitahuan di Cloud Monitoring untuk memperingatkan Anda saat metrik mencapai batas tertentu. Sistem pemberitahuan Cloud Monitoring sangat fleksibel. Kami telah mengumpulkan beberapa resep favorit kami di sini, tetapi Anda dapat memasak dengan konfigurasi khusus yang sesuai dengan kebutuhan Anda.

Resep: Notifikasi chat untuk penggunaan workload_tag

Contoh ini menunjukkan cara menghubungkan notifikasi chat (misalnya, pesan Google Chat atau pesan Slack) jika penggunaan komputasi Earth Engine untuk workload_tag tertentu melebihi nilai minimum. Hal ini dapat berguna jika Anda memiliki serangkaian tugas ekspor yang membuat data untuk layanan produksi Anda, dan Anda ingin diberi tahu jika tugas tersebut secara kolektif menggunakan lebih dari jumlah waktu EECU tertentu.

  1. Buka halaman Pemberitahuan di bagian Cloud Monitoring pada konsol Cloud.
  2. Pilih "Buat kebijakan" untuk mengonfigurasi kebijakan pemberitahuan baru.
  3. Pilih metrik:
    • Detik EECU dalam proses mewakili jumlah detik komputasi yang tertunda (belum berhasil).
    • Anda mungkin perlu membatalkan pilihan filter "Aktif" untuk melihat metrik.
  4. Menambahkan filter:
    • Gunakan workload_tag == your_workload_tag_value untuk memfilter ke tag beban kerja tertentu.
    • Gunakan compute_type = batch atau compute_type = online untuk memfilter ke jenis komputasi tertentu.
  5. Pilih nilai "Jendela bergulir" yang sesuai. Jika Anda tidak yakin, gunakan 5 min.
  6. Pilih "Sum" dari menu "Rolling window function". Konfigurasi metrik untuk pemberitahuan
  7. Pilih pemicu pemberitahuan dan beri nama.
  8. Pilih saluran notifikasi.
    • Untuk resep ini, kita akan memilih "Kelola Saluran Notifikasi" dari jendela modal, lalu "Tambahkan Baru" untuk menempelkan ID Ruang Google Chat Anda. ID ini dapat ditemukan di URL halaman Gmail atau Chat saat melihat chat.
    • Jika menggunakan Google Chat, Anda juga harus mengetik @Google Cloud Monitoring dan memilih aplikasi untuk menambahkan aplikasi Pemberitahuan ke Ruang (jika organisasi Anda mengizinkan).
  9. Pilih label kebijakan dan tingkat keparahan yang relevan.
  10. Tulis cuplikan dokumentasi singkat.
  11. Publikasikan kebijakan pemberitahuan baru Anda.

Setelah disetel, Anda akan mendapatkan pemberitahuan di ruang chat setiap kali batas terlampaui untuk project Anda.

Resep: Mendapatkan email pemberitahuan untuk total waktu EECU yang sedang berlangsung

Ikuti resep untuk notifikasi chat, tetapi lakukan dua perubahan:

  1. Lewati langkah untuk menambahkan filter workload_tag, sehingga Anda dapat melihat semua nilai.
  2. Saat memilih saluran notifikasi, alih-alih mengonfigurasi saluran chat, tambahkan alamat email Anda.

Latensi dan waktu pemberitahuan

Perhatikan bahwa ada sedikit keterlambatan dalam propagasi laporan Pemantauan, jadi Anda tidak boleh mengharapkan notifikasi instan.

Membatalkan tugas yang memakan banyak resource

Dengan batas yang diberikan, Anda dapat menggunakan Earth Engine API untuk memeriksa daftar tugas yang tertunda secara berkala dan meminta pembatalan untuk tugas yang sedang berjalan yang melebihi batas EECU-detik.

Resep: Menjalankan cuplikan kode di notebook atau shell Python lokal

eecu_seconds_limit = 50 * 60 * 60  # 50 hours
print("Watching for operations to cancel...")
while(True):
  for op in ee.data.listOperations():
    if op['metadata']['state'] == 'RUNNING':
      if op['metadata'].get('batchEecuUsageSeconds', 0) > eecu_seconds_limit:
        print(f"Cancelling operation {op['name']}")
        ee.data.cancelOperation(op['name'])
  time.sleep(10)  # 10 seconds