Инженер от компания Clyso обобщи опита за създаване на кластер за съхранение, базиран на отказоустойчива разпределена система Ceph с пропускна способност, надвишаваща тебибайт в секунда. Отбелязва се, че това е първият кластер, базиран на Ceph, който е успял да постигне подобен показател, но преди получаването на представения резултат, инженерите е трябвало да преодолеят серия от неочевидни подводни камъни.
Например, за повишаване на производителността с 10-20% е било достатъчно да се включи на сървърите в настройките за енергийна ефективност на BIOS работа само в режим на максимална производителност и да се изключи c-state (c-state променя параметрите за енергийна ефективност в зависимост от натоварването, което се отразява на Ceph). Също така се оказа, че при използване на NVMe устройства, ядрото на Linux значително време прекарва в обработка на spin-локове по време на актуализиране на мапинга IOMMU. Изключването на IOMMU в ядро доведе до забележимо увеличение на производителността в тестовете за запис и четене на блокове с размер 4MB.
Въпреки това, изключването на IOMMU не реши проблема с падането на производителността при случайно записване на блокове с размер 4KB. Разбирайки в какво е проблемът, инженерите се натъкнаха на поправки в сборъчните сценарии на Ceph от проектите Gentoo и Ubuntu, които включваха компилация с опция RelWithDebInfo, тъй като с нея в GCC се прилага оптимизационен режим "-O2", при който производителността на Ceph се увеличава значително. Снижаването на производителността също беше предизвикано от компилация с библиотеката TCMalloc. Промяната на флаговете за компилация и прекратяването на използването на TCMalloc доведе до трикратно намаляване на времето за опаковане (compaction) и удвояване на производителността при случайни записи с 4K блокове. В заключение, допълнително бяха оптимизирани настройките на Reef RocksDB и групите за разположение (PG).
Кластерът е съставен от 68 узла на базата на сървъри Dell PowerEdge R6615 с CPU AMD EPYC 9454P 48C/96T. Всеки узел съдържа 10 NVMe-накопителя Dell 15.36TB, два Ethernet адаптера 100GbE Mellanox ConnectX-6 и 192GB ОЗУ. Програмното осигуряване е на базата на Ubuntu 20.04.6 и Ceph 17.2.7. В кластера на 63 узла са инсталирани 630 OSD (Оbject Storage Daemon, фонов процесс, управляващ съхранението на данни в локалното хранилище, по един OSD на NVMe-накопител), три процеса MON (monitor, проследява състоянието на кластера) и един процес MGR (Manager, управляващ сервиз). Размерът на хранилището е 8.2 ПБ.
Пропускната способност при последователни операции за четене на блокове от 4М беше 1025 GiB/s за четене и 270 GiB/s за запис. При случайно четене на блокове от 4KB производителността беше 25.5 милиона операции за четене в секунда и 4.9 милиона при запис. Включването на криптиране намали пропускната способност при четене до около 750 GiB/s. При използване на кодове за корекция на грешки EC62, пропускната способност беше 547 GiB/s за четене и 387 GiB/s за запис (скоростта на запис се оказа по-висока от без кодовете за корекция), а при случайно достъпване 3.4M IOPS за четене и 936K IOPS за запис.


Допълнително може да се отбележи, че през септември подобен праг на пропускна способност в тебибайта в секунда беше достигнат в ексабайтовия кластер за съхранение на CERN, реализиран на базата на отвореното разпределено хранилище EOS, построено на базата на протокола XRootD.
Източник: opennet.ru
