Panduan ini menunjukkan cara mengoptimalkan performa driver CSI FUSE Cloud Storage di Google Kubernetes Engine (GKE).
Meskipun Cloud Storage FUSE menawarkan fleksibilitas dan skalabilitas, konfigurasi dan penyesuaian yang cermat sangat penting untuk mencapai performa yang optimal. Performa Cloud Storage FUSE dapat berbeda dari sistem file POSIX dalam hal latensi, throughput, dan konsistensi. Tujuan penyesuaian adalah meminimalkan overhead operasi metadata dan memaksimalkan efisiensi akses data. Jika Anda menjalankan aplikasi AI/ML yang menggunakan data di bucket Cloud Storage, penyesuaian driver CSI dapat menghasilkan waktu pelatihan dan inferensi yang lebih cepat untuk aplikasi AI/ML Anda.
Panduan ini ditujukan bagi Developer dan engineer machine learning (ML) yang ingin meningkatkan performa aplikasi mereka yang mengakses data yang disimpan di bucket Cloud Storage.
Sebelum membaca halaman ini, pastikan Anda memahami dasar-dasar Cloud Storage, Kubernetes, dan driver CSI Cloud Storage FUSE. Pastikan untuk memeriksa persyaratan versi GKE untuk fitur tertentu yang ingin Anda gunakan.
Mengonfigurasi opsi pemasangan
Driver CSI Cloud Storage FUSE mendukung opsi pemasangan untuk mengonfigurasi cara memasang bucket Cloud Storage di sistem file lokal Anda. Untuk mengetahui daftar lengkap opsi pemasangan yang didukung, lihat dokumentasi file CLI Cloud Storage FUSE.
Anda dapat menentukan opsi pemasangan dengan cara berikut, bergantung pada jenis volume yang Anda gunakan:
Volume efemeral CSI
Jika Anda menggunakan volume efemeral CSI, tentukan opsi pemasangan di kolom spec.volumes[n].csi.volumeAttributes.mountOptions
manifes Pod Anda.
Anda harus menentukan opsi pemasangan sebagai string, dengan tanda yang dipisahkan oleh koma dan tanpa spasi. Contoh:
mountOptions: "implicit-dirs,file-cache:enable-parallel-downloads:true,file-cache:download-chunk-size-mb:3"
Volume persisten
Jika Anda menggunakan persistent volume, tentukan opsi pemasangan di kolom
spec.mountOptions
dalam manifes PersistentVolume Anda.
Anda harus menentukan opsi pemasangan sebagai daftar. Contoh:
mountOptions:
- implicit-dirs
- file-cache:enable-parallel-downloads:true
- file-cache:download-chunk-size-mb:3
Pertimbangan pemasangan
Gunakan pertimbangan berikut saat mengonfigurasi pemasangan dengan driver CSI:
Pertimbangan umum
- Flag berikut tidak diizinkan:
app-name
,temp-dir
,foreground
,log-file
,log-format
,key-file
,token-url
, danreuse-token-from-url
. - Cloud Storage FUSE tidak menjadikan direktori implisit terlihat secara default.
- Jika Anda hanya ingin memasang direktori di bucket, bukan seluruh bucket, teruskan jalur relatif direktori menggunakan flag
only-dir=relative/path/to/the/bucket/root
.
Keamanan dan izin
- Jika Anda menggunakan Konteks Keamanan untuk Pod atau container, atau jika image container Anda menggunakan pengguna atau grup non-root, Anda harus menetapkan flag pemasangan
uid
dangid
. Anda juga perlu menggunakan tanda pemasanganfile-mode
dandir-mode
untuk menetapkan izin sistem file. Perhatikan bahwa Anda tidak dapat menjalankan perintahchmod
,chown
, atauchgrp
terhadap sistem file FUSE Cloud Storage, jadi gunakan tanda pemasanganuid
,gid
,file-mode
, dandir-mode
untuk mendapatkan akses bagi pengguna atau grup non-root.
Opsi pemasangan kernel Linux
- Jika perlu mengonfigurasi opsi pemasangan kernel Linux, Anda dapat meneruskan opsi menggunakan flag
o
. Misalnya, jika Anda tidak ingin mengizinkan eksekusi langsung biner apa pun pada sistem file yang dipasang, tetapkan flago=noexec
. Setiap opsi memerlukan tanda terpisah, misalnya,o=noexec
,o=noatime
. Hanya opsi berikut yang diizinkan:exec
,noexec
,atime
,noatime
,sync
,async
, dandirsync
.
Mengonfigurasi caching
Bagian ini memberikan ringkasan opsi caching yang tersedia dengan driver CSI Cloud Storage FUSE untuk meningkatkan performa.
Penyimpanan file dalam cache
Anda dapat menggunakan driver CSI Cloud Storage FUSE dengan penayangan file untuk meningkatkan performa baca aplikasi yang menangani file kecil dari bucket Cloud Storage. Fitur cache file Cloud Storage FUSE adalah cache baca berbasis klien yang memungkinkan pembacaan file berulang ditayangkan lebih cepat dari penyimpanan cache pilihan Anda.
Anda dapat memilih dari berbagai opsi penyimpanan untuk cache baca, termasuk SSD Lokal, penyimpanan blok yang tahan lama seperti Google Cloud Hyperdisk atau Persistent Disk, dan disk RAM (memori), berdasarkan kebutuhan performa-harga Anda.
Mengaktifkan dan menggunakan penyimpanan file ke dalam cache
Secara default, fitur caching file dinonaktifkan di GKE. Anda harus memilih untuk mengaktifkan penyiapan cache file dengan driver CSI Cloud Storage FUSE.
Untuk mengaktifkan dan mengontrol penyiapan file, tetapkan atribut volume
fileCacheCapacity
atau gunakan opsi pemasangan file-cache:max-size-mb
.
GKE menggunakan volume emptyDir
secara default untuk caching file Cloud Storage FUSE yang didukung oleh penyimpanan efemeral yang dikonfigurasi di node. Hal ini dapat berupa boot disk yang terpasang ke node atau SSD Lokal di node. Jika Anda mengaktifkan
SSD Lokal
di node, GKE akan menggunakan SSD Lokal untuk mendukung volume emptyDir
.
Anda dapat mengonfigurasi volume cache baca kustom untuk container sidecar
guna menggantikan volume emptyDir
default untuk caching file dalam operasi baca.
Untuk mempelajari lebih lanjut praktik terbaik untuk caching file, lihat Performa Cloud Storage FUSE.
Pilih penyimpanan untuk mencadangkan cache file Anda
Untuk memilih penyimpanan guna mencadangkan cache file Anda, lihat pertimbangan berikut:
Untuk kelompok VM GPU dan CPU yang mendukung SSD Lokal (misalnya, VM A3), sebaiknya gunakan SSD Lokal.
- Untuk VM A3+, GKE secara otomatis menyiapkan SSD Lokal untuk digunakan Pod Anda.
- Jika kelompok VM Anda tidak mendukung SSD Lokal, GKE akan menggunakan boot disk untuk melakukan caching. Jenis disk default untuk boot disk di GKE adalah
pd-balanced
. Jika seri VM Anda mendukung SSD Lokal, tetapi tidak mengaktifkan penyimpanan sementara di SSD Lokal secara default, Anda dapat mengaktifkan SSD Lokal di node pool Anda. Hal ini berlaku untuk kelompok mesin generasi pertama dan kedua seperti mesin N1 dan N2. Untuk mempelajari lebih lanjut, lihat Membuat cluster dengan SSD Lokal.
Untuk memeriksa apakah node Anda telah mengaktifkan penyimpanan efemeral di SSD Lokal, jalankan perintah berikut:
kubectl describe node <code><var>NODE_NAME</var></code> | grep "cloud.google.com/gke-ephemeral-storage-local-ssd"
Untuk family VM TPU, terutama v6+, sebaiknya gunakan RAM sebagai cache file untuk mendapatkan performa terbaik karena instance VM ini memiliki RAM yang lebih besar.
- Saat menggunakan RAM, perhatikan error kehabisan memori (OOM) karena menyebabkan gangguan Pod. Cloud Storage FUSE menggunakan memori, jadi menyiapkan cache file
untuk menggunakan container sidecar dapat menyebabkan error OOM. Untuk mencegah skenario tersebut, sesuaikan kolom
file-cache:max-size-mb
konfigurasi cache file Anda ke nilai yang lebih kecil. - Untuk keluarga TPU lainnya, sebaiknya gunakan
pd-balanced
ataupd-ssd
. Jenis disk default untuk boot disk di GKE adalahpd-balanced
.
- Saat menggunakan RAM, perhatikan error kehabisan memori (OOM) karena menyebabkan gangguan Pod. Cloud Storage FUSE menggunakan memori, jadi menyiapkan cache file
untuk menggunakan container sidecar dapat menyebabkan error OOM. Untuk mencegah skenario tersebut, sesuaikan kolom
Hindari penggunaan disk booting untuk penyimpanan data ke dalam cache karena dapat menyebabkan penurunan performa dan penghentian yang tidak terduga. Sebagai gantinya, pertimbangkan untuk menggunakan PersistentVolume yang didukung oleh penyimpanan blok yang tahan lama.
Menggunakan caching file berbasis disk RAM
Anda dapat menggunakan disk RAM untuk penyiapan cache file atau download paralel guna mengurangi overhead penggunaan boot disk jika Anda menggunakan VM TPU dengan RAM yang cukup besar.
Untuk menggunakan disk RAM dengan driver CSI Cloud Storage FUSE, tambahkan kode berikut ke manifes Anda:
volumes:
- name: gke-gcsfuse-cache
emptyDir:
medium: Memory
Cache statistik
Driver CSI Cloud Storage FUSE meningkatkan performa dengan meng-cache metadata file, seperti ukuran dan waktu modifikasi. Driver CSI mengaktifkan cache stat ini secara default dan mengurangi latensi dengan menyimpan informasi secara lokal, bukan berulang kali meminta informasi dari Cloud Storage. Anda dapat mengonfigurasi ukuran maksimumnya (defaultnya adalah 32 MB) dan durasi data tetap berada dalam cache (defaultnya adalah 60 detik). Dengan menyetel cache metadata secara tepat, Anda dapat mengurangi panggilan API ke Cloud Storage, untuk meningkatkan performa dan efisiensi aplikasi dengan meminimalkan traffic dan latensi jaringan.
Untuk mempelajari lebih lanjut praktik terbaik untuk caching stat, lihat Ringkasan caching Cloud Storage FUSE.
Menggunakan pengambilan data metadata untuk mengisi otomatis cache metadata
Fitur pengambilan data metadata memungkinkan driver CSI Cloud Storage FUSE memuat metadata yang relevan tentang objek di bucket Cloud Storage Anda secara proaktif ke dalam cache Cloud Storage FUSE. Pendekatan ini mengurangi panggilan ke Cloud Storage dan sangat bermanfaat bagi aplikasi yang mengakses set data besar dengan banyak file, seperti workload pelatihan AI/ML.
Fitur ini memerlukan GKE versi 1.32.1-gke.1357001 atau yang lebih baru. Fitur ini tidak didukung dengan Pemasangan Dinamis, tempat Anda menentukan garis bawah (_) untuk memasang semua bucket yang dapat diakses oleh ServiceAccount Kubernetes. Jika Anda menggunakan pemasangan dinamis, pengambilan data metadata tidak akan dilakukan.
Untuk melihat peningkatan performa dari pengambilan data metadata, Anda harus menyetel nilai time to live (TTL) item cache metadata ke tidak terbatas. Biasanya, menyetel TTL mencegah konten yang di-cache menjadi usang. Saat menetapkan TTL ke tidak terbatas, Anda harus berhati-hati agar tidak mengubah konten bucket di luar band (yang berarti mengizinkan workload atau aktor lain untuk mengubah workload). Perubahan di luar band tidak terlihat secara lokal dan dapat menyebabkan masalah konsistensi.
Untuk mengaktifkan pengambilan data metadata, lakukan perubahan konfigurasi berikut. Sebaiknya aktifkan fitur ini pada volume yang sering dibaca.
- Tetapkan atribut volume
gcsfuseMetadataPrefetchOnMount: true
. - Perbarui opsi pemasangan berikut:
metadata-cache:stat-cache-max-size-mb:-1
untuk membatalkan setelan batas kapasitas cache statistik.metadata-cache:type-cache-max-size-mb:-1
untuk membatalkan setelan batas kapasitas cache jenis.file-system:kernel-list-cache-ttl-secs:-1
untuk mencegah item cache daftar kernel berakhir masa berlakunya.metadata-cache:ttl-secs:-1
untuk mencegah masa berlaku item metadata yang di-cache berakhir.
Untuk contoh, lihat contoh kode di Meningkatkan performa pembacaan file besar menggunakan download paralel.
Cache daftar
Untuk mempercepat listingan direktori aplikasi, Anda dapat mengaktifkan penyimpanan cache daftar. Fitur ini menyimpan listingan direktori dalam memori sehingga permintaan berulang dapat diproses lebih cepat. Cache daftar dinonaktifkan secara default; Anda dapat mengaktifkannya dengan menyetel parameter kernel-list-cache-ttl-secs
di opsi pemasangan. Nilai ini menentukan durasi penyimpanan listingan dalam cache.
Meningkatkan performa baca file besar menggunakan download paralel
Anda dapat menggunakan download paralel Cloud Storage FUSE untuk mempercepat pembacaan file besar dari Cloud Storage untuk download multi-thread. Download paralel Cloud Storage FUSE dapat sangat bermanfaat untuk kasus penggunaan penayangan model dengan pembacaan berukuran lebih dari 1 GB.
Download paralel memerlukan cache file diaktifkan. Mulai dari GKE versi 1.32.0-gke.1795000, Cloud Storage FUSE secara ketat menerapkan persyaratan ini dan menampilkan error berikut jika Anda mencoba menggunakan download paralel tanpa cache file, yang mencegah Pod Anda dimulai: MountVolume.SetUp failed for volume "gcs-fuse-csi-pv" : rpc error: code = Internal desc = gcsfuse failed with error: Error: error while parsing config: error parsing parallel download config: file cache should be enabled for parallel download support
.
Contoh umum meliputi:
- Penayangan model, tempat Anda memerlukan buffer pengambilan data di muka yang besar untuk mempercepat download model selama booting instance.
- Pemulihan titik pemeriksaan, saat Anda memerlukan cache data hanya baca untuk meningkatkan akses satu kali ke beberapa file besar.
Gunakan download paralel untuk aplikasi yang melakukan pembacaan file besar ber-thread tunggal. Aplikasi dengan paralelisme baca tinggi (menggunakan lebih dari delapan thread) mungkin mengalami performa yang lebih rendah dengan fitur ini.
Untuk menggunakan download paralel dengan driver CSI Cloud Storage FUSE, ikuti langkah-langkah berikut:
Buat cluster dengan caching file yang diaktifkan, seperti yang dijelaskan dalam Mengaktifkan dan menggunakan caching file.
Di manifes Anda, konfigurasikan setelan tambahan ini menggunakan opsi pemasangan untuk mengaktifkan download paralel:
- Tetapkan
file-cache:enable-parallel-downloads:true
. - Sesuaikan
file-cache:parallel-downloads-per-file
,file-cache:parallel-downloads-per-file
,file-cache:max-parallel-downloads
, danfile-cache:download-chunk-size-mb
sesuai kebutuhan.
- Tetapkan
(Opsional) Jika diperlukan, pertimbangkan untuk menyesuaikan atribut volume berikut:
file-cache:cache-file-for-range-read
untuk pembacaan acak atau sebagian.metadata-cache:stat-cache-max-size-mb
danmetadata-cache:type-cache-max-size-mb
untuk workload pelatihan.
Mengurangi konsumsi kuota dari pemeriksaan kontrol akses
Secara default, driver CSI melakukan pemeriksaan kontrol akses untuk memastikan bahwa akun layanan Pod memiliki akses ke bucket Cloud Storage Anda. Hal ini menyebabkan overhead tambahan dalam bentuk panggilan Kubernetes Service API, Security Token Service, dan IAM. Mulai GKE versi 1.29.9-gke.1251000, Anda dapat
menggunakan atribut volume skipCSIBucketAccessCheck
untuk melewati pemeriksaan redundan tersebut dan
mengurangi penggunaan kuota.
Contoh penayangan inferensi
Contoh berikut menunjukkan cara mengaktifkan download paralel untuk penayangan inferensi:
Buat manifes PersistentVolume dan PersistentVolumeClaim dengan spesifikasi berikut:
apiVersion: v1 kind: PersistentVolume metadata: name: serving-bucket-pv spec: accessModes: - ReadWriteMany capacity: storage: 64Gi persistentVolumeReclaimPolicy: Retain storageClassName: example-storage-class claimRef: namespace: NAMESPACE name: serving-bucket-pvc mountOptions: - implicit-dirs #avoid if list cache enabled and doing metadata prefetch - metadata-cache:ttl-secs:-1 - metadata-cache:stat-cache-max-size-mb:-1 - metadata-cache:type-cache-max-size-mb:-1 - file-cache:max-size-mb:-1 - file-cache:cache-file-for-range-read:true - file-system:kernel-list-cache-ttl-secs:-1 - file-cache:enable-parallel-downloads:true - read_ahead_kb=1024 csi: driver: gcsfuse.csi.storage.gke.io volumeHandle: BUCKET_NAME volumeAttributes: skipCSIBucketAccessCheck: "true" gcsfuseMetadataPrefetchOnMount: "true" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: serving-bucket-pvc namespace: NAMESPACE spec: accessModes: - ReadWriteMany resources: requests: storage: 64Gi volumeName: serving-bucket-pv storageClassName: example-storage-class
Ganti nilai berikut:
NAMESPACE
: namespace Kubernetes tempat Anda ingin men-deploy Pod.BUCKET_NAME
: nama bucket Cloud Storage yang Anda tentukan saat mengonfigurasi akses ke bucket Cloud Storage. Anda dapat menentukan garis bawah (_
) untuk memasang semua bucket yang dapat diakses oleh ServiceAccount Kubernetes. Untuk mempelajari lebih lanjut, lihat Pemasangan dinamis dalam dokumentasi Cloud Storage FUSE.
Terapkan manifes ke cluster:
kubectl apply -f PV_FILE_PATH
Ganti
PV_FILE_PATH
dengan jalur ke file YAML Anda.Buat manifes Pod dengan spesifikasi berikut untuk menggunakan PersistentVolumeClaim, bergantung pada apakah Anda menggunakan caching file yang didukung SSD Lokal atau caching file yang didukung disk RAM:
SSD Lokal
apiVersion: v1 kind: Pod metadata: name: gcs-fuse-csi-example-pod namespace: NAMESPACE annotations: gke-gcsfuse/volumes: "true" gke-gcsfuse/cpu-limit: "0" gke-gcsfuse/memory-limit: "0" gke-gcsfuse/ephemeral-storage-limit: "0" spec: containers: # Your workload container spec ... volumeMounts: - name: serving-bucket-vol mountPath: /serving-data readOnly: true serviceAccountName: KSA_NAME volumes: - name: serving-bucket-vol persistentVolumeClaim: claimName: serving-bucket-pvc
Disk RAM
apiVersion: v1 kind: Pod metadata: name: gcs-fuse-csi-example-pod namespace: NAMESPACE annotations: gke-gcsfuse/volumes: "true" gke-gcsfuse/cpu-limit: "0" gke-gcsfuse/memory-limit: "0" gke-gcsfuse/ephemeral-storage-limit: "0" spec: containers: # Your workload container spec ... volumeMounts: - name: serving-bucket-vol mountPath: /serving-data readOnly: true serviceAccountName: KSA_NAME volumes: - name: gke-gcsfuse-cache # gcsfuse file cache backed by RAM Disk emptyDir: medium: Memory - name: serving-bucket-vol persistentVolumeClaim: claimName: serving-bucket-pvc
Terapkan manifes ke cluster:
kubectl apply -f POD_FILE_PATH
Ganti
POD_FILE_PATH
dengan jalur ke file YAML Anda.
Mengonfigurasi atribut volume
Atribut volume memungkinkan Anda mengonfigurasi perilaku spesifik driver CSI Cloud Storage FUSE.
Driver CSI Cloud Storage FUSE tidak mengizinkan Anda menentukan file konfigurasi Cloud Storage FUSE secara langsung. Anda dapat mengonfigurasi beberapa kolom dalam file konfigurasi menggunakan atribut volume CSI Cloud Storage FUSE. Driver CSI menangani penerjemahan nilai atribut volume ke kolom file konfigurasi.
Untuk mengetahui daftar lengkap atribut volume yang didukung, lihat Referensi atribut volume.
Anda dapat menentukan atribut volume dengan cara berikut:
- Di kolom
spec.csi.volumeAttributes
pada manifes PersistentVolume, jika Anda menggunakan volume persisten. - Di kolom
spec.volumes[n].csi.volumeAttributes
, jika Anda menggunakan volume efemeral CSI.
Dalam manifes, atribut volume dapat ditentukan sebagai key-value pair. Contoh:
volumeAttributes:
mountOptions: "implicit-dirs"
fileCacheCapacity: "-1"
gcsfuseLoggingSeverity: warning
Metrik Cloud Storage FUSE
Metrik Cloud Storage FUSE berikut kini tersedia melalui GKE Monitoring API. Detail tentang metrik Cloud Storage FUSE seperti label, jenis, dan unit dapat ditemukan di Metrik Sistem GKE. Metrik ini tersedia untuk setiap Pod yang menggunakan Cloud Storage FUSE dan Anda dapat menggunakan metrik untuk mengonfigurasi insight per volume dan bucket.
Metrik diaktifkan secara default mulai dari GKE versi 1.33.0-gke.2248000 atau yang lebih baru. Untuk menonaktifkannya, tetapkan atribut volume
disableMetrics
ke "true".
Metrik sistem file
Metrik sistem file melacak performa dan kesehatan sistem file Anda, termasuk jumlah operasi, error, dan kecepatan operasi. Metrik ini dapat membantu mengidentifikasi bottleneck dan mengoptimalkan performa.
gcsfusecsi/fs_ops_count
gcsfusecsi/fs_ops_error_count
gcsfusecsi/fs_ops_latency
Metrik Cloud Storage
Anda dapat memantau metrik Cloud Storage, termasuk volume data, kecepatan, dan aktivitas permintaan, untuk memahami cara aplikasi Anda berinteraksi dengan bucket Cloud Storage. Data ini dapat membantu Anda mengidentifikasi area yang perlu dioptimalkan, seperti meningkatkan pola baca atau mengurangi jumlah permintaan.
gcsfusecsi/gcs_download_bytes_count
gcsfusecsi/gcs_read_count
gcsfusecsi/gcs_read_bytes_count
gcsfusecsi/gcs_reader_count
gcsfusecsi/gcs_request_count
gcsfusecsi/gcs_request_latencies
Metrik cache file
Anda dapat memantau metrik cache file, termasuk volume data yang dibaca, kecepatan, dan rasio hit cache, untuk mengoptimalkan performa Cloud Storage FUSE dan aplikasi. Analisis metrik ini untuk meningkatkan strategi penyimpanan dalam cache dan memaksimalkan hit cache.
gcsfusecsi/file_cache_read_bytes_count
gcsfusecsi/file_cache_read_latencies
gcsfusecsi/file_cache_read_count
Mengaktifkan default performa Cloud Storage FUSE
Mulai versi 1.33.2-gke.1043000, GKE secara otomatis mengaktifkan sejumlah default untuk Cloud Storage FUSE yang berjalan di node yang didukung oleh jenis mesin berperforma tinggi.
Selama pemasangan volume, driver CSI Cloud Storage FUSE mengambil jenis instance node target dan meneruskannya ke Cloud Storage FUSE melalui opsi pemasangan baru machine-type
.
Saat jenis mesin berperforma tinggi diteruskan, Cloud Storage FUSE akan otomatis menetapkan opsi pemasangan default berikut:
metadata-cache.negative-ttl-secs: 0
metadata-cache.ttl-secs: -1
metadata-cache.stat-cache-max-size-mb: 1024
metadata-cache.type-cache-max-size-mb: 128
implicit-dirs: true
file-system.rename-dir-limit: 200000
Jika salah satu opsi pemasangan ini ditentukan secara eksplisit, opsi tersebut tidak akan ditimpa oleh default otomatis.
Anda dapat menonaktifkan fitur ini dengan menyertakan disable-autoconfig
dalam opsi pemasangan. Contoh:
mountOptions: "implicit-dirs,disable-autoconfig"
Praktik terbaik untuk penyesuaian performa
Bagian ini mencantumkan beberapa teknik penyesuaian dan pengoptimalan performa yang direkomendasikan untuk driver CSI Cloud Storage FUSE.
Manfaatkan bucket Namespace Hierarkis (HNS): Pilih bucket HNS untuk mencapai peningkatan Kueri Per Detik (QPS) awal yang signifikan hingga 8x lipat. Pilihan ini juga memfasilitasi penggantian nama direktori yang cepat dan atomik, yang merupakan persyaratan penting untuk pembuatan titik pemeriksaan yang efisien dengan Cloud Storage FUSE. Bucket HNS memastikan pengalaman seperti file yang lebih baik dengan mendukung 40.000 permintaan baca objek dan 8.000 permintaan tulis objek per detik, peningkatan yang signifikan dibandingkan dengan 8.000 permintaan baca objek dan 1.000 permintaan tulis objek per detik yang ditawarkan oleh bucket datar.
Pasang direktori tertentu jika memungkinkan: Jika workload Anda melibatkan akses ke direktori tertentu dalam bucket, gunakan tanda
--only-dir
selama pemasangan. Pendekatan yang terfokus ini mempercepat panggilan daftar, karena membatasi cakupan panggilanLookUpInode
, yang melibatkan panggilanlist+stat
untuk setiap file atau direktori di jalur yang ditentukan. Dengan mempersempit pemasangan ke subdirektori yang diperlukan, Anda meminimalkan panggilan ini, sehingga meningkatkan performa.Mengoptimalkan caching metadata: Konfigurasi cache metadata Anda untuk memaksimalkan kapasitasnya dan tetapkan time to live (TTL) yang tidak terbatas. Praktik ini secara efektif meng-cache semua metadata yang diakses selama durasi tugas Anda, sehingga meminimalkan permintaan akses metadata ke Cloud Storage. Konfigurasi ini terbukti sangat bermanfaat untuk volume hanya baca, karena menghilangkan pencarian metadata Cloud Storage yang berulang. Namun, pastikan konsumsi memori yang terkait dengan cache metadata besar ini sesuai dengan kemampuan sistem Anda.
Memaksimalkan resource sidecar GKE: Cloud Storage FUSE beroperasi dalam container sidecar di lingkungan GKE. Untuk mencegah hambatan resource, hapus batasan pada konsumsi CPU dan memori untuk penampung sidecar. Hal ini memungkinkan Cloud Storage FUSE menskalakan penggunaan resource-nya berdasarkan permintaan workload, sehingga mencegah pembatasan dan memastikan throughput yang optimal.
Mengisi cache metadata secara proaktif: Aktifkan pengambilan data metadata untuk driver CSI. Hal ini akan mengisi cache metadata dan daftar secara efisien, meminimalkan panggilan metadata ke Cloud Storage dan mempercepat pengujian awal. Banyak framework ML melakukannya secara otomatis, tetapi penting untuk memastikan langkah ini untuk kode pelatihan kustom. Untuk mempelajari lebih lanjut, lihat Menggunakan pengambilan data metadata untuk mengisi cache metadata.
Manfaatkan cache file dan download paralel: Aktifkan fitur cache file, terutama untuk workload pelatihan multi-epoch, tempat data dibaca berulang kali. Cache file menyimpan data yang sering diakses di penyimpanan lokal (SSD dalam kasus mesin A3), sehingga meningkatkan performa baca. Lengkapi hal ini dengan fitur download paralel, terutama untuk workload penyajian, guna mempercepat download file besar dengan membaginya menjadi beberapa bagian yang lebih kecil dan mendownloadnya secara bersamaan.
Mengoptimalkan titik pemeriksaan: Untuk pembuatan titik pemeriksaan dengan Cloud Storage FUSE, sebaiknya gunakan bucket HNS. Jika menggunakan bucket non-HNS, tetapkan parameter
rename-dir-limit
ke nilai yang tinggi untuk mengakomodasi penggantian nama direktori yang sering digunakan oleh framework ML selama pembuatan titik pemeriksaan. Namun, perlu diketahui bahwa penggantian nama direktori di bucket non-HNS mungkin tidak bersifat atomik dan dapat memerlukan waktu lebih lama untuk diselesaikan.Aktifkan caching daftar: Aktifkan caching daftar menggunakan flag
--kernel-list-cache-ttl-secs
untuk lebih meningkatkan performa. Fitur ini menyimpan listingan direktori dan file dalam cache, sehingga meningkatkan kecepatan operasils
. Penyimpanan dalam cache daftar sangat bermanfaat untuk workload yang melibatkan listingan direktori lengkap yang berulang, yang umum dalam skenario pelatihan AI/ML. Sebaiknya gunakan caching daftar dengan pemasangan hanya baca untuk mempertahankan konsistensi data.Tingkatkan baca-depan kernel: Untuk workload yang terutama melibatkan pembacaan berurutan file besar, seperti penayangan dan checkpoint-restore, meningkatkan ukuran baca-depan dapat meningkatkan performa secara signifikan. Untuk meningkatkan baca-depan Cloud Storage FUSE, tentukan tanda
read_ahead_kb
dimountOptions
dan tetapkan ke 1 MB (misalnya,read_ahead_kb=1024
). Fitur ini memerlukan GKE versi 1.32.2-gke.1297001 atau yang lebih baru.Aktifkan penulisan streaming: Penulisan streaming adalah jalur penulisan baru yang mengupload data langsung ke Cloud Storage saat data ditulis. Pendekatan ini berbeda dengan metode penulisan default, yang menyimpan sementara seluruh penulisan di direktori lokal, lalu menguploadnya ke Cloud Storage setelah operasi
close
ataufsync
. Penulisan streaming mengurangi latensi dan penggunaan ruang disk, sehingga sangat bermanfaat untuk penulisan berurutan yang besar seperti titik pemeriksaan. Untuk mengaktifkan penulisan streaming, tentukan tanda command lineenable-streaming-writes
dimountOptions
.
Langkah berikutnya
- Pelajari contoh tambahan untuk menggunakan driver CSI di GitHub.
- Pelajari Cloud Storage FUSE lebih lanjut.