Un ingegnere dell'azienda Clyso ha riassunto l'esperienza nella creazione di un cluster di storage basato su un sistema distribuito ad alta disponibilità Ceph con una larghezza di banda superiore al tebibit al secondo. Si segnala che questo è il primo cluster basato su Ceph in grado di raggiungere un simile risultato, ma per ottenere il risultato presentato, gli ingegneri hanno dovuto superare una serie di ostacoli poco evidenti.
Ad esempio, per aumentare le prestazioni del 10-20%, era sufficiente attivare nei server le impostazioni di risparmio energetico del BIOS in modalità massima prestazione e disattivare il c-state (il c-state modifica i parametri di risparmio energetico in base al carico, il che influisce su Ceph). È emerso anche che, utilizzando unità NVMe, il kernel Linux spende un tempo considerevole nell'elaborazione dei blocchi di spin durante l'aggiornamento della mappatura IOMMU. Disattivare l'IOMMU nel kernel ha portato a un aumento significativo delle prestazioni nei test di scrittura e lettura di blocchi di dimensioni 4MB.
Tuttavia, disattivare l'IOMMU non ha risolto il problema del calo delle prestazioni durante la scrittura casuale di blocchi di dimensioni 4KB. Indagando sul problema, gli ingegneri si sono imbattuti in correzioni nei file di build di Ceph provenienti dai progetti Gentoo e Ubuntu, che includevano la build con l'opzione RelWithDebInfo, poiché ciò attivava in GCC la modalità di ottimizzazione "-O2", che aumentava notevolmente le prestazioni di Ceph. Anche la compilazione con la libreria TCMalloc ha contribuito a ridurre le prestazioni. Modificare i flag di compilazione e interrompere l'uso di TCMalloc ha portato a una riduzione del tempo di compattazione tre volte e a un raddoppio delle prestazioni nelle operazioni di scrittura casuali di blocchi da 4K. Infine, sono state ulteriormente ottimizzate le impostazioni di Reef RocksDB e i gruppi di distribuzione (PG).
Il cluster è composto da 68 nodi basati su server Dell PowerEdge R6615 con CPU AMD EPYC 9454P 48C/96T. Ogni nodo contiene 10 unità NVMe Dell da 15,36 TB, due adattatori Ethernet 100GbE Mellanox ConnectX-6 e 192 GB di RAM. Il software è basato su Ubuntu 20.04.6 e Ceph 17.2.7. Nel cluster di 63 nodi sono stati avviati 630 OSD (Object Storage Daemon, processo in background che gestisce lo storage dei dati nel storage locale, uno per ogni unità NVMe), tre processi MON (monitor, monitora lo stato del cluster) e un processo MGR (Manager, servizio di gestione). La dimensione dello storage è di 8,2 PB.
La larghezza di banda nelle operazioni di lettura sequenziali di blocchi da 4M ha raggiunto 1025 GiB/s, mentre per le scritture è stata di 270 GiB/s. Nella lettura casuale di blocchi da 4KB, la performance ha raggiunto 25,5 milioni di operazioni di lettura al secondo e 4,9 milioni per la scrittura. L'attivazione della crittografia ha ridotto la larghezza di banda in lettura a circa 750 GiB/s. Con l'attivazione dei codici di correzione degli errori EC62, la larghezza di banda è stata di 547 GiB/s in lettura e 387 GiB/s in scrittura (la velocità di scrittura è risultata superiore rispetto a quella senza codici di correzione), mentre in accesso casuale si sono registrati 3,4M IOPS in lettura e 936K IOPS in scrittura.


In aggiunta, si può notare che a settembre un traguardo simile di larghezza di banda in tebibait al secondo è stato raggiunto nel cluster di archiviazione CERN, realizzato con un sistema di archiviazione distribuito open source EOS, basato sul protocollo XRootD.
Fonte: opennet.ru
