Makale, Dell EMC HPC ve AI Innovation Lab bünyesinde Nirmala Sundararajan tarafından Kasım 2019'da yazılmıştır
HPC BeeGFS Yüksek Performanslı Depolama için Dell EMC Ready Çözümleri
Tablo 1 ve 2, sırasıyla yönetim sunucusu ve meta veri/depolama sunucusunun donanım özelliklerini göstermektedir. Tablo 3'te çözüm için kullanılan yazılım sürümleri açıklanmıştır.
Tablo 1 PowerEdge R640 Yapılandırması (Yönetim Sunucusu) | |
---|---|
Sunucu | Dell EMC PowerEdge R640 |
İşlemci | 2x Intel Xeon Gold 5218 2,3 GHz, 16 çekirdek |
Bellek | 12 x 8 GB DDR4 2666MT/s DIMM - 96 GB |
Yerel Diskler | 6 x 300 GB 15K RPM SAS 2,5 inç HDD |
RAID Denetleyicisi | PERC H740P Entegre RAID Denetleyicisi |
Bant Dışı Yönetim | Lifecycle Controller teknolojisine sahip iDRAC9 Enterprise |
Güç Kaynakları | Çift 1100 W Güç Kaynağı Ünitesi |
BIOS Sürümü | 2.2.11 |
İşletim Sistemi | CentOS™ 7.6 |
Kernel Sürümü | 3.10.0-957.27.2.el7.x86_64 |
Tablo 2 PowerEdge R740xd Yapılandırması (Meta Veri ve Depolama Sunucuları) | |
---|---|
Sunucu | Dell EMC PowerEdge R740xd |
İşlemci | 2,90 GHz'de 2x Intel Xeon Platinum 8268 CPU, 24 çekirdek |
Bellek | 12 x 32 GB DDR4 2933MT/s DIMM - 384 GB |
BOSS Kartı | İşletim sistemi için RAID 1'de 2x 240 GB M.2 SATA SSD |
Yerel Sürücüler | 24x Dell Express Flash NVMe P4600 1,6 TB 2,5 inç U.2 |
Mellanox EDR kartı | 2x Mellanox ConnectX-5 EDR kartı (Yuva 1 ve 8) |
Bant Dışı Yönetim | Lifecycle Controller teknolojisine sahip iDRAC9 Enterprise |
Güç Kaynakları | Çift 2000 W Güç Kaynağı Ünitesi |
Tablo 3 Yazılım Yapılandırması (Meta Veri ve Depolama Sunucuları) | |
---|---|
BIOS | 2.2.11 |
CPLD | 1.1.3 |
İşletim Sistemi | CentOS™ 7.6 |
Kernel Sürümü | 3.10.0-957.el7.x86_64 |
iDRAC | 3.34.34.34 |
Sistem Yönetimi Aracı | OpenManage Server Administrator 9.3.0-3407_A00 |
Mellanox OFED | 4.5-1.0.1.0 |
NVMe SSD'ler | QDV1DP13 |
*Intel ® Data Center Tool | 3.0.19 |
BeeGFS | 7.1.3 |
Grafana | 6.3.2 |
InfluxDB | 1.7.7 |
IOzone Karşılaştırmalı Testi | 3.487 |
Yukarıdaki örnekte aynı istemciye bağlanmış iki farklı dosya sistemi gösterilmektedir. Bu testte istemci olarak 32x C6420 düğümü kullanılmıştır.$ cat /etc/beegfs/beegfs-mounts.conf
/mnt/beegfs-medium /etc/beegfs/beegfs-client-medium.conf
/mnt/beegfs-small /etc/beegfs/beegfs-client-small.conf
Şekil 8'de NUMA bölgesine InfiniBand bağlantılarının vurgulandığı sınama ortamı gösterilmektedir. Her sunucunun iki IP bağlantısı vardır ve NUMA 0 bölgesinden geçen trafik IB0 arayüzü tarafından sağlanırken NUMA 1 bölgesinden geçen trafik IB1 arayüzü tarafından sağlanır.# cat /proc/sys/kernel/numa_balancing
0
Tablo 4 İstemci Yapılandırması | |
---|---|
İstemciler | 32x Dell EMC PowerEdge C6420 Bilgi İşlem Düğümü |
BIOS | 2.2.9 |
İşlemci | 2,40 GHz'de 2x Intel Xeon Gold 6148 CPU, işlemci başına 20 çekirdek |
Bellek | 12 x 16 GB DDR4 2666 MT/s DIMM - 192 GB |
BOSS Kartı | İşletim sistemi için RAID 1'de 2x 120 GB M.2 önyükleme sürücüleri |
İşletim Sistemi | Red Hat Enterprise Linux Sunucusu sürüm 7.6 |
Kernel Sürümü | 3.10.0-957.el7.x86_64 |
Interconnect | 1x Mellanox ConnectX-4 EDR kartı |
OFED Sürümü | 4.5-1.0.1.0 |
Sıralı okuma ve yazmaları değerlendirmek için sıralı okuma ve yazma modunda IOzone karşılaştırmalı testi kullanıldı. Bu testler, 1 iş parçacığından başlayıp ikiye katlanarak 1024 iş parçacığına kadar olmak üzere çeşitli iş parçacığı sayılarıyla gerçekleştirildi. Bu test iş parçacığı başına bir dosya veya N dosya başına N istemci (N-N) senaryosunda çalıştığı için her iş parçacığı sayısında eşit sayıda dosya oluşturuldu. İşlemler 32 fiziksel istemci düğümüne çevrimsel sıralı veya döngüsel bir şekilde dağıtılmıştır. Böylece talepler eşit olarak dağıtılmış ve yük dengelemesi sağlanmıştır. 8 TB'lik bir toplama dosyası boyutu seçildi ve bu, tüm testlerde iş parçacığı sayısına eşit olarak dağıtıldı. Toplam dosya boyutu, hem sunuculardan hem BeeGFS istemcilerinden gelen önbellekleme etkilerini en aza indirecek büyüklükte seçilmiştir. IOzone, işlemler arasındaki sınırları koordine edebilmesi için birleşik yazma ve okuma modunda (-i 0, -i 1) çalıştırıldı. Bu test ve sonuçlarda her çalıştırmada 1 MiB kayıt boyutu kullandık. Sıralı N-N testleri için kullanılan komutlar aşağıda verilmiştir:
Sıralı Yazma ve Okuma: iozone -i 0 -i 1 -c -e -w -r 1m -I -s $Size -t $Thread -+n -+m /path/to/threadlist
İşletim sistemi önbellekleri, şu komut çalıştırılarak yazma ve okuma testlerinin yanı sıra yinelemeler arasında istemci düğümlerinde de kapatıldı veya temizlendi:
# sync & echo 3 > /proc/sys/vm/drop_caches
Beegfs için varsayılan şerit sayısı 4'tür. Ancak yığın boyutu ve dosya başına hedef sayısı dizin bazında yapılandırılabilir. Tüm bu testler için BeeGFS şerit boyutu 2 MB olarak seçildi ve aşağıda gösterildiği gibi NUMA bölgesi başına üç hedefimiz olduğu için şerit sayısı 3 olarak seçildi:
$ beegfs-ctl --getentryinfo --mount=/mnt/beegfs /mnt/beegfs/benchmark --verbose
EntryID: 0-5D9BA1BC-1
ParentID: root
Metadata node: node001-numa0-4 [ID: 4]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 2M
+ Number of storage targets: desired: 3
+ Storage Pool: 1 (Default)
Inode hash path: 7/5E/0-5D9BA1BC-1
Büyük boyutlu şeffaf sayfalar devre dışı bırakıldı ve meta veri ve depolama sunucularında aşağıdaki ayarlama seçenekleri uygulandı:
- vm.dirty_background_ratio = 5
- vm.dirty_ratio = 20
- vm.min_free_kbytes = 262144
- vm.vfs_cache_pressure = 50
- vm.zone_reclaim_mode = 2
- kernel.numa_balancing = 0
Yukarıdakilere ek olarak aşağıdaki BeeGFS ayarlama seçenekleri kullanılmıştır:
Şekil 9'da, en yüksek okuma performansının 1024 iş parçacığında 132 GB/sn ve en yüksek yazma performansının 256 iş parçacığında 121 GB/sn olduğunu görebiliriz. Her sürücü 3,2 GB/sn en yüksek okuma performansı ve 1,3 GB/sn en yüksek yazma performansı sağlayabilir. Bu da teorik olarak okumalar için 422 GB/sn ve yazmalar için 172 GB/sn düzeyinde maksimum performansa olanak tanır. Ancak burada sınırlayıcı faktör ağdır. Kurulumdaki depolama sunucuları için toplam 11 InfiniBand EDR bağlantımız var. Her bağlantı teorik olarak 12,4 GB/sn maksimum performans sağlayabilir ve bu da teoride 136,4 GB/sn maksimum performans anlamına gelir. Elde edilen en yüksek okuma ve yazma performansı, teorik en yüksek performansın sırasıyla %97 ve %89'udur.
Tek iş parçacığı yazma performansının yaklaşık 3 GB/sn ve okuma performansının yaklaşık 3 GB/sn olduğu gözlemlenmiştir. Yazma performansının doğrusal olarak ölçeklendiğini, 256 iş parçacığında zirveye ulaştığını ve ardından düşmeye başladığını gözlemleyebiliriz. Daha düşük iş parçacığı sayılarında okuma ve yazma performansı aynıdır. Çünkü 8 iş parçacığına kadar, 24 hedefte 8 dosya yazan 8 istemcimiz olması, tüm depolama hedeflerinin tam olarak kullanılmadığı anlamına geliyor. Sistemde 33 depolama hedefimiz var. Bu nedenle tüm sunucuları tam olarak kullanmak için en az 11 iş parçacığı gerekiyor. Okuma performansı, eş zamanlı iş parçacığı sayısındaki artışla birlikte istikrarlı olarak doğrusal artış kaydeder ve 512 ile 1024 iş parçacığında neredeyse benzer performans gözlemleriz.
Ayrıca 16'dan 128'e kadar olan iş parçacığı sayılarında okuma performansının yazma performansından düşük olduğunu ve ardından okuma performansının ölçeklenmeye başladığını gözlemliyoruz. Bunun nedeni, PCIe okuma işleminin hem istek hem tamamlama gerektiren Yayınlanmamış İşlem olmasına karşın, PCIe yazma işleminin çalıştırıp unutulabilecek işlemler olmasıdır. İşlem Katmanı Paketi, Veri Bağlantısı Katmanına teslim edildiğinde işlem tamamlanır. Yazma işlemi, yalnızca bir istekten oluşan bir "Yayınlanmış" işlemdir.
Okuma verimi, genellikle yazma veriminden daha düşüktür çünkü okumalar aynı miktarda veri için tek bir yazma yerine iki işlem gerektirir. PCI Express, okumalar için bölünmüş bir işlem modeli kullanır. Okuma işlemi aşağıdaki adımları içerir:
Okuma verimi, okuma isteğinin gönderildiği zaman ile tamamlayıcının veriyi döndürmesi için geçen süre arasındaki gecikmeye bağlıdır. Bununla birlikte, uygulama bu gecikmeyi karşılamak için yeterli sayıda okuma isteği yayınladığında verim en üst düzeye çıkar. Bu nedenle 16 iş parçacığından 128 iş parçacığına kadar okuma performansı yazma performansından daha düşükken istek sayısı arttığında verim yükselir. İstek sahibi, sonraki talepleri göndermeden önce diğerlerinin tamamlanmasını beklediğinde daha düşük bir verim ölçülür. İlk veri döndükten sonra gecikmeyi azaltmak için birden fazla istek gönderildiğinde daha yüksek bir verim ölçülür.
Rastgele G/Ç performansını değerlendirmek için rastgele modunda IOzone kullanıldı. Testler, 4 iş parçacığından başlayarak 1024 iş parçacığına kadar iş parçacığı üzerinde gerçekleştirilmiştir. IOzone'u çalıştırmak için Doğrudan G/Ç seçeneği (-I) kullanıldı. Böylece tüm işlemler tampon önbelleği atlayıp doğrudan diske aktarıldı. BeeGFS şerit sayısı 3 ve yığın boyutu 2 MB olarak kullanılmıştır. IOzone üzerinde 4 KiB istek boyutu kullanılmıştır. Performans, saniye başına G/Ç işlemleri (IOPS) cinsinden ölçülmüştür. İşletim sistemi önbellekleri, BeeGFS sunucularında ve BeeGFS istemcilerinde çalıştırmalar arasında kapatıldı. Rastgele yazma ve okuma işlemlerini yürütmek için kullanılan komut aşağıda verilmiştir:
Rastgele okuma ve yazma: iozone -i 2 -w -c -O -I -r 4K -s $Size -t $Thread -+n -+m /path/to/threadlist
Şekil 10: 8 TB toplam dosya boyutunda IOzone kullanarak Rastgele Okuma ve Yazma Performansı
Şekil 10'da gösterildiği üzere rastgele yazma işlemleri 512 iş parçacığında yaklaşık 3,6 Milyon IOPS'de ve rastgele okuma işlemleri 1024 iş parçacığında yaklaşık 3,5 Milyon IOPS'de maksimum seviyeye ulaşmaktadır. Hem yazma hem okuma performansı, daha fazla sayıda GÇ isteği olduğunda daha yüksek bir performans gösterir. Bunun nedeni, NVMe standardının 64 bine kadar G/Ç kuyruğunu ve kuyruk başına 64 bine kadar komutu desteklemesidir. Bu büyük NVMe kuyruk havuzu daha yüksek seviyelerde G/Ç paralelliği sağlar ve dolayısıyla IOPS 3 milyonu aşar.
Bu blog yazısı, Dell EMC Yüksek Performanslı BeeGFS Depolama Çözümünün piyasaya sürüldüğünü duyurmakta ve performans özelliklerini vurgulamaktadır. Bu çözümün en yüksek sıralı okuma ve yazma performansı sırasıyla yaklaşık 132 GB/sn ve yaklaşık 121 GB/sn'dir. Rastgele yazmalar yaklaşık 3,6 Milyon IOPS ve rastgele okumalar yaklaşık 3,5 Milyon IOPS ile maksimum seviyeye ulaşmaktadır.
Bu blog yazısı, yüksek performanslı sıfırdan hazırlanan alana odaklanarak tasarlanan "BeeGFS Depolama Çözümü"nün birinci bölümüdür. Performans ve kapasiteyi iyileştirmek için sunucu sayısını artırarak çözümün nasıl ölçeklendirilebileceğini açıklayacak olan blog serisinin 2. bölümü için bizi takip etmeye devam edin. Blog serisinin 3. bölümünde BeeGFS'nin ek özellikleri ele alınacak ve BeeGFS'nin yerleşik depolama hedeflerine ilişkin karşılaştırmalı test olan "StorageBench" kullanımı vurgulanacaktır.
Sonraki adımların parçası olarak, daha sonra meta veri performansı ve N iş parçacığından 1 dosyaya IOR performansı ile tasarım hususları, ayarlama ve yapılandırma hakkında ek ayrıntılar içeren bir teknik inceleme yapılacaktır.