¡Necesito ayuda! No puedo resolver el problema, me encuentro con limitaciones de hardware - página 3

 

Lo siento tontos, ¿hay una limitación en x64? aquí está el primer artículo que me encontré (bueno, no el primero, ok) limitación de RAM para SQL SERVER 2008 en el sistema x64 - tanto RAM como la base come.

Tal vez deberías probarlo.

ps tal vez útil Eliminar el límite de memoria de 4 GB en Windows 8 / 8.1 de 32 bits

 
komposter:

Hay una gran cantidad de información (unos 20 GB en un archivo de texto ).

Entonces, ¿por qué texto? ¿No sería más fácil empezar por convertir los datos en forma binaria? Entonces se podría obtener un tamaño adecuado:

Es frustrante la cantidad de información que hay... Si fueran 10 GiG, lo pasaría a disco RAM (de hecho, a la memoria) y leería todo lo que pudiera.

 
meat:

Entonces, ¿por qué texto? ¿No sería más fácil empezar por convertir los datos a binario? Entonces verás si el tamaño es el adecuado:

Así que parece que 20 gigabytes no es el límite.
 

Actualiza a la versión de 64 bits - hasta 16TB de RAM estará disponible.

Almacena el archivo en forma binaria para una lectura más rápida.

Procesar el archivo en trozos según el tamaño de la RAM.

Intente preprocesar los datos para eliminar la información duplicada.

 
komposter:

Hay una gran cantidad de información (unos 20 GB en un archivo de texto).

...

Y si fuera necesario pasar por estas secuencias una vez, lo haría. Pero hay que pasar por ellos repetidamente, avanzando un poco cada vez.

...

¿Y si los procesas en trozos?

Lee dos trozos, que sean de 1Gb cada uno. Se procesa el primer trozo y en la siguiente pasada se añade del segundo trozo "...desplazándose un poco hacia delante". Al mismo tiempo corta el comienzo del primer trozo (ya no es necesario porque siempre es "...desplazándose un poco hacia adelante". Cuando el segundo trozo termina de leer el tercer trozo - y ahora añade del tercer trozo "...desplazándose un poco hacia adelante". De esta manera siempre habrá dos trozos en la RAM (máximo 2GB) y habrá un orden de magnitud menos de acceso al disco duro.

 
GT788:

Actualiza a la versión de 64 bits - hasta 16TB de RAM estará disponible.

Almacena el archivo en forma binaria para una lectura más rápida.

Procesar el archivo en trozos según el tamaño de la RAM.

Intente preprocesar los datos para eliminar la información duplicada.

¿Para qué eje/versión es esto? Incluso XPpro x64 soporta físico hasta 128 y virtual hasta 16TB.

 
Silent:

¿Para qué eje/versión es esto? Incluso XPpro x64 soporta físico hasta 128 y virtual hasta 16TB.

Así es, encontré el máximo de 192 GB para el 7.
 
komposter:

Hay una gran cantidad de información (unos 20 GB en un archivo de texto).

La información consiste en el mismo tipo de secuencias, alrededor de un millón de ellas.

Es necesariorepasar todas las secuenciasrepetidamente y hacer algunos cálculos.

Lo primero que se nos ocurre es leer todo el contenido del archivo, llenar el array de estructuras con él y trabajar con ellas en memoria.

Pero no funcionó, con el siguiente redimensionamiento MT jura "Memory handler: cannot allocate 5610000 bytes of memory".

Dispatcher muestra que terminal.exe utiliza 3,5 GB de RAM (de 16 físicos). Supongo que esto se debe a que el proceso sólo puede obtener 4GB.

EA dice "¡¡¡No hay suficiente memoria(4007 Mb utilizados, 88 Mb disponibles, 4095 Mb en total)!!!".

Y esto es sólo el 15,3% de la cantidad requerida (y me gustaría aumentarla también en el futuro).

No tengo más imaginación.

¿Intento recomponer estas secuencias de manera que obtenga muchas piezas, pero cada una de ellas contenga sólo la información necesaria en el momento?

¿También tratar de comprimir los datos (ya he convertido a floats con tipos char en todos los lugares que puedo)? Pero me dará otro 10-20% como mucho, y necesito reducir el volumen en un orden de magnitud...

¿Algún consejo, amigos? No me oxidaré).

¿Y en la dirección del uso de la base de datos no han mirado? Establecer la base de datos, descargando allí desde un archivo de texto de datos. Puede realizar cualquier agregación de datos por adelantado para futuros cálculos.

Consultas SQL desde el Asesor Experto.

El SGBD también puede colocarse en un servidor independiente para aumentar el rendimiento de la estación comercial.

 

Muchas gracias a todos por vuestra participación.

Ahora estoy desconectado por el fin de semana, pero me aseguraré de responder a todos por la mañana e intentaré aprovechar los consejos.

 
elugovoy:

¿Ha pensado en utilizar una base de datos? Configurar una base de datos, cargar datos en ella desde un archivo de texto. Es posible realizar algún tipo de agregación de datos de antemano para los cálculos posteriores.

Y luego las consultas SQL del Asesor Experto...

El SGBD puede instalarse en un servidor independiente para aumentar el rendimiento.

Lo he pensado. Me interesan las opiniones:

komposter:

Otra idea es pasar todo a una base de datos (¿MySQL?) y trabajar con ella. La idea es que las bases de datos están preparadas para esos volúmenes y para la repetición constante.

¿Hay algún experto? ¿Quién tiene una opinión?

¿Cuál será la aceleración en comparación con la lectura de un archivo y cuál será la ralentización en comparación con el trabajo en memoria?