Foro de debate

Problemas de memoria

Problemas de memoria

de Antonio Hernández Moreno -
Número de respuestas: 5
En respuesta a Antonio Hernández Moreno

Re: Problemas de memoria

de Manuel Muñoz Márquez -
Hola Antonio:

Básicamente puedes encontrarte en una de dos situaciones mutuamente excluyentes:
  1. El ordenador que estás usando no tiene memoria para crear el objeto que necesitas. En esta caso la solución es usar un ordenador con más memoria o trabajar directamente con objetos en disco. Para la segunda opción existen varias alternativas una es ff.
  2. Tienes memoria suficiente pero tu sistema operativo no te deja usarla toda. En este caso puedes usar un sistema operativo que haga mejor gestión de la memoria.
¿Qué sistema operativo usas? ¿Cuánta memoria tiene el ordenador? ¿Cuál es el tamaño del objeto que quieres crear?

Saludos.
En respuesta a Manuel Muñoz Márquez

Re: Problemas de memoria

de Antonio Hernández Moreno -
Trabajo con SO Windows 7 o XP (tengo dos equipos conectados en red). No creo que el problema sea del equipo.
Tiene 4 gb de RAM, a 32 bits el de W7.
Al ser del trabajo no puedo instalar otro SO.

Quiero unir 20 ficheros de 20 mg. Cada uno con 2'5 millones de registros y 10 variables.

Son muestras sobre el censo de población para hacer simulaciones.
Teníamos cosas hechas en SAS pero hemos decidido dar el salto a R.

Miraré como va el paquete ff
En respuesta a Antonio Hernández Moreno

Re: Problemas de memoria

de Manuel Muñoz Márquez -
Hola Antonio:

El problema no es el equipo es el sistema operativo.

Puedes usar la función memory.limit() para saber cuanta memoria tiene disponible R.

Luego carga uno de los ficheros y pregúntale por el tamaño que ocupa con la función object.size.

Tienes que tener en cuenta que para unir datos_a con datos_b durante la operación necesita espacio para datos_a + datos_b + datos_resultantes.

¿En que formato están los datos? Si están en formato texto (o los pasas) los puedes unir usando con cat fichero*.dat >fichero_nuevo.dat

De esta forma cuando los cargues en R sólo necesitas memoria para el fichero resultante.

Saludos.


En respuesta a Manuel Muñoz Márquez

Re: Problemas de memoria

de Antonio Hernández Moreno -
He ejecutado las funciones con los siguientes resultados:

> memory.limit()
[1] 1535
> object.size(Sample100)
119595904 bytes

Los ficheros están en Rdata. Los pasaré a texto a ver si tengo más éxito.

Muchas gracias
En respuesta a Antonio Hernández Moreno

Re: Problemas de memoria

de Manuel Muñoz Márquez -
Hola Antonio:

Es decir, R sólo puede adquirir 1535 Mb (1.5 Gb) de los 4Gb que tiene el ordenador. Más aún la versión de 32 bits de R de windows está limitada a 3Gb.

El tamaño de una muestra es de unos 114Mb, lo que significa que puedes albergar unos 13 objetos de semejante tamaño, teniendo en cuenta que durante las operaciones tienen que existir tres objetos quiere decir que lo máximo a lo que puedes llegar es a 6 + 1 + 7.

Esto significa que tampoco podrás albergar el "fichero" resultante final. Pues necesitarías del orden de 2.28 Gb (114 *20) que supera la memoria que windows está asignando R.

La opción de convertir los ficheros a texto únicamente serviría para fusionar los archivos fuera de R, pero el resultante no podrías cargarlo.

Y es que como te decía de los 4Gb el sistema operativo sólo a R usar 1.5Gb. ¿Para qué quiere windows los 2.5 Gb que faltan?

No sé decirte si hay alguna forma de obligar a windows a que ceda más memoria a R.

Saludos.

P.D.: ¿Qué pasa en otros sistemas? Pues que la función memory.limit ni siquiera existe. R maneja toda, insisto toda, la memoria libre del sistema.