[Python] 21 modi per dire checkpoint: (LOCK, COW & Co) [era: Io lo so che coem...]

enrico franchi enrico.franchi a gmail.com
Lun 23 Mar 2015 16:40:35 CET


2015-03-23 15:18 GMT+00:00 Roberto Polli <robipolli a gmail.com>:

> Il 23 marzo 2015 13:38, enrico franchi <enrico.franchi a gmail.com> ha
> scritto:
> > quindi semplicemente non fa dump non fa nulla e i dati che devono
> persistere
> > finiscono altrove.
> Chiaro. La mia curiosita era di tipo implementativo.
>
> Se non c'è soluzione se non nell'usare prodotti che non facciano il
> dump della ram su disco, possiamo dire che non c'è niente di male nel
> farlo con fork()+COW, giusto?
>
> E' il dump della RAM che è il male, no?


Io non direi che e' "male" o bene. Farlo con fork() e' relativamente
semplice perche' deleghi il lavoro sporco all'OS.
Se il resto di Redis e' fatto in modo da non avere bisogno di MVCC -- visto
che e' tutto monothread --, beh, capisco il dolore di farlo apposta per
fare i dump.

Se hai un sistema che effettivamente supporta parallelismo nei client (e
quindi hai i classici problemi di isolation, blah blah blah) probabilmente
vuoi comunque MVCC o qualcosa di analogo. E immagino che puoi usarlo anche
per fare il dump. Questo a prescindere che sei in RAM.

Se poi sei su disco... in generale copiare i file cosi' come sono da
problemi di stato inconsistente. Quindi ancora una volta o blocchi tutte le
scritture mentre fai il dump, oppure usi qualche tecnica affine ad MVCC o a
quello che usi per gestire i soliti problemi di concorrenza.

In generale, dal punto di vista della pianificazione delle risorse mi viene
piu' facile lavorare con un affare che non ha un caso super-speciale per
quell'operazione. Ovvero se uso postgres, *normalmente* avro' un consumo di
memoria/disco legato al fatto che deve gestire l'isolation e il dump (che a
quel punto per inciso mi serve per cose specifiche, non per la persistenza
o per la sincronizzazione) non cambia troppo (a parte che sara'
un'operazione particolarmente lunga).

Oh, in realta' se uso Redis lo so e considero suddetto dump come parte di
quello che deve reggere la box. Diciamo che non mi piacciono troppo i
grafici con picchi (anche regolari), perche' ho paura che se per qualche
normalissimo motivo mi cresce il consumo di memoria -- che so... improvviso
picco di traffico, vallo a sapere -- *e* mi parte il dump in quel momento
sono a piedi, quindi semplicemente i conti mi si complicano un po'.




-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150323/b45bfcca/attachment.html>


Maggiori informazioni sulla lista Python