Bu konu, okuma/yazma aktarım hızı ve eşzamanlı iş yükleri gibi senaryolarda ossfs 2.0 performansını açıklar; iş yüklerinizde ossfs 2.0'ı değerlendirmenize ve benimsemenize yardımcı olacak referans veriler sunar.
Test ortamı
-
Donanım ortamı
Örnek türü: ecs.g9i.48xlarge
vCPU: 192 vCPU
Bellek: 768 GiB
Ağ bant genişliği: 64 Gbps
-
Yazılım ortamı
İşletim sistemi: Alibaba Cloud Linux 3.2104 LTS 64 bit
Çekirdek sürümü: 5.10.134-18.al8.x86_64
Araç sürümleri: ossfs 2.0.4, ossfs 1.91.8 ve goofys 0.24.0
Bağlama yapılandırması
Tüm testlerde OSS biriminin konteyner içinde /mnt/oss yoluna bağlandığı varsayılır.
-
ossfs 2.0
Çok parçalı yükleme boyutunu 33554432 bayt olarak ayarlamak için
otherOptsparametresini ekleyin.upload_buffer_size=33554432 -
ossfs 1.0
Doğrudan okuma modunu etkinleştirmek ve önbellek optimizasyonu sağlamak için
otherOptsparametresini ekleyin.-o direct_read -o readdir_optimize
Test senaryoları
Her araç aynı paketi bağladıktan sonra FIO ile okuma/yazma performansı ölçülmüştür. Sonuçlar aşağıdadır.
Tek iş parçacıklı sıralı yazma (100 GB)
ossfs 1.0 yazma performansı disk G/Ç tarafından sınırlanır.
-
Test komutu
1 MB blok boyutuyla 100 GB'lık tek iş parçacıklı doğrudan yazma:
fio --name=file-100G --ioengine=libaio --rw=write --bs=1M --size=100G --numjobs=1 --direct=1 --directory=/mnt/oss/fio_direct_write --group_reporting -
Test sonuçları
Araç
Bant genişliği
CPU çekirdek kullanımı (tek bir tamamen yüklü çekirdek için %100)
Azami bellek
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
Tek iş parçacıklı sıralı okuma (100 GB)
-
Test komutu
Sayfa önbelleğini temizleyin, ardından 1 MB bloklarla tek iş parçacıklı sıralı okuma çalıştırın:
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 -
Test sonuçları
Test aracı
Bant genişliği
CPU çekirdek kullanımı (tek bir tamamen yüklü çekirdek için %100)
Azami bellek
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
Çok iş parçacıklı sıralı okuma (4 × 100 GB)
-
Test dosyalarını oluşturun
/mnt/oss/fiodizininde dört adet 100 GB'lık test dosyası oluşturun: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 -
Test komutu
Sayfa önbelleğini temizleyin, ardından
/mnt/oss/fioiçindeki dört 100 GB'lık dosyayı 4 iş parçacığıyla 30 saniye boyunca (1 MB bloklar) okuyun: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 -
Test sonuçları
Araç
Bant genişliği
CPU çekirdek kullanımı (tek bir tamamen yüklü çekirdek için %100)
Azami bellek
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
Eşzamanlı küçük dosya okuma (128 iş parçacığı, 100K × 128 KB)
OSS'in varsayılan 10.000 QPS sınırı bulunur. Bu sonuçları yeniden üretmek için test hesabının QPS kotasını başka hizmetlerin tüketmediğinden emin olun.
-
Adımlar
-
rw-bench.goadında bir Go programı oluşturun.Program, hedef dizindeki dosyaları eşzamanlı olarak oluşturur veya okur ve aktarım hızını bildirir.
-
rw-bench.goprogram dosyasını derleyin.go build rw-bench.go -
Bağlanan dizinde 100.000 dosya (her biri 128 KB) oluşturun:
mkdir -p <path_to_mounted_test_directory> && ./rw-bench --dir <path_to_mounted_test_directory> --file-size-KB 128 --file-count 100000 --write -
Sayfa önbelleğini temizleyin ve testi beş kez çalıştırın. Gecikme süresi kararlı hale geldikten sonra durağan durum sonuçlarını kaydedin.
echo 1 > /proc/sys/vm/drop_caches ./rw-bench --dir <path_to_mounted_test_directory> --threads 128
-
-
Test sonuçları
Araç
Bant genişliği
CPU çekirdek kullanımı (tek bir tamamen yüklü çekirdek için %100)
Azami bellek
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