All Products
Search
Document Center

Object Storage Service:Cache data lokal

Last Updated:Jul 09, 2026

ossfs 2.0.8 dan versi yang lebih baru mendukung cache data lokal, yang menyimpan data file yang sebelumnya dibaca ke disk lokal untuk mempercepat pembacaan berulang berikutnya dan mengurangi jumlah permintaan ke OSS. Topik ini menjelaskan prinsip kerja, metode konfigurasi, dan kinerja cache data lokal.

Latar belakang

Saat menggunakan ossfs 2.0 untuk mengakses OSS, data harus diambil dari sisi remote setiap kali file dibaca. Pada skenario yang memerlukan beberapa putaran pembacaan berulang terhadap data yang sama—seperti Pelatihan AI dan pemuatan model—akses remote yang sering menyebabkan latensi jaringan tinggi dan konsumsi bandwidth besar.

Cache data lokal pada ossfs 2.0 menyimpan data file yang sebelumnya dibaca di disk lokal sehingga akses berikutnya dilayani langsung dari disk lokal. Hal ini secara signifikan meningkatkan kinerja pembacaan berulang dan mengurangi biaya permintaan OSS.

Cache data lokal pada ossfs 2.0 memiliki fitur-fitur berikut:

  • Kinerja lebih baik: Pada skenario pembacaan berulang, baik untuk file besar maupun kecil, bandwidth jauh lebih tinggi dibandingkan dengan ossfs 1.0. Untuk informasi selengkapnya, lihat perbandingan kinerja di bawah.

  • Penggantian otomatis: Kebijakan penggantian LRU bawaan secara otomatis menghapus file yang paling lama tidak diakses saat cache penuh, tanpa perlu pembersihan manual.

  • Dukungan untuk jumlah file kecil yang sangat besar: Saat digunakan bersama cache metadata (--max_inode_cache_count dan --attr_timeout), cache data lokal dapat mempercepat secara signifikan pemuatan multi-putaran set data pelatihan AI.

Catatan

Cache data lokal hanya digunakan untuk caching baca dan tidak memengaruhi jalur penulisan. Operasi tulis tidak melewati cache lokal. Ini berbeda dengan -ouse_cache pada ossfs 1.0, yang melakukan caching untuk data baca maupun tulis.

Prinsip kerja

Granularitas cache

Cache menggunakan objek OSS (file) sebagai unit dasar. Setiap file yang telah dibaca memiliki file cache yang sesuai di direktori cache, dan cache diisi sesuai permintaan.

Proses baca

  • Baca pertama: Data diambil dari OSS dan ditulis secara sinkron ke direktori cache lokal.

  • Pembacaan berikutnya: Data dibaca langsung dari cache lokal.

Pemulihan ruang

Saat cache mendekati batas kapasitasnya, file lama secara otomatis dihapus berdasarkan kebijakan LRU (least recently used) untuk memberikan ruang bagi data baru. Pemulihan dilakukan dengan satu file cache sebagai unit terkecil.

Metode konfigurasi

Item konfigurasi

Wajib

Deskripsi

Nilai default

disk_data_cache_dir

Ya

Jalur direktori cache lokal. Cache data diaktifkan ketika item ini diatur ke nilai yang tidak kosong.

Kosong

disk_data_cache_size

Ya

Kapasitas cache maksimum, diselaraskan ke satuan GiB. Tidak boleh melebihi ruang yang tersedia pada disk atau partisi tempat direktori cache berada.

Kosong

disk_data_cache_io_engine

Tidak

Engine IO untuk disk cache. Nilai yang valid: psync dan libaio.

psync

Batasan:

  • Direktori yang ditunjuk oleh --disk_data_cache_dir harus sudah ada dan merupakan direktori kosong. Disarankan agar jalur cache berada pada partisi atau disk independen.

  • --disk_data_cache_size tidak boleh melebihi ruang yang tersedia pada disk tempat direktori cache berada.

  • Saat memasang beberapa instans ossfs2 pada mesin yang sama, setiap instans harus menggunakan direktori cache yang independen.

  • Saat proses ossfs2 berhenti, direktori cache tidak dibersihkan secara otomatis dan harus dibersihkan secara manual.

  • Setelah pemasangan, hindari melakukan operasi pada jalur direktori cache untuk mencegah error yang tidak diketahui.

Contoh perintah mount:

ossfs2 mount /mnt/oss/ \
  --oss_bucket <your-bucket> \
  --oss_endpoint <your-endpoint> \
  --oss_access_key_id <ak> \
  --oss_access_key_secret <sk> \
  --disk_data_cache_dir /mnt/disk/ossfs2/cache \
  --disk_data_cache_size 256G

Persyaratan lingkungan

Parameter

Persyaratan

Sistem file disk cache

ext4, xfs, atau tmpfs (hanya mode psync). Sistem file lain belum diverifikasi.

Tipe disk cache

Disk ephemeral elastis atau NVMe lokal direkomendasikan. Throughput ESSD PL0/PL1/PL2 mudah menjadi bottleneck, yang dapat menghasilkan pengalaman buruk. Saat memori mencukupi, tmpfs dapat digunakan (hanya psync).

Ruang yang tersedia pada disk cache

Tidak kurang dari nilai yang diatur untuk --disk_data_cache_size

Rekomendasi penggunaan

Cache data lokal cocok untuk skenario yang banyak membaca dan sedikit menulis serta memerlukan akses berulang ke data yang sama.

Rekomendasi untuk mengonfigurasi engine IO (disk_data_cache_io_engine):

  • psync: Menggunakan panggilan sistem baca/tulis sinkron, dan data melewati PageCache sistem operasi selama pembacaan. Saat jumlah data yang di-cache mendekati atau lebih kecil dari memori yang tersedia, data yang sering diakses secara alami tetap berada di PageCache, mencapai kecepatan baca mendekati kecepatan memori. Cocok untuk skenario umum, disk cloud spesifikasi rendah, dan disk cache tmpfs (tmpfs tidak mendukung libaio).

  • libaio: Menggunakan antarmuka IO asinkron Linux dan melewati PageCache untuk mengakses disk secara langsung. Cocok untuk skenario dengan NVMe lokal berkapasitas besar dan set data yang jauh lebih besar dari memori, dan biasanya memberikan peningkatan kinerja tambahan sekitar 20% dibandingkan dengan psync.

Tabel berikut mencantumkan skenario khas dan konfigurasi yang direkomendasikan:

Skenario

Rekomendasi penggunaan

Pemuatan multi-putaran data pelatihan AI (akses berulang ke set data yang sama di beberapa epoch), atau beberapa kueri/analisis terhadap set data tetap

Aktifkan cache data lokal dan atur --disk_data_cache_size ke ukuran set data × 1,1. Saat disk cache adalah NVMe lokal dan volume data besar, disarankan menggunakan --disk_data_cache_io_engine=libaio untuk memanfaatkan kinerja disk secara optimal.

Inferensi model besar / pemuatan vLLM (pemuatan berulang file model skala GB)

Jika memori pada tipe instans yang direkomendasikan lebih besar dari total ukuran model, gunakan disk tmpfs sebagai disk cache. Jika memori tidak cukup untuk menyimpan seluruh file model dalam cache, Anda juga dapat menggunakan disk lokal sebagai disk cache, tetapi kinerja akan dibatasi oleh kinerja disk. Dalam kasus ini, lakukan evaluasi khusus sebelum memutuskan apakah akan mengaktifkan cache data lokal.

Penting

Pada skenario yang memiliki persyaratan tinggi terhadap ketepatan waktu data dan data sering dimodifikasi, kami tidak merekomendasikan mengaktifkan cache data (cache memiliki tingkat perbedaan ketepatan waktu tertentu).

Perbandingan kinerja

Target pengujian: ossfs 2.0.8 vs ossfs 1.91.10. Dalam tabel, "baca pertama / baca berikutnya" masing-masing merujuk pada cache miss (data harus diambil dari OSS) dan cache hit lokal. "—" menunjukkan bahwa konfigurasi tidak memiliki cache dan tidak membedakan antara baca pertama dan berikutnya.

Skenario 1: Pembacaan sekuensial file besar (4 thread membaca file 100 GB)

Lingkungan pengujian

  • Mesin: ecs.i4.4xlarge (16 vCPU, 128 GiB)

  • Disk NVMe lokal: NVMe 3576 GiB (bandwidth baca 6 GB/s, bandwidth tulis 3 GB/s, IOPS 900.000)

  • ossfs 2.0: --disk_data_cache_dir=<path> --disk_data_cache_size=3T

  • ossfs 1.0: -ouse_cache=<path> -oparallel_count=128

Hasil

Konfigurasi

Bandwidth (baca pertama / baca berikutnya)

CPU (rata-rata/maks)

Memori puncak

ossfs 2.0 (tanpa cache)

2841 MB/s —

385% / 468%

5170 MB

ossfs 2.0

2206 / 5947 MB/s

244% / 349%

2081 MB

ossfs 1.0

1249 / 2648 MB/s

815% / 1214%

137 MB

Kesimpulan:

  • Setelah cache diaktifkan, pada skenario baca berikutnya untuk file besar, ossfs 2.0 memberikan kinerja sekitar 2,2 kali lipat dibandingkan ossfs 1.0 (mode libaio: 5947 vs 2648 MB/s), mencapai batas kinerja NVMe lokal. Di sisi lain, penggunaan CPU berkurang secara signifikan (≈250% vs 800%).

Skenario 2: Membaca jumlah file kecil yang sangat besar (memuat set data pelatihan ImageNet)

Lingkungan pengujian

  • Mesin: ecs.i4.32xlarge (128 vCPU, 1024 GiB)

  • Disk NVMe lokal: 8 × NVMe 3576 GiB

  • Set data: Set pelatihan ImageNet (sekitar 1,3 juta gambar), dimuat berulang di beberapa epoch

  • ossfs 2.0: --disk_data_cache_dir=<path> --disk_data_cache_size=1500G --disk_data_cache_io_engine=libaio --attr_timeout=36000 --max_inode_cache_count=11000000 (cache metadata diaktifkan)

  • ossfs 1.0: -ouse_cache=<path> -oreaddir_optimize -omax_stat_cache_size=11000000 -ostat_cache_expire=72000

Hasil

Konfigurasi

Bandwidth (baca pertama / baca berikutnya)

CPU (rata-rata/maks)

Memori puncak

ossfs 2.0 (tanpa cache)

304 MB/s — (sekitar 2400 img/s)

67% / 209%

5062 MB

ossfs 2.0

329 / 895 MB/s (sekitar 7100 img/s)

116% / 1216%

6802 MB

ossfs 1.0

38 / 224 MB/s (sekitar 2000 img/s)

66,1% / 206%

31,6 GB

Kesimpulan:

  • Setelah cache disk dan cache metadata diaktifkan, kinerja pemuatan ossfs 2.0 pada epoch berikutnya mencapai 2,7 kali lipat dibandingkan baca pertama (895 vs 329 MB/s), dan permintaan jaringan OSS sepenuhnya dihilangkan. Untuk beban kerja Pelatihan AI yang memuat ulang set data yang sama di beberapa putaran, kami sangat merekomendasikan cache data lokal ossfs 2.0 (engine libaio) + cache metadata.