[Python-es] Paython trabaja en memoria?

Francesc Alted faltet en gmail.com
Jue Mayo 12 15:56:46 EDT 2016


2016-05-12 18:10 GMT+02:00 Chema Cortes <pych3m4 en gmail.com>:

> El jue., 12 may. 2016 a las 10:51, Javier Sangalo (<jjsangalo en gmail.com>)
> escribió:
>
>> muchas gracias!
>> No tengo ningun problema en particular, tan solo que me hen hecho esa
>> pregunta y no estaba seguro de que responder jeje.
>>
>
> La diferencia entre trabajar con datos en memoria en lugar de en disco
> supone un factor multiplicativo de x200000. Con los nuevos discos SSD
> mejora bastante bajando a unos x10000. Vamos, que es muy recomendable tener
> todos los datos en memoria, aunque sea como matrices dispersas (sparse
> matrices), con el fin de operar más rápido sin pasar por disco. Tanto R
> como numpy tienen técnicas para optimizar el espacio ocupado en memoria.
>

Supongo que estás citando números de latencia.  Aunque la cifra para discos
duros es más o menos correcta, la que das para SSDs está bastante
desfasada.  Actualmente puedes comprar SSDs SATA con latencias de entre 40
y 100 us sin hacer un gran desenbolso.  Teniendo en cuenta que las
latencias típicas de la RAM son de 0.1 us, la diferencia es ('solo') de
entre 500x y 1000x.  Para los discos SSD de PCIe, las latencias son
bastante más bajas, y ya se pueden ver tarjetas a buen precio con latencias
de 2 y 10 us (e incluso de menos de 1 us, como las de
http://www.violin-memory.com/, aunque estas ya son *muy* caras).

Respecto a las diferencias en ancho de banda las cosas van bastante más
ajustadas, y los discos SSD SATA que saturan el bus (~520 MB/s) son muy
habituales, mientras que los SSD PCIe pueden llegar hasta 2 GB/s.  Compara
esto con la RAM que va entre 10 GB/s a 20 GB/s (en ordenadores modernos).
Añade compresión ultra-rápida para mejorar el ancho de banda de I/O y se ve
claro que estamos asistiendo a una verdadera revolución que cambiará (está
cambiando) la manera de guardar y efectuar cálculos con datos.

Hablé justamente de esto en mi charla de PyData Madrid del mes pasado:

https://speakerdeck.com/francescalted/new-computer-trends

Francesc


>
> Pero no siempre es la mejor opción. A veces tu datos vienen como streams
> de datos desde algún servidor web o desde algún nodo de la base de datos.
> En estos casos, los tiempos invertidos en traerte los datos pueden ser
> mucho mayor que el que inviertes escribiendo/leyendo del disco local, con
> lo que puedes usar el disco como almacenamiento secundario para liberar
> RAM. Es en parte lo que hace Hadoop para poder procesar colecciones de
> datos enormes (aunque luego venga Spark y pulverize los tiempos de proceso
> cacheándolo todo en RAM).
>
> Una comparativa tecnológica e histórica de los tiempos de latencia:
>
> https://gist.github.com/jboner/2841832
> http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html
>
>
>
>>
>> El 12 de mayo de 2016, 10:40, Kiko <kikocorreoso en gmail.com> escribió:
>>
>>>
>>> El 12 de mayo de 2016, 10:23, Javier Sangalo <jjsangalo en gmail.com>
>>> escribió:
>>>
>>>> Buenos días,
>>>>
>>>> Me surge una duda, R trabaja en memoria con el inconveniente que tiene
>>>> si no dispones de suficiente memoria ram, pero...y Python? trabaja de la
>>>> misma forma?
>>>>
>>>>
>>> Sí. R, Python y el resto del universo. Tendrás que encargarte de
>>> gestionar la memoria. Hay formas más o menos eficientes de hacerlo. Si
>>> describes un poco mejor tu problema relacionado con Python quizá te puedan
>>> ofrecer mejor ayuda.
>>>
>>>
>>>> Gracias!
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
> --
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
Francesc Alted
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160512/9822dccd/attachment.html>


Más información sobre la lista de distribución Python-es