Il giorno gio, 19/12/2013 alle 11.14 +0000, enrico franchi ha scritto: > > > > 2013/12/19 Pietro Battiston <m...@pietrobattiston.it>
> [...] > > Io credo che ci possa essere relazione a come e' scritto il codice. OK, ragionevole dubbio. Prendi _questo_ codice: import redis import random r = redis.Redis(db=0) try: while True: r[random.random()] = random.random() except KeyboardInterrupt: r.flushdb() che gira su un vecchio Intel Core2 Duo CPU T7300, a 2 GHz, con 4 GB di RAM DDR2 a 667 MHz. - Cosa mi aspetto: che almeno una delle due CPU sia fissa al 100%. - Cosa vedo se avvio "top": redis-server non è mai sopra al 45%, Python non è mai sopra al 75%. - Cosa succede se invece che TCP-IP utilizzo un socket unix: l'utilizzo di CPU da parte di Python sale (e la performance pure, e parecchio), ma rimanendo comunque sotto l'80%. - Cosa posso immaginare che stia succedendo: che ci sia una latenza tra CPU e cache, o tra una CPU e l'altra CPU, o tra le CPU e la RAM, che "top" non sia affidabile al 100%. - Cosa non riesco nemmeno a immaginare che stia succedendo: probabilmente varie cose, motivo per cui ho scritto in lista. - Cosa me ne frega: pura curiosità, e magari pure un indizio di quanto parallelizzare codice che utilizza in modo intensivo redis possa o meno migliorare le prestazioni in modo lineare, o se viceversa qualunque cosa mi stia facendo da bottleneck adesso si riproporrebbe anche parallelizzando, magari su più di 2 CPU. ciao Pietro _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python