2016-07-17 96 views
5

Ecco la mia domanda per voi: in che modo "mem_fragmentation_rateo" influisce sulla performance in Redis?Redis: in che modo "mem_fragmentation_ratio" influisce sulla performance?

Ho effettuato alcune indagini su StackOverflow e Redis.io, ma non sono riuscito a trovare una spiegazione chiara sulla mia domanda.

Come spiegato anche in questo eBook https://www.datadoghq.com/wp-content/uploads/2013/09/Understanding-the-Top-5-Redis-Performance-Metrics.pdf a pag # 16, "La metrica mem_fragmentation_ratio fornisce il rapporto di memoria utilizzata come visto dal sistema operativo (used_memory_rss) alla memoria allocata da Redis (used_memory)."

Quindi, come spiegato in http://redis.io/commands/INFO, "idealmente, il valore used_memory_rss dovrebbe essere solo leggermente superiore used_memory. Quando rss >> utilizzato, una grande differenza significa che v'è la frammentazione di memoria (interna o esterna), che può essere valutata controllando mem_fragmentation_ratio. Quando usato >> rss, significa che parte della memoria di Redis è stata sostituita dal sistema operativo: si aspettano delle latenze significative ".

Quindi, quando abbiamo "used_memory" maggiore di "used_memory_rss", l'impatto negativo sul nodo Redis è chiaro, perché significa che Redis ha iniziato a utilizzare Swap, e questo non è chiaramente positivo per le prestazioni.

Ma, che dire di una situazione in cui abbiamo un "used_memory_rss" più alto di "used_memory"? Ciò dovrebbe probabilmente significare che il nostro allocatore di memoria non ha "ripreso" parte della memoria assegnata a Redis in passato, e che Redis non sta più usando (forse a causa di un picco temporaneo). Tuttavia, non riesco a capire come questo possa avere un impatto negativo sulle prestazioni di Redis. Perché sto leggendo molti post su internet in cui le persone sono così preoccupate per un alto "mem_fragmentation_ratio"? Anche nell'eBook che ho menzionato prima, suggeriscono di avere un "mem_fragmentation_rateo" tra 1 e 1.5.

In questa situazione, quando abbiamo un "used_memory_rss" superiore, Redis è davvero interessato? Dovremmo aspettarci un degrado delle prestazioni di Redis con un alto "mem_fragmentation_ratio"?

Ho deciso di farti questa domanda perché onestamente penso che, con un alto "mem_fragmentation_ratio", possiamo avere un problema "solo" nel sistema operativo, che "possa" soffrire di una carenza di memoria: il sistema operativo può allocare nuova memoria a nuovi processi. In ogni caso, non dovrebbe influire direttamente su Redis (a meno che il SO non cominci a rallentare, ecc.).

Potete chiarire i miei dubbi? Hai avuto esperienze in cui hai sperimentato un alto "mem_fragmentation_ratio" e hai iniziato a notare un degrado delle prestazioni di Redis?

Grazie

risposta

0

io non sono un guru Redis, ma dalla mia esperienza e la documentazione che ho letto, fragmentation_ratio non influenza direttamente le prestazioni. Ma aumenta il consumo di memoria. Quando la tua applicazione aggiunge nuovi dati e quei dati non riempiono i frammenti in memoria (quando i mazzi di nuovi dati sono più grandi di quei frammenti), quella memoria rimane libera. E così puoi esaurire la memoria più velocemente di quanto ti aspetti.

Problemi correlati