Bu belge, ardışık G/Ç ve eşzamanlı küçük dosya okumalarında ölçülen aktarım hızı, CPU kullanımı ve bellek tüketimi açısından ossfs 2,0, ossfs 1,0 ve goofys arasında yapılan karşılaştırmaları 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ırmaları
Bu karşılaştırmada kullanılan bağlama seçenekleri aşağıdadır:
Bu test HTTPS uç noktalarını kullanır. Güvenilir bir ortamda HTTP uç noktaları, aynı aktarım hızında CPU yükünü azaltır.
ossfs 2,0.4
-
Bağlama yapılandırma dosyası (ossfs2.conf)
Karşıya yükleme parça boyutu 33554432 bayt (32 MB) olarak ayarlanmıştır.
# The endpoint of the bucket's region --oss_endpoint=https://oss-cn-hangzhou-internal.aliyuncs.com # The bucket name --oss_bucket=bucket-test # The AccessKey ID and AccessKey secret --oss_access_key_id=yourAccessKeyID --oss_access_key_secret=yourAccessKeySecret # The upload part size, in bytes --upload_buffer_size=33554432 -
Bağlama komutu
bucket-testpaketini/mnt/ossfs2/dizinineossfs2.confkullanarak bağlayın:ossfs2 mount /mnt/ossfs2/ -c /etc/ossfs2.conf
ossfs 1.91.8
bucket-test paketini doğrudan okuma ve önbellek optimizasyonu etkinleştirilmiş şekilde /mnt/ossfs dizinine bağlayın:
ossfs bucket-test /mnt/ossfs -ourl=https://oss-cn-hangzhou-internal.aliyuncs.com -odirect_read -oreaddir_optimize
goofys 0.24.0
bucket-test paketini /mnt/goofys dizinine bağlayın:
goofys --endpoint https://oss-cn-hangzhou-internal.aliyuncs.com --subdomain bucket-test --stat-cache-ttl 60s --type-cache-ttl 60s /mnt/goofys
Test senaryoları
Her araç aynı paketi bağladıktan sonra FIO ile okuma/yazma performansı ölçülmüştür. Sonuçlar aşağıda verilmiştir.
Tek iş parçacıklı ardışık yazma (100 GB)
ossfs 1,0 yazma performansı disk G/Ç'si ile sınırlıdır.
-
Test komutu
1 MB'lik blok boyutuyla tek iş parçacıklı doğrudan 100 GB yazın:
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ı (Tam yüklü tek çekirdek için %100)
Azami Bellek
ossfs 2,0
2,2 GB/sn
%207
2167 MB
ossfs 1,0
118 MB/sn
%5
15 MB
goofys
450 MB/sn
%250
7,5 GB
Tek iş parçacıklı ardışık okuma (100 GB)
-
Test komutu
Sayfa önbelleğini temizleyin, ardından 1 MB'lik bloklarla tek iş parçacıklı ardışık okuma yapı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ı (Tam yüklü tek çekirdek için %100)
Azami Bellek
ossfs 2,0
4,3 GB/sn
%610
1629 MB
ossfs 1,0
1,0 GB/sn
%530
260 MB
goofys
1,3 GB/sn
%270
976 MB
Çok iş parçacıklı ardışık 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/fiodizinindeki dört adet 100 GB'lık dosyayı 4 iş parçacığıyla 30 saniye boyunca (1 MB'lik bloklarla) 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ı (Tam yüklü tek çekirdek için %100)
Azami Bellek
ossfs 2,0
7,4 GB/sn
%890
6,2 GB
ossfs 1,0
1,8 GB/sn
%739
735 MB
goofys
2,8 GB/sn
%7800
2,7 GB
Eşzamanlı küçük dosya okuma (128 iş parçacığı, 100K × 128 KB)
OSS varsayılan olarak 10.000 QPS sınırına sahiptir. Bu sonuçları tekrarlamak 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ı raporlar.
-
rw-bench.goprogram dosyasını derleyin.go build rw-bench.go -
Bağlı 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 sonraki 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ı (Tam yüklü tek çekirdek için %100)
Azami Bellek
ossfs 2,0
1 GB/sn
%247
176 MB
ossfs 1,0
45 MB/sn
%25
412 MB
goofys
1 GB/sn
%750
1,3 GB