Mengoptimalkan driver CSI Cloud Storage FUSE untuk performa GKE


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, dan reuse-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 dan gid. Anda juga perlu menggunakan tanda pemasangan file-mode dan dir-mode untuk menetapkan izin sistem file. Perhatikan bahwa Anda tidak dapat menjalankan perintah chmod, chown, atau chgrp terhadap sistem file FUSE Cloud Storage, jadi gunakan tanda pemasangan uid, gid, file-mode, dan dir-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 flag o=noexec. Setiap opsi memerlukan tanda terpisah, misalnya, o=noexec,o=noatime. Hanya opsi berikut yang diizinkan: exec, noexec, atime, noatime, sync, async, dan dirsync.

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 atau pd-ssd. Jenis disk default untuk boot disk di GKE adalah pd-balanced.
  • 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.

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.
Praktik terbaik:

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:

  1. Buat cluster dengan caching file yang diaktifkan, seperti yang dijelaskan dalam Mengaktifkan dan menggunakan caching file.

  2. Di manifes Anda, konfigurasikan setelan tambahan ini menggunakan opsi pemasangan untuk mengaktifkan download paralel:

    1. Tetapkan file-cache:enable-parallel-downloads:true.
    2. Sesuaikan file-cache:parallel-downloads-per-file, file-cache:parallel-downloads-per-file, file-cache:max-parallel-downloads, dan file-cache:download-chunk-size-mb sesuai kebutuhan.
  3. (Opsional) Jika diperlukan, pertimbangkan untuk menyesuaikan atribut volume berikut:

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:

  1. 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.
  2. Terapkan manifes ke cluster:

    kubectl apply -f PV_FILE_PATH
    

    Ganti PV_FILE_PATH dengan jalur ke file YAML Anda.

  3. 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
    
  4. 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 panggilan LookUpInode, yang melibatkan panggilan list+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 operasi ls. 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 di mountOptions 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 atau fsync. 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 line enable-streaming-writes di mountOptions.

Langkah berikutnya