Performa dan praktik terbaik Cloud Storage FUSE

Halaman ini menjelaskan performa Cloud Storage FUSE dalam hal latensi, bandwidth, dan percobaan ulang, serta praktik terbaik saat menggunakan FUSE Cloud Storage.

Operasi baca dan tulis

Cloud Storage FUSE memiliki performa lebih baik untuk beban kerja baca dan tulis berurutan daripada beban kerja baca dan tulis acak. Cloud Storage FUSE menggunakan heuristik untuk mendeteksi ketika file sedang dibaca secara berurutan, sehingga Cloud Storage FUSE dapat mengeluarkan permintaan baca yang lebih kecil dan lebih besar ke Cloud Storage menggunakan koneksi TCP yang sama.

Untuk mengoptimalkan performa operasi baca berurutan, sebaiknya upload dan baca file yang berukuran antara 5 MB dan 200 MB. Untuk mengoptimalkan performa pembacaan acak, sebaiknya upload dan baca file berukuran sekitar 2 MB.

Menyimpan data ke dalam cache

Menggunakan Cloud Storage FUSE dengan file, statistik, jenis, atau ketiga jenis cache yang diaktifkan dapat meningkatkan performa dan mengurangi biaya, tetapi juga dapat mengurangi konsistensi.

Cache statistik dan jenis

Cache statistik dan jenis dapat mengurangi jumlah panggilan serial ke Cloud Storage pada pembacaan berulang ke file yang sama, yang meningkatkan tingkat tinggi. Atur cache statistik dan jenis berdasarkan jumlah file yang memiliki pembacaan berulang dan mungkin mendapat manfaat dari {i>cache<i}. Anda dapat menggunakan nomor file untuk mewakili perkiraan ukuran {i>cache<i}. Sebaiknya gunakan batas berikut untuk setiap jenis cache:

  • stat-cache-max-size-mb: gunakan nilai default 32 jika beban kerja Anda melibatkan hingga 20.000 file. Jika beban kerja Anda lebih dari 20.000 file, tingkatkan nilai stat-cache-max-size-mb sebesar 10 untuk setiap tambahan 6.000 file, sekitar 1.500 byte per file.

    stat-cache-max-size-mb adalah batas level pemasangan, dan penggunaan memori sebenarnya mungkin lebih rendah dari nilai yang Anda tentukan. Atau, Anda bisa mengatur stat-cache-max-size-mb hingga -1 agar cache statistik dapat digunakan sebanyak mungkin memori sesuai kebutuhan.

  • type-cache-max-size-mb: gunakan nilai default 4 jika nilai maksimum jumlah file dalam satu direktori dari bucket yang Anda pasang berisi 20.000 file atau kurang. Jika jumlah maksimum file dalam direktori tunggal yang Anda pasang berisi lebih dari 20.000 file, tingkatkan nilai type-cache-max-size-mb sebesar 1 untuk setiap 5.000 file, sekitar 200 byte per file.

    type-cache-max-size-mb adalah batas level pemasangan, dan penggunaan memori sebenarnya mungkin lebih rendah dari nilai yang ditentukan. Atau, Anda dapat menyetel Nilai type-cache-max-size-mb ke -1 agar jenis cache dapat menggunakan sebanyak mungkin penggunaan memori sesuai kebutuhan.

Sebaiknya jalankan listingan lengkap dengan meneruskan ls -R pada direktori bucket sebelum Anda menjalankan beban kerja untuk meningkatkan performa saat pertama kali dijalankan mengisi cache jenis terlebih dahulu dengan metode batch yang lebih cepat.

Praktik terbaik penyimpanan file dalam cache

Pastikan seluruh set data Anda sesuai dengan kapasitas cache untuk mendapatkan hasil terbaik kinerja situs dan untuk menghindari {i>cache thrashing<i}. Juga, pertimbangkan kapasitas maksimum dan performa yang dapat disediakan oleh media cache Anda. Jika Anda membuka instance performa maksimum cache, batas kapasitas, atau keduanya. Hal ini bermanfaat bagi membaca langsung dari Cloud Storage yang memiliki batas yang jauh lebih tinggi daripada FUSE Cloud Storage.

IOPS (kueri per detik)

Filestore adalah opsi yang lebih baik daripada Cloud Storage FUSE untuk beban kerja yang memerlukan operasi input/output per detik (IOPS) instan yang tinggi, yang juga dikenal sebagai "kueri-per-detik" di Cloud Penyimpanan. Filestore juga merupakan opsi yang lebih baik untuk IOPS yang sangat tinggi pada sistem file tunggal dan latensi yang lebih rendah.

Atau, Anda juga dapat menggunakan fitur cache file Cloud Storage FUSE untuk membangun karakteristik performa media cache yang mendasarinya, memberikan IOPS tinggi dan latensi rendah.

Latensi dan throughput

Cloud Storage FUSE memiliki latensi yang lebih tinggi daripada sistem file lokal. Throughput berkurang saat Anda membaca atau menulis file kecil satu per satu, karena akan menghasilkan beberapa panggilan API terpisah. Membaca atau menulis beberapa file besar sekaligus dapat membantu meningkatkan throughput. Gunakan fitur cache file Cloud Storage FUSE untuk meningkatkan performa untuk I/O kecil dan acak.

Latensi sistem file Cloud Storage FUSE memengaruhi rsync, yang hanya membaca dan menulis satu file pada satu waktu. Untuk mentransfer beberapa file ke atau dari bucket Anda paralel, gunakan Google Cloud CLI dengan menjalankan gcloud storage rsync. Untuk informasi selengkapnya, lihat dokumentasi rsync.

Mencapai throughput maksimum

Untuk mencapai throughput maksimum, gunakan mesin dengan resource CPU yang cukup untuk {i>drive <i}dan saturasi ke kartu antarmuka jaringan (NIC). Tidak memadai Resource CPU dapat menyebabkan throttling Cloud Storage FUSE.

Jika Anda menggunakan Google Kubernetes Engine, meningkatkan alokasi CPU ke container file bantuan Cloud Storage FUSE jika workload Anda membutuhkan throughput yang lebih tinggi. Anda dapat menambah sumber daya yang digunakan oleh kontainer file bantuan atau mengalokasikan sumber daya yang tidak terbatas.

Pembatasan kapasitas

Untuk membatasi laju traffic yang dikirim Cloud Storage FUSE ke Cloud Storage, Anda dapat menggunakan opsi berikut sebagai bagian dari perintah gcsfuse:

  • Opsi --limit-ops-per-sec mengontrol tingkat pengiriman permintaan ke Cloud Storage FUSE.

  • Opsi --limit-bytes-per-sec mengontrol bandwidth yang digunakan Cloud Storage FUSE untuk mendownload data dari Cloud Storage.

Untuk informasi selengkapnya tentang opsi ini, lihat Dokumentasi command line gcsfuse.

Semua pembatasan kapasitas merupakan perkiraan dan dijalankan selama periode 8 jam. Secara default, tidak ada batas kapasitas yang diterapkan.

Kontrol prosedur upload

Secara default, permintaan yang gagal dari Cloud Storage FUSE ke Cloud Storage adalah mencoba ulang dengan backoff eksponensial hingga backoff maksimum yang ditentukan durasi, yang memiliki nilai 30s (30 detik) secara default. Setelah backoff melebihi durasi maksimum yang ditentukan, percobaan ulang akan dilanjutkan dengan atau durasi maksimum yang ditentukan. Anda dapat menggunakan opsi --max-retry-sleep sebagai bagian dari panggilan gcsfuse untuk menentukan durasi backoff.

Untuk mengetahui informasi selengkapnya tentang opsi --max-retry-sleep, lihat Dokumentasi command line gcsfuse.

Semantik direktori

Cloud Storage beroperasi dengan namespace datar, yang berarti direktori sebenarnya tidak ada di dalam Cloud Storage. Namun, direktori direpresentasikan oleh nama objek yang diakhiri dengan garis miring (/) (misalnya, dalam nama objek my-bucket/directory/file.txt, my-bucket/directory/ mewakili direktori). Direktori yang ada sebagai bagian nama objek tetapi tidak ada sebagai objek aktual dikenal sebagai direktori yang ditentukan secara implisit.

Secara default, saat Anda memasang bucket dengan direktori yang ditentukan secara implisit, Cloud Storage FUSE tidak dapat menyimpulkan atau mengakses direktori tersebut. Cloud Storage FUSE hanya dapat menyimpulkan direktori yang ditentukan secara eksplisit, yang berarti bahwa direktori tersebut ada sebagai objek sebenarnya dalam bucket Cloud Storage.

Misalnya, Anda memasang bucket bernama my-bucket, yang berisi objek my-bucket/directory/file1.txt. Jika Anda menjalankan ls di direktori pemasangan bucket, Cloud Storage FUSE tidak dapat mengakses direktori my-bucket/directory/ atau objek file1.txt di dalamnya, karena directory tidak ada sebagai objek di Cloud Storage. Agar Cloud Storage FUSE dapat menyimpulkan direktori dan objek di dalamnya, Anda dapat membuat direktori yang ditentukan secara eksplisit dengan membuatnya di sistem file lokal menggunakan perintah mkdir, atau dengan menyertakan opsi --implicit-dirs dalam perintah gcsfuse Anda.

Untuk mengetahui informasi selengkapnya tentang semantik direktori, termasuk cara memasang bucket dengan awalan yang ada, lihat File dan Direktori di dokumentasi GitHub. Untuk informasi selengkapnya tentang opsi --implicit-dirs, lihat Dokumentasi command line Cloud Storage FUSE.

Pertimbangan saat mencantumkan objek

Ketika Anda membuat daftar semua objek di bucket yang terpasang (misalnya, dengan menjalankan ls), Cloud Storage FUSE akan memanggil Objek: daftar API di Cloud Storage. API akan memberi nomor halaman hasilnya, yang berarti Cloud Storage FUSE mungkin perlu melakukan beberapa panggilan, bergantung pada jumlah objek yang ada di bucket Anda. Perhatikan bahwa hal ini dapat membuat operasi daftar menjadi mahal dan lambat.

Tolok ukur

Untuk mengetahui petunjuk cara menjalankan uji beban pada FUSE Cloud Storage, lihat Tolok Ukur Performa dalam dokumentasi GitHub.