[Python] Python, redis e bottleneck
Pietro Battiston
me a pietrobattiston.it
Gio 19 Dic 2013 01:05:05 CET
Il giorno mer, 18/12/2013 alle 16.53 +0000, enrico franchi ha scritto:
>
>
>
> 2013/12/18 Pietro Battiston <me a pietrobattiston.it>
>
>
> OK, allora preciso: sono (ragionevolmente) certo che il
> bottleneck non
> sia il disco, neanche per motivi di latenza, non solo perché
> il LED del
> disco si illumina sporadicamente, ma soprattutto perché
> l'operazione di
> decodifica dello stesso identico json _senza_ popolarne il
> database
> redis - e quindi _più_ disk intensive - utilizza la CPU al
> 100%, come mi
> aspetterei. Quindi mi verrebbe da dire che l'eventuale
> problema di
> latenza è legato unicamente all'utilizzo di Redis.
>
>
> 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,
- durante la prima iterazione, fatta partire dopo un "/sbin/sysctl
vm.drop_caches=3", l'utilizzo del disco è sempre sotto il 15%
(d'accordo, questo non mi dice nulla sulla latenza),
- durante le successive iterazioni, come prevedibile, il disco non viene
_affatto_ utilizzato, dato che il json è nella cache di sistema - eppure
il fenomeno che mi ha spinto a chiedere aiuto in lista rimane tale e
quale,
- 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%.
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%.
Comunque pazienza eh, era solo una curiosità, capisco che non hai il
sistema sotto mano, né la sfera di cristallo.
ciao
Pietro
Maggiori informazioni sulla lista
Python