Erfahrungen mit der Erstellung eines Ceph-Speichers mit einer Bandbreite von Tebibyte pro Sekunde.

Ein Ingenieur von Clyso fasste die Erfahrungen bei der Erstellung eines Speicherkclusters auf der Grundlage des ausfallsicheren verteilten Systems Ceph zusammen, dessen Durchsatz einen Terabyte pro Sekunde ĂŒbersteigt. Es wird angemerkt, dass dies der erste Ceph-Cluster ist, der einen solchen Wert erreichen konnte, aber um das prĂ€sentierte Ergebnis zu erzielen, mussten die Ingenieure eine Reihe von nicht offensichtlichen HĂŒrden ĂŒberwinden.

Um die Leistung um 10-20% zu steigern, genĂŒgte es beispielsweise, auf den Servern im BIOS die Energieeinspannungen nur im Modus maximale Leistung zu aktivieren und c-state zu deaktivieren (c-state passt die Energiespareinstellungen je nach Last an, was sich auf Ceph auswirkt). Außerdem stellte sich heraus, dass der Linux-Kernel bei der Nutzung von NVMe-Laufwerken erheblich Zeit mit der Verarbeitung von Spin-Locks wĂ€hrend der Aktualisierung der IOMMU-Zuordnung verbringt. Die Deaktivierung der IOMMU im Kernel fĂŒhrte zu einem merklichen Anstieg der Leistung in Tests zum Schreiben und Lesen von Blöcken mit einer GrĂ¶ĂŸe von 4MB.

Die Deaktivierung der IOMMU löste jedoch nicht das Problem mit der Leistungseinbuße bei zufĂ€lligen SchreibvorgĂ€ngen von Blöcken mit einer GrĂ¶ĂŸe von 4KB. Bei der Untersuchung des Problems stießen die Ingenieure auf Korrekturen in den Build-Skripten von Ceph aus den Projekten Gentoo und Ubuntu, die den Build mit der Option RelWithDebInfo beinhalteten, da hierbei in GCC der Optimierungsmodus „-O2“ verwendet wurde, wodurch die Leistung von Ceph deutlich gesteigert wurde. Eine weitere Verringerung der Leistung fĂŒhrte die Kompilierung mit der TCMalloc-Bibliothek herbei. Die Änderung der Kompilierungsflags und die Einstellung der Nutzung von TCMalloc reduzierten die Zeit fĂŒr die Kompaktierung um das Dreifache und verdoppelten die Leistung zufĂ€lliger Schreiboperationen mit 4K-Blöcken. Abschließend wurden zusĂ€tzlich die Einstellungen von Reef RocksDB und die Placement Groups (PG) optimiert.

Der Cluster besteht aus 68 Knoten auf der Basis von Server Dell PowerEdge R6615 mit CPU AMD EPYC 9454P 48C/96T. Jeder Knoten enthĂ€lt 10 NVMe-Laufwerke Dell 15.36TB, zwei Ethernet-Adapter 100GbE Mellanox ConnectX-6 und 192 GB RAM. Die Software basiert auf Ubuntu 20.04.6 und Ceph 17.2.7. Im Cluster mit 63 Knoten sind 630 OSD (Object Storage Daemon, Hintergrundprozess zur Verwaltung des Datenstorage im lokalen Speicher, einer pro NVMe-Laufwerk), drei MON Prozesse (Überwachung des Clusterstatus) und ein MGR Prozess (Manager, verwaltender Dienst) aktiv. Die SpeicherkapazitĂ€t betrĂ€gt 8,2 PB.

Die Bandbreite bei sequenziellen LesevorgĂ€ngen von 4 MB betrug 1025 GiB/s, beim Schreiben 270 GiB/s. Beim zufĂ€lligen Lesen von 4 KB Blöcken betrug die Leistung 25,5 Millionen LesevorgĂ€nge pro Sekunde und 4,9 Millionen beim Schreiben. Die Aktivierung der VerschlĂŒsselung reduzierte die Bandbreite beim Lesen auf etwa 750 GiB/s. Mit dem Einsatz von EC62 Fehlerkorrekturcodes betrug die Bandbreite 547 GiB/s beim Lesen und 387 GiB/s beim Schreiben (die Schreibrate war höher als ohne Fehlerkorrekturcodes), wĂ€hrend beim zufĂ€lligen Zugriff 3,4M IOPS beim Lesen und 936K IOPS beim Schreiben erreicht wurden.

Erfahrungen mit der Erstellung eines Ceph-Speichers mit einer Bandbreite von Tebibyte pro Sekunde.
Erfahrungen mit der Erstellung eines Ceph-Speichers mit einer Bandbreite von Tebibyte pro Sekunde.

ZusÀtzlich ist zu erwÀhnen, dass im September ein Àhnlicher Bandbreitenwert in Tebibyte pro Sekunde im Exabyte-Storage-Cluster des CERN erreicht wurde, der auf dem offenen verteilten Speicher EOS basiert, der auf dem Protokoll XRootD aufgebaut ist.

Quelle: opennet.ru

60GB SSD 8Gb DDR4