[Python] Python, redis e bottleneck

enrico franchi enrico.franchi a gmail.com
Gio 19 Dic 2013 12:14:02 CET


2013/12/19 Pietro Battiston <me a pietrobattiston.it>

>
> > Si, ma non guardare le lucine… usa dtrace/kprobes/systemtap, quello
> > che va di moda ora sul tuo os.
>
>
> Mi dirai tu se posso considerarmi abbastanza à la page, ma prima di
> chiedere un consiglio in lista ho ovviamente fatto vari controlli con
> iotop - ad esempio verificando che, nel parsing di 150 MB di json,
>

Insisto, secondo me uno strumento più potente come dtrace potrebbe aiutarti,
perche' ti da una visione unificata su quello che sta succedendo. Puoi
prendere
il tuo processo e sondare "insieme" cosa sta succedendo, con estrema
precisione.

Non e' particolarmente semplice… io mi ci perdo sempre in mezzo (e poi ora
ho solo macchine pingiate, salvo il laptop, su cui non sviluppo).

- la prima iterazione _è_ effettivamente più lenta, ma la differenza è
> inferiore al 5%, mentre quello che sto cercando di identificare è una
> perdita di efficienza del 30%.
>

Che disco hai?


> Ciò detto, non avevo neanche menzionato questi test perché - ribadisco -
> se il bottleneck fosse il disco - per latenza o per banda - si vedrebbe
> _a maggior ragione_ nell'operazione di puro parsing del json _senza_
> caricamento in redis. Invece in quel caso la CPU sta fissa sopra il 99%.
>

Io credo che ci possa essere relazione a come e' scritto il codice.
Noi abbiamo avuto problemi, per esempio, su una cosa simile.
Lettura di un grosso file, che finiva in pancia a pandas, *con* il parsing
delle date abilitato.
Il tutto abbastanza sequenziale, e la cosa non e' che andasse bene.
Poi abbiamo tirato un po' di martellate a tutto e abbiamo risolto, ma
abbiamo appunto disabilitato il parsing delle date (che non serviva ed era
un carico troppo alto) *e* parallelizzando la lettura e la scrittura su
più' processi. Ma il problema era diverso, noi si avevano più' files e
venivano da rete.

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


Maggiori informazioni sulla lista Python