Topik ini menjelaskan kinerja ossfs 2.0 dalam berbagai skenario, seperti throughput baca/tulis dan beban kerja konkuren, serta menyediakan data referensi untuk membantu Anda mengevaluasi dan mengadopsi ossfs 2.0 bagi beban kerja Anda.
Lingkungan pengujian
-
Lingkungan perangkat keras
-
Tipe instance: ecs.g9i.48xlarge
-
vCPU: 192 vCPU
-
Memori: 768 GiB
-
Bandwidth jaringan: 64 Gbps
-
-
Lingkungan perangkat lunak
-
Sistem operasi: Alibaba Cloud Linux 3.2104 LTS 64-bit
-
Versi kernel: 5.10.134-18.al8.x86_64
-
Versi tool: ossfs 2.0.4, ossfs 1.91.8, dan goofys 0.24.0
-
Konfigurasi mount
Semua pengujian mengasumsikan volume OSS dimount di /mnt/oss dalam kontainer.
-
ossfs 2.0
Tambahkan parameter
otherOptsuntuk mengatur ukuran unggah multi-bagian menjadi 33554432 byte.upload_buffer_size=33554432 -
ossfs 1.0
Tambahkan parameter
otherOptsuntuk mengaktifkan mode baca langsung dan optimisasi cache.-o direct_read -o readdir_optimize
Skenario uji
Setiap tool memount bucket yang sama, lalu FIO mengukur kinerja baca/tulis. Berikut hasilnya.
Tulisan sekuensial single-threaded (100 GB)
Performa penulisan ossfs 1.0 dibatasi oleh I/O disk.
-
Perintah pengujian
Tulisan langsung single-threaded sebesar 100 GB dengan ukuran blok 1 MB:
fio --name=file-100G --ioengine=libaio --rw=write --bs=1M --size=100G --numjobs=1 --direct=1 --directory=/mnt/oss/fio_direct_write --group_reporting -
Hasil pengujian
Tool
Bandwidth
Pemanfaatan core CPU (100% untuk satu core yang sepenuhnya terbebani)
Memori puncak
ossfs 2.0
2,2 GB/s
207%
2167 MB
ossfs 1.0
118 MB/s
5%
15 MB
goofys
450 MB/s
250%
7,5 GB
Baca sekuensial single-threaded (100 GB)
-
Perintah pengujian
Bersihkan page cache, lalu jalankan pembacaan sekuensial single-threaded dengan blok 1 MB:
echo 1 > /proc/sys/vm/drop_caches fio --name=file-100G --ioengine=libaio --direct=1 --rw=read --bs=1M --directory=/mnt/oss/fio_direct_write --group_reporting --numjobs=1 -
Hasil pengujian
Tool pengujian
Bandwidth
Pemanfaatan core CPU (100% untuk satu core yang sepenuhnya terbebani)
Memori puncak
ossfs 2.0
4,3 GB/s
610%
1629 MB
ossfs 1.0
1,0 GB/s
530%
260 MB
goofys
1,3 GB/s
270%
976 MB
Baca sekuensial multi-threaded (4 × 100 GB)
-
Buat file pengujian
Buat empat file pengujian masing-masing 100 GB di
/mnt/oss/fio:fio --name=file-100g --ioengine=libaio --direct=1 --iodepth=1 --numjobs=4 --nrfiles=1 --rw=write --bs=1M --size=100G --group_reporting --thread --directory=/mnt/oss/fio -
Perintah pengujian
Bersihkan page cache, lalu baca empat file 100 GB menggunakan 4 thread selama 30 detik (blok 1 MB) di
/mnt/oss/fio:echo 1 > /proc/sys/vm/drop_caches fio --name=file-100g --ioengine=libaio --direct=1 --iodepth=1 --numjobs=4 --nrfiles=1 --rw=read --bs=1M --size=100G --group_reporting --thread --directory=/mnt/oss/fio --time_based --runtime=30 -
Hasil pengujian
Tool
Bandwidth
Pemanfaatan core CPU (100% untuk satu core yang sepenuhnya terbebani)
Memori puncak
ossfs 2.0
7,4 GB/s
890%
6,2 GB
ossfs 1.0
1,8 GB/s
739%
735 MB
goofys
2,8 GB/s
7800%
2,7 GB
Baca file kecil konkuren (128 thread, 100K × 128 KB)
OSS memiliki batas QPS default 10.000. Untuk mereproduksi hasil ini, pastikan tidak ada layanan lain yang mengonsumsi kuota QPS akun pengujian.
-
Langkah-langkah
-
Buat program Go bernama
rw-bench.go.Program ini secara konkuren membuat atau membaca file dalam direktori target dan melaporkan throughput.
-
Kompilasi file program
rw-bench.go.go build rw-bench.go -
Buat 100.000 file (masing-masing 128 KB) di direktori yang dimount:
mkdir -p <path_to_mounted_test_directory> && ./rw-bench --dir <path_to_mounted_test_directory> --file-size-KB 128 --file-count 100000 --write -
Bersihkan page cache dan jalankan pengujian lima kali. Catat hasil kondisi stabil setelah latensi stabil.
echo 1 > /proc/sys/vm/drop_caches ./rw-bench --dir <path_to_mounted_test_directory> --threads 128
-
-
Hasil pengujian
Tool
Bandwidth
Pemanfaatan core CPU (100% untuk satu core yang sepenuhnya terbebani)
Memori puncak
ossfs 2.0
1 GB/s
247%
176 MB
ossfs 1.0
45 MB/s
25%
412 MB
goofys
1 GB/s
750%
1,3 GB