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 default32
jika beban kerja Anda melibatkan hingga 20.000 file. Jika beban kerja Anda lebih dari 20.000 file, tingkatkan nilaistat-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 mengaturstat-cache-max-size-mb
hingga-1
agar cache statistik dapat digunakan sebanyak mungkin memori sesuai kebutuhan.type-cache-max-size-mb
: gunakan nilai default4
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 nilaitype-cache-max-size-mb
sebesar1
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 Nilaitype-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.