Iskustvo stvaranja Ceph pohrane s propusnošću od tebibajta u sekundi

Inženjer iz tvrtke Clyso sažeo je iskustvo izrade razvojne pohrane temeljene na otpornoj distribuiranoj Ceph sustavu s propusnošću većom od tebibajta u sekundi. Izdvojeno je da je ovo prvi Ceph klaster koji je uspio postići takvu razinu, no inženjeri su se morali suočiti s nizom nevidljivih prepreka prije postizanja ovog rezultata.

Na primjer, za poboljšanje performansi od 10-20% bilo je dovoljno uključiti u BIOS postavkama napajanja na poslužiteljima način maksimalne učinkovitosti i isključiti c-state (c-state mijenja postavke štednje energije ovisno o opterećenju, što utječe na Ceph). Također se pokazalo da prilikom korištenja NVMe uređaja, Linux jezgra troši značajno vrijeme na obradu spin-zaključavanja tijekom ažuriranja IOMMU mapiranja. Isključivanje IOMMU u jezgri rezultiralo je značajnim povećanjem performansi u testovima čitanja i pisanja blokova veličine 4MB.

Međutim, isključivanje IOMMU nije riješilo problem s padom performansi prilikom nasumičnog pisanja blokova veličine 4KB. Istražujući uzrok, inženjeri su naišli na ispravke u Ceph gradbenim scenarijima iz Gentoo i Ubuntu projekata, koji su uključivali izgradnju s opcijom RelWithDebInfo, jer je uz nju u GCC-u korišten način optimizacije «-O2», pri kojem je performansa Ceph značajno porasla. Također, do smanjenja performansi dovela je kompilacija s TCMalloc bibliotekom. Promjena kompilacijskih zastavica i prestanak korištenja TCMalloc dovelo je do smanjenja vremena pakiranja (compaction) tri puta i povećanja performansi nasumičnih operacija pisanja blokova od 4K dvostruko. Na kraju, dodatna optimizacija postavki Reef RocksDB i grupa rasporeda (PG) je također izvedena.

Klaster se sastoji od 68 čvorova poslužitelja Dell PowerEdge R6615 s CPU AMD EPYC 9454P 48C/96T. Svaki čvor sadrži 10 NVMe uređaja Dell 15.36TB, dva Ethernet adaptera 100GbE Mellanox ConnectX-6 i 192 GB RAM-a. Softver se temelji na Ubuntu 20.04.6 i Ceph 17.2.7. U klasteru od 63 čvora podignuto je 630 OSD (Object Storage Daemon, pozadinski proces koji upravlja pohranom podataka u lokalnoj pohrani, jedan OSD po NVMe uređaju), tri procesa MON (monitor, prati stanje klastera) i jedan proces MGR (Manager, upravljački servis). Veličina pohrane iznosi 8.2 PB.

Propusnost tijekom sekvencijalnih operacija čitanja blokova od 4M iznosila je 1025 GiB/s, a zapisivanja 270 GiB/s. Tijekom slučajnog čitanja blokova od 4KB, učinkovitost je iznosila 25.5 milijuna operacija čitanja u sekundi i 4.9 milijuna pri zapisivanju. Uključivanje enkripcije smanjilo je propusnost pri čitanju na otprilike 750 GiB/s. Kada su korišteni kodovi za ispravak pogrešaka EC62, propusnost je iznosila 547 GiB/s pri čitanju i 387 GiB/s pri zapisivanju (brzina zapisivanja bila je veća nego bez kodova ispravka), dok je tijekom slučajnog pristupa bila 3.4M IOPS pri čitanju i 936K IOPS pri zapisivanju.

Iskustvo stvaranja Ceph pohrane s propusnošću od tebibajta u sekundi
Iskustvo stvaranja Ceph pohrane s propusnošću od tebibajta u sekundi

Dodatno se može napomenuti da su u rujnu slični pragovi propusnosti u tebibajtima po sekundi postignuti u eksabajt klasteru pohrane CERN-a, koji je implementiran na bazi otvorenog distribuiranog spremišta EOS, izgrađenog na temelju protokola XRootD.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster