Zkušenost s vytvářením úložiště Ceph s propustností tebibitů za sekundu

Inženýr z firmy Clyso shrnul zkušenosti s vytvořením úložiště klastru na bázi redundantního distribuovaného systému Ceph s propustností přesahující tebibyte za sekundu. Bylo poznamenáno, že toto je první klastra na bázi Ceph, která dokázala dosáhnout takového ukazatele, ale před dosažením tohoto výsledku bylo potřeba překonat řadu nepředvídaných překážek.

Například pro zvýšení výkonu o 10-20 % stačilo na serverech v nastavení šetření energií v BIOSu nastavit režim maximálního výkonu a vypnout c-state (c-state mění parametry šetření energie v závislosti na zatížení, což se odráží v Ceph). Také se ukázalo, že při použití disků NVMe jádro Linuxu tráví významnou část času zpracováním spin-locků během aktualizace mapování IOMMU. Vypnutí IOMMU v jádru vedlo k výraznému zvýšení výkonu ve testech zápisu a čtení bloků o velikosti 4MB.

Vypnutí IOMMU však nevyřešilo problém s poklesem výkonu při náhodném zápisu bloků o velikosti 4KB. Když se inženýři snažili zjistit, v čem je problém, narazili na opravy ve scénářích sestavení Ceph od projektů Gentoo a Ubuntu, které zahrnovaly sestavení s volbou RelWithDebInfo, jelikož s ní v GCC byla aplikována optimalizační režim „-O2“, který výrazně zvyšoval výkon Ceph. K poklesu výkonu také přispěla kompilace s knihovnou TCMalloc. Změna kompilátorových příznaků a ukončení používání TCMalloc vedla ke snížení času balení (compaction) na třetinu a zdvojnásobení výkonu náhodných zápisových operací bloky 4K. Na závěr byla dále provedena optimalizace nastavení Reef RocksDB a skupin umístění (PG).

Klastr je tvořen ze 68 uzlů na bázi servery Dell PowerEdge R6615 s CPU AMD EPYC 9454P 48C/96T. Každý uzel obsahuje 10 NVMe disků Dell 15.36TB, dva ethernetové adaptéry 100GbE Mellanox ConnectX-6 a 192 GB RAM. Software je založen na Ubuntu 20.04.6 a Ceph 17.2.7. V klastru na 63 uzlech je nasazeno 630 OSD (Object Storage Daemon, proces na pozadí, který spravuje ukládání dat v místním úložišti, po jednom OSD na NVMe disk), tři procesy MON (monitor, sleduje stav klastra) a jeden proces MGR (Manager, spravující služba). Velikost úložiště je 8.2 PB.

Přenosová kapacita při sekvenčních operacích čtení bloků 4M dosáhla 1025 GiB/s a při zápisu 270 GiB/s. Při náhodném čtení bloků 4KB výkon dosáhl 25,5 milionu čtecích operací za sekundu a 4,9 milionu při zápisu. Aktivace šifrování snížila přenosovou kapacitu při čtení přibližně na 750 GiB/s. Při použití kódů pro opravu chyb EC62 činila přenosová kapacita 547 GiB/s při čtení a 387 GiB/s při zápisu (rychlost zápisu byla vyšší než bez kódů pro opravu), a při náhodném přístupu 3,4M IOPS při čtení a 936K IOPS při zápisu.

Zkušenost s vytvářením úložiště Ceph s propustností tebibitů za sekundu
Zkušenost s vytvářením úložiště Ceph s propustností tebibitů za sekundu

Dále je třeba poznamenat, že v září byl podobný milník přenosové kapacity v tebibajtech za sekundu dosažen v exabajtovém úložišti CERN, realizovaném na základě otevřeného distribuovaného úložiště EOS, postaveného na protokolu XRootD.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster