• Non ci sono risultati.

Configurazione di un livello di cache

10 Suddivisione in livelli di cache

10.6 Configurazione di un esempio di spazio di memorizzazione suddiviso in livelli

10.6.1 Configurazione di un livello di cache

Per configurare i livelli di cache sono disponibili diverse opzioni. Utilizzare la seguente sintassi:

cephadm > sudo ceph osd pool set cachepool key value

128 Configurazione di un livello di cache SES 5

10.6.1.1 Dimensioni e tipo di destinazione

Nei passaggi seguenti è illustrato come configurare un pool di cache con i valori forniti nella Sezione 10.5.2.2, «Pool di cache piccolo e memoria di grandi dimensioni»

Nei livelli di cache di produzione Ceph viene utilizzato un filtro di Bloom per hit_set_type:

cephadm > sudo ceph osd pool set cachepool hit_set_type bloom

Con hit_set_count e hit_set_period si definiscono la durata di copertura di ciascun set di accesso e quanti di questi memorizzare.

cephadm > sudo ceph osd pool set cachepool hit_set_count 12 cephadm > sudo ceph osd pool set cachepool hit_set_period 14400

cephadm > sudo ceph osd pool set cachepool target_max_bytes 1000000000000

Nota

Un numero di hit_set_count più grande comporta un maggior consumo di RAM da parte del processo ceph-osd.

Con min_read_recency_for_promote si definisce il numero set di accessi in cui verificare l'e-sistenza di un oggetto durante un'operazione di lettura. Il risultato della verifica viene utilizzato per decidere se promuovere l'oggetto in modo asincrono. Il rispettivo valore deve essere com-preso tra 0 e hit_set_count. Se impostato a 0, l'oggetto viene promosso sempre. Se impostato 1, viene verificato l'attuale set di accessi. Inoltre, se tale oggetto rientra nel set di accessi vie-ne promosso. In caso contrario, ciò non avvievie-ne. Per gli altri valori, vievie-ne verificato il numero esatto di set di accessi all'archivio. L'oggetto viene promosso se viene trovato in uno dei set di accessi min_read_recency_for_promote più recenti.

È possibile impostare un parametro simile, min_write_recency_for_promote, per l'operazio-ne di scrittura:

cephadm > sudo ceph osd pool set cachepool min_read_recency_for_promote 2 cephadm > sudo ceph osd pool set cachepool min_write_recency_for_promote 2

129 Configurazione di un livello di cache SES 5

Nota

Più lungo è il periodo, più elevati sono i valori di min_read_recency_for_promote e min_write_recency_for_promote e maggior quantità di RAM viene utilizzata dal daemon ceph-osd. In particolare, quando l'agente è attivo per svuotare o rimuovere oggetti dalla cache, tutti i set di accessi hit_set_count vengono caricati nella RAM.

10.6.1.2 Ridimensionamento della cache

L'agente di suddivisione in livelli di cache svolge due funzioni principali:

Svuotamento

L'agente identifica gli oggetti modificati e li inoltra al pool di memorizzazione per l'archi-viazione a lungo termine.

Rimozione

L'agente identifica gli oggetti non modificati e rimuove dalla cache quelli utilizzati più di recente.

10.6.1.2.1 Ridimensionamento assoluto

L'agente di suddivisione in livelli di cache è in grado di svuotare o rimuovere oggetti in base al numero totale di byte o al numero totale di oggetti. Per specificare un numero massimo di byte, eseguire quanto riportato di seguito:

cephadm > sudo ceph osd pool set cachepool target_max_bytes num_of_bytes

Per specificare un numero massimo di oggetti, eseguire quanto riportato di seguito:

cephadm > sudo ceph osd pool set cachepool target_max_objects num_of_objects

Nota

Ceph non è in grado di determinare automaticamente le dimensioni di un pool di cache, pertanto qui è richiesta la configurazione sulle dimensioni assolute. In caso contrario, lo svuotamento e la rimozione risulteranno impossibili. Se si specificano entrambi i limiti, l'agente di suddivisione in livelli di cache inizierà il processo di svuotamento o di rimo-zione quando viene attivata una delle due soglie.

130 Configurazione di un livello di cache SES 5

Nota

Tutte le richieste del client verranno bloccate solo quando si raggiungono i valori indicati in target_max_bytes o target_max_objects.

10.6.1.2.2 Ridimensionamento relativo

L'agente di suddivisione in livelli di cache è in grado di svuotare o rimuovere oggetti relativi alle dimensioni del pool di cache (specificate da target_max_bytes o target_max_objects in Sezione 10.6.1.2.1, «Ridimensionamento assoluto»). Quando il pool di cache è costituito da una determinata percentuale di oggetti modificati, l'agente di suddivisione in livelli di cache li svuo-terà nel pool di memorizzazione. Per impostare cache_target_dirty_ratio, eseguire quanto riportato di seguito:

cephadm > sudo ceph osd pool set cachepool cache_target_dirty_ratio 0.0...1.0

Ad esempio, se si imposta il valore a 0.4 avrà inizio lo svuotamento degli oggetti modificati quando questi raggiungono il 40% di capacità del pool di cache:

cephadm > sudo ceph osd pool set hot-storage cache_target_dirty_ratio 0.4

Quando gli oggetti modificati raggiungono una determinata percentuale di capacità, svuotarli a una velocità più elevata. Utilizzare cache_target_dirty_high_ratio:

cephadm > sudo ceph osd pool set cachepool cache_target_dirty_high_ratio 0.0..1.0

Quando il pool di cache raggiunge una determinata percentuale della rispettiva capacità, l'agente di suddivisione in livelli di cache rimuoverà gli oggetti per mantenere libera la capacità. Per impostare cache_target_full_ratio, eseguire quanto riportato di seguito:

cephadm > sudo ceph osd pool set cachepool cache_target_full_ratio 0.0..1.0

10.6.1.3 Età della cache

È possibile specificare l'età minima di un oggetto modificato di recente prima che l'agente di suddivisione in livelli di cache lo svuoti nel pool di memorizzazione di supporto:

cephadm > sudo ceph osd pool set cachepool cache_min_flush_age num_of_seconds

131 Configurazione di un livello di cache SES 5

È possibile specificare l'età minima di un oggetto prima che questo venga rimosso dal livello di cache:

cephadm > sudo ceph osd pool set cachepool cache_min_evict_age num_of_seconds

10.6.1.4 Utilizzo di GMT per il set di accessi

Nelle configurazioni dei livelli di cache è presente un filtro di Bloom denominato set di accessi.

Mediante tale filtro è possibile verificare l'appartenenza di un oggetto a un set di oggetti a caldo o a freddo. Gli oggetti vengono aggiunti al set di accessi aggiungendo le registrazioni dell'orario ai rispettivi nomi.

Se i computer del cluster vengono posizionati in fusi orari diversi e le registrazioni dell'orario derivano dall'ora locale, è possibile che gli oggetti in un set di accessi presentino nomi fuorvianti costituiti da registrazioni dell'orario future o passate. Nel caso peggiore, è possibile che gli og-getti non siano affatto presenti nel set di accessi.

Per impedire che ciò si verifichi, in una configurazione del livello di cache appena creata use_gmt_hitset è impostato per default a "1". In questo modo si forzano gli OSD a utilizzare le registrazioni dell'orario GMT (Greenwich Mean Time) quando si creano i nomi oggetto per il set di accessi.