
Come si comporta il tiering della cache Ceph?
Introduzione:
In questo post, condividiamo un test di benchmark per dimostrare come il tiering della cache Ceph possa migliorare le prestazioni di un pool HDD impostando un livello di cache supportato da un pool NVMe.
Che cos'è Ceph Cache Tier e come funziona
Il livello di cache Ceph consente di utilizzare dispositivi di archiviazione più veloci come cache per quelli più lenti. Questo comporta la creazione di un pool di dispositivi di archiviazione veloci/costosi (come gli SSD NVMe) configurati per fungere da livello di cache, e un pool di supporto più lento/economico di dispositivi codificati per cancellazione o più lenti (come gli HDD) configurati per fungere da livello di archiviazione economico. Il livello di cache memorizza i dati frequentemente accessibili dal livello di supporto e gestisce le richieste di lettura e scrittura dai client. L'agente di tiering della cache svuota o espelle periodicamente gli oggetti dal livello di cache in base a determinate politiche.
Demo di Ceph Cache Tier
In passato, quando si utilizzava l'SSD SATA come dispositivo di archiviazione per il livello di cache, il miglioramento delle prestazioni derivante dall'uso del livellamento della cache era insignificante. Oggigiorno, il costo degli SSD NVMe è notevolmente diminuito rispetto a diversi anni fa, e le prestazioni degli SSD NVMe sono di gran lunga più veloci rispetto agli HDD. Vogliamo sapere se l'uso dell'SSD NVMe come livello di cache può aiutare notevolmente un pool di HDD.
Per testare l'efficacia del livello di cache NVMe, abbiamo impostato un test per vedere se il livello di cache migliorava le prestazioni di un pool di archiviazione basato su HDD.
Configurazione del Cluster
Host NVME | 3 x Ambedded Mars500 Ceph Appliances |
Specifiche di ciascun apparecchio Mars 500 | |
CPU | 1x Ampere Altra Arm 64-Core 3.0 Ghz |
Memoria | 96 GiB DDR4 |
Rete | 2 porte 25Gbps Mellanox ConnectX-6 |
Unità OSD | 8 x Micron 7400 960GB |
Host HDD | 3 x Ambedded Mars400 Ceph Appliances |
Specifiche di ciascun apparecchio Mars 400 | |
CPU | 8 nodi Quad-Core Arm64 1.2 GHz |
Memoria | 4GiB per nodo. 32 GiB per apparecchio |
Rete | 2 x 2.5Gbps per nodo. 2x 10 Gb uplink tramite switch in chassis. |
Unità OSD | 8 x 6 TB Seagate Exos HDD |
Informazioni sul Cluster Ceph
- 24 x OSD su NVMe SSD (3x Ambedded apparecchi Mars500)
- 24x OSD su HDD (3x Ambedded apparecchi Mars400)
- I server HDD e NVMe si trovano in radici CRUSH separate.
Client di Test
- 2 x server fisici. 2x scheda di rete 25Gb
- Ogni server esegue 7x VM.
- Ogni VM ha 4x core e 8 GB di memoria
Configura il livello di cache tramite il gestore Ambedded UVS
1. Crea un pool di base utilizzando l'HDD osd.
2. Crea un pool NVMe utilizzando l'SSD NVMe osd.
3. Aggiungi il pool NVMe come livello di cache del pool HDD.
le configurazioni predefinite del livello di cache:
- Modalità cache: writeback
- hit_set_count = 12
- hit_set_period = 14400 sec (4 ore)
- target_max_byte = 2 TiB
- target_max_objects = 1 milione
- min_read_recency_for_promote & min_write_recency_for_promote = 2
- cache_target_dirty_ratio = 0.4
- cache_target_dirty_high_ratio = 0.6
- cache_target_full_ratio = 0.8
- cache_min_flush_age = 600 sec.
- cache_min_evict_age = 1800 sec.
Abbiamo testato il pool HDD prima e dopo aver aggiunto il livello di cache, utilizzando fino a 14 client per generare carichi di test. Ogni cliente ha montato un RBD per il test fio. Il carico di test è iniziato con un cliente e ha aumentato il numero di clienti dopo il completamento di ogni lavoro di test. Ogni ciclo di test durava cinque minuti ed era controllato automaticamente da Jenkins. Le prestazioni di un lavoro di test erano la somma di tutti i risultati dei clienti. Prima di testare il tiering della cache, abbiamo scritto dati negli RBD fino a quando il pool della cache tier non è stato riempito oltre il rapporto di piena del target della cache ceph (0,8).
I diagrammi hanno mostrato che le prestazioni del pool HDD puro sono state significativamente migliorate dopo aver aggiunto un pool di cache NVMe.
Durante il test di livello cache, abbiamo osservato le statistiche del pool usando il comando CEPH OSD Pool Statists. La cache e le piscine di base avevano le attività di lavaggio, sfratto e promozione. Abbiamo catturato le statistiche del pool in momenti diversi durante il test di livello cache.
I dati sono stati scritti nella cache
id cache pool 84
client io 21 MiB/s scrittura, 0 op/s lettura, 5.49k op/s scrittura
id pool mars400_rbd 86
non sta succedendo nulla
La cache stava eseguendo promote ed evict
cache pool id 84
client io 42 MiB/s wr, 0 op/s rd, 10.79k op/s wr
livello cache io 179 MiB/s evict, 17 op/s promote
pool mars400_rbd id 86
client io 0 B/s rd, 1.4 MiB/s wr, 18 op/s rd, 358 op/s wr
La cache è in fase di svuotamento
id cache pool 84
client io 3.2 GiB/s rd, 830 op/s rd, 0 op/s wr
io tier cache 238 MiB/s svuotamento, 14 op/s promuovi, 1 PGs in svuotamento
id pool mars400_rbd 86
client io 126 MiB/s rd, 232 MiB/s wr, 44 op/s rd, 57 op/s wr
PG stava espellendo
id cache pool 84
io client 2.6 GiB/s rd, 0 B/s wr, 663 op/s rd, 0 op/s wr
io tier cache 340 MiB/s flush, 2.7 MiB/s evict, 21 op/s promote, 1 PGs espellendo (pieno)
id pool mars400_rbd 86
io client 768 MiB/s rd, 344 MiB/s wr, 212 op/s rd, 86 op/s wr
Flushing PG e IO client diretto al pool di base.(i client stavano scrivendo dati)
id cache pool 84
io client 0 B/s scrittura, 0 op/s lettura, 1 op/s scrittura
io livello cache 515 MiB/s svuotamento, 7.7 MiB/s espulsione, 1 PGs svuotamento
id pool mars400_rbd 86
io client 613 MiB/s scrittura, 0 op/s lettura, 153 op/s scrittura
Dopo il test continuo, abbiamo fatto riposare il cluster per ore e abbiamo ripetuto il test di scrittura casuale da 4 kB. Abbiamo ottenuto prestazioni molto migliori. Questo è stato possibile perché lo spazio della cache è stato liberato per la nuova scrittura.
Da questo test, siamo certi che utilizzare il pool NVMe come livello di cache di un pool HDD può portare a un significativo miglioramento delle prestazioni.
Va notato che le prestazioni del livellamento della cache non possono essere garantite. Le prestazioni dipendono dalla condizione di hit della cache in quel momento, e le stesse prestazioni non possono essere ottenute ripetendo i test con la stessa configurazione e carichi di lavoro.
Se la tua applicazione ha bisogno di prestazioni costanti, utilizza un pool SSD NMMe puro.
- Prodotti correlati
Mars500 NVME Tutto Flash Ceph Storage Appliance
Mars 500
L'apparecchio Mars 500 Ceph è progettato per soddisfare le esigenze di archiviazione dati ad alte prestazioni per il cloud. Utilizza l'ultima tecnologia...
ParticolariApparecchiatura di archiviazione Ceph Mars 400PRO
Mars 400PRO
Mars 400 Ceph Appliance è progettato per soddisfare le esigenze di archiviazione dati native del cloud ad alta capacità. Utilizza HDD per beneficiare...
Particolari