Topik ini menjelaskan cara mengoptimalkan cold start dan kinerja fungsi dari instans on-demand dengan menggunakan instans yang disediakan dalam Function Compute.
Apa itu cold start?
Function Compute mendukung dua jenis instans: instans on-demand dan instans yang disediakan. Instans on-demand dialokasikan dan dilepaskan secara otomatis oleh Function Compute. Anda dikenakan biaya berdasarkan jumlah waktu aktual yang dibutuhkan instans untuk memproses permintaan. Penggunaan instans on-demand menghilangkan kebutuhan untuk mengelola dan mengalokasikan sumber daya secara manual. Namun, mode on-demand dapat menyebabkan cold start, yang meningkatkan latensi pemanggilan dan memengaruhi kinerja fungsi.
Cold start merujuk pada proses menyiapkan lingkungan eksekusi dan kode, seperti unduhan kode, startup kontainer, inisialisasi runtime, dan inisialisasi kode. Setelah cold start selesai, instans fungsi siap untuk memproses permintaan berikutnya.
Optimalkan cold start instans on-demand
Cold start dapat dioptimalkan baik di sisi sistem maupun pengguna. Di sisi sistem, Function Compute telah melakukan banyak peningkatan untuk mengoptimalkan cold start. Di sisi pengguna, kami merekomendasikan metode berikut untuk mengurangi cold start:
Gunakan Paket Kode Ringan
Gunakan paket kode ringan dan hapus dependensi yang tidak perlu. Sebagai contoh, Anda dapat menjalankan npm prune dalam runtime Node.js atau autoflake dalam runtime Python. Selain itu, hapus file redundan, seperti kode sumber tes dan file biner serta data file yang tidak valid, dari pustaka pihak ketiga untuk mengurangi waktu unduh dan ekstraksi kode.
Gunakan Bahasa Pemrograman Ringan
Bahasa tertentu, seperti Java, memiliki cold start lebih lama dibandingkan bahasa lainnya. Untuk aplikasi sensitif terhadap cold start, menggunakan bahasa pemrograman ringan seperti Python dapat secara signifikan mengurangi latensi ekor panjang jika latensi warm start tidak jauh berbeda.
Konfigurasikan Memori yang Tepat
Untuk fungsi dengan pengaturan konkurensi tetap, lebih banyak sumber daya CPU tersedia untuk menjalankan fungsi jika memori yang lebih besar dikonfigurasikan.
Kurangi Frekuensi Cold Start
Gunakan pemicu waktu untuk memanaskan instans.
Anda dapat menggunakan panggilan balik Initializer untuk mengurangi cold start. Dalam hal ini, Function Compute memanggil initializer secara asinkron untuk menghilangkan waktu yang dihabiskan untuk inisialisasi kode. Cold start tidak terlihat oleh pengguna selama pembaruan sistem dan fungsi Function Compute.
Mode hibrida
Dalam banyak kasus, cold start sulit dihilangkan sepenuhnya di sisi pengguna. Sebagai contoh, dalam skenario inferensi pembelajaran mendalam, cold start tidak dapat dihindari jika sejumlah besar file model harus dimuat atau fungsi harus berinteraksi dengan sistem warisan menggunakan klien yang membutuhkan waktu lama untuk diinisialisasi. Dalam situasi ini, Anda dapat mengonfigurasi instans yang disediakan atau menggunakan kombinasi instans yang disediakan dan instans on-demand jika fungsi Anda sensitif terhadap latensi.
Instans yang disediakan dialokasikan dan dilepaskan oleh Anda. Anda dikenakan biaya berdasarkan durasi waktu berjalannya instans. Sistem secara otomatis mengalokasikan instans on-demand ketika sumber daya instans yang disediakan tidak cukup untuk memenuhi persyaratan beban kerja. Pendekatan ini membantu mencapai keseimbangan optimal antara kinerja dan pemanfaatan sumber daya. Instans yang disediakan memungkinkan Anda mengalokasikan sumber daya komputasi sebelumnya berdasarkan fluktuasi beban kerja. Sistem tetap menggunakan instans yang disediakan untuk memproses permintaan meskipun instans on-demand dialokasikan, sehingga menghilangkan latensi yang disebabkan oleh cold start.
Instans yang disediakan diprioritaskan jika Anda mengonfigurasi kedua jenis instans. Sebagai contoh, jika Anda memiliki 10 instans yang disediakan, Function Compute akan mengalokasikan instans on-demand untuk memproses permintaan jika lebih dari 10 instans diperlukan dalam 1 detik. Apakah sebuah instans sepenuhnya dimuat ditentukan oleh pengaturan konkurensi instans tersebut. Sistem melacak jumlah permintaan yang sedang diproses di setiap instans. Ketika jumlah permintaan konkuren dari sebuah instans mencapai batas atas yang ditentukan, sistem mengalokasikan instans lain. Ketika jumlah permintaan untuk semua instans mencapai batas atas, instans baru dibuat. Instans yang disediakan dikelola oleh Anda dan dikenakan biaya meskipun tidak memproses permintaan. Instans on-demand dikelola oleh Function Compute. Sistem mengambil kembali instans on-demand yang tidak memproses permintaan untuk sementara waktu. Anda hanya dikenakan biaya berdasarkan periode aktual selama instans on-demand memproses permintaan. Untuk informasi lebih lanjut tentang aturan penagihan, lihat Ikhtisar Penagihan. Anda dapat mengonfigurasi batas atas untuk instans on-demand untuk memastikan bahwa penggunaan sumber daya berada dalam rentang yang diharapkan.