A mérnök a Clyso cégtől összegzett tapasztalatokat a Ceph alapú, hibatűrő elosztott tárolórendszer klaszterének létrehozásáról, amelynek sebessége meghaladja a tebibájtot másodpercenként. Megjegyzik, hogy ez az első Ceph alapú klaszter, amely elérte ezt az eredményt, de a bemutatott eredmény elérése előtt a mérnököknek számos nem nyilvánvaló nehézséget kellett leküzdeniük.
Például a teljesítmény 10-20%-os növeléséhez elegendő volt a BIOS energiatakarékos beállításaiban a maximális teljesítmény üzemmód aktiválása és a c-state letiltása (a c-state a terheléstől függően módosítja az energiatakarékos beállításokat, ami hatással van a Ceph-re). Azt is felfedezték, hogy NVMe tárolók használata esetén a Linux kernel jelentős időt tölt spin-lockok feldolgozásával az IOMMU térképezésének frissítése közben. Az IOMMU letiltása a kernelben érzékelhetően növelte a blokkok 4MB írási és olvasási tesztjeinek teljesítményét.
Ugyanakkor az IOMMU letiltása nem oldotta meg a teljesítményesést a 4KB méretű blokkok véletlenszerű írása során. Miközben a problémát próbálták kideríteni, a mérnökök felfedeztek javításokat a Ceph build szcenáriói között Gentoo és Ubuntu projektektől, amelyek a RelWithDebInfo opcióval való buildet tartalmaztak, mivel ezzel a GCC '-O2' optimalizálási módot alkalmazott, ami jelentősen növelte a Ceph teljesítményét. A TCMalloc könyvtárral történő fordítás szintén a teljesítmény csökkenéséhez vezetett. A fordítási flagok megváltozása és a TCMalloc használatának leállítása a tömörítési idő háromszoros csökkentéséhez és a 4K blokkok véletlenszerű írásának teljesítményének megduplázódásához vezetett. A végén további optimalizálás történt a Reef RocksDB beállításaiban és a elhelyezési csoportok (PG) kezelésében.
A klaszter 68 csomópontból áll szerverek Dell PowerEdge R6615 alapokon, AMD EPYC 9454P 48C/96T CPU-val. Minden csomópont 10 NVMe Dell 15.36TB tárolót, két 100GbE Mellanox ConnectX-6 Ethernet adaptert és 192 GB RAM-ot tartalmaz. A szoftver Ubuntu 20.04.6 és Ceph 17.2.7 alapú. A klaszter 63 csomópontján 630 OSD (Object Storage Daemon, a helyi tárolóban az adatok kezeléséért felelős háttérfolyamat, egy OSD NVMe tárolónként), három MON (monitor, amely nyomon követi a klaszter állapotát) és egy MGR (Manager, a kezelő szolgáltatás) fut. A tároló mérete 8.2 PB.
A folyamati olvasási teljesítmény 4 Mb-os blokkok esetén 1025 GiB/s, írási teljesítmény pedig 270 GiB/s volt. A véletlenszerű 4 KB-os olvasási teljesítmény 25,5 millió olvasási művelet másodpercenként és 4,9 millió írási művelet másodpercenként mutatkozott. A titkosítás bekapcsolása a folyamati olvasási teljesítményt körülbelül 750 GiB/s-ra csökkentette. Hibajavító kódok (EC62) alkalmazásával az olvasási teljesítmény 547 GiB/s, az írási teljesítmény pedig 387 GiB/s lett (az írási sebesség magasabb volt, mint kódok nélkül), míg véletlenszerű hozzáférés esetén 3,4M IOPS olvasás és 936K IOPS írás mértünk.


További érdekesség, hogy szeptemberben hasonló sebességkorlátot, tebibájtMásodpercenkénti sebességet, értek el a CERN exabájt tároló klaszterében, amely az EOS nyílt elosztott tároló alapjain valósult meg, az XRootD protokollra építve.
Forrás: opennet.ru
