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 Cloud Storage FUSE.

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.

Statistik dan jenis cache

Cache jenis dan statistik dapat mengurangi jumlah panggilan serial ke Cloud Storage saat pembacaan berulang ke file yang sama, sehingga meningkatkan performa. Setel cache statistik dan jenis berdasarkan jumlah file yang memiliki pembacaan berulang dan mungkin mendapatkan manfaat dari penyimpanan dalam cache. Anda dapat menggunakan jumlah file untuk mewakili perkiraan ukuran cache. 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 6.000 file tambahan, sekitar 1.500 byte per file.

    stat-cache-max-size-mb adalah batas tingkat pemasangan, dan penggunaan memori yang sebenarnya mungkin lebih rendah dari nilai yang Anda tentukan. Atau, Anda dapat menetapkan stat-cache-max-size-mb ke -1 agar cache statistik dapat menggunakan memori sebanyak yang diperlukan.

  • type-cache-max-size-mb: gunakan nilai default 4 jika jumlah maksimum file dalam satu direktori dari bucket yang Anda pasang berisi 20.000 file atau kurang. Jika jumlah maksimum file dalam satu direktori 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 tingkat pemasangan, dan penggunaan memori yang sebenarnya mungkin lebih rendah dari nilai yang ditentukan. Atau, Anda dapat menetapkan nilai type-cache-max-size-mb ke -1 agar jenis cache dapat menggunakan memori sebanyak yang diperlukan.

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

Praktik terbaik penyimpanan file dalam cache

Pastikan seluruh set data sesuai dengan kapasitas cache untuk mendapatkan performa terbaik dan untuk menghindari cache thrashing. Selain itu, pertimbangkan kapasitas dan performa maksimum yang dapat disediakan oleh media cache Anda. Jika Anda mencapai performa maksimum, batas kapasitas, atau keduanya pada cache yang disediakan, sebaiknya baca langsung dari Cloud Storage yang memiliki batas yang jauh lebih tinggi daripada Cloud Storage FUSE.

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 FUSE Cloud Storage untuk membangun karakteristik performa media cache yang mendasarinya jika 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 FUSE Cloud Storage untuk meningkatkan performa bagi I/O kecil dan acak.

Latensi sistem file Cloud Storage FUSE memengaruhi rsync, yang hanya membaca dan menulis file satu per satu. Untuk mentransfer beberapa file ke atau dari bucket Anda secara 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 mendorong throughput dan saturasi kartu antarmuka jaringan (NIC). Resource CPU yang tidak memadai dapat menyebabkan throttling FUSE Cloud Storage.

Jika Anda menggunakan Google Kubernetes Engine, tingkatkan alokasi CPU ke container file bantuan Cloud Storage FUSE jika beban kerja Anda memerlukan throughput yang lebih tinggi. Anda dapat menambah resource yang digunakan oleh container file bantuan atau mengalokasikan resource tanpa batas.

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 mengetahui 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 dicoba kembali dengan backoff eksponensial hingga durasi backoff maksimum yang ditentukan, yang memiliki nilai 30s (30 detik) secara default. Setelah durasi backoff melebihi durasi maksimum yang ditentukan, percobaan ulang akan dilanjutkan dengan 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 dari 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 mengetahui 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.

Logging

Guna mengonfigurasi logging untuk aktivitas Cloud Storage FUSE, termasuk rotasi log, tentukan kolom di bagian kunci logging dalam file konfigurasi FUSE Cloud Storage. Secara default, file log diputar dan menggunakan ruang penyimpanan sekitar 1 GiB.