Sobre errores de memoria (OOM)

Actualizado el 18 de septiembre de 2016

Contents

1. La importancia de los 32 y 64 bits en la gestión de la memoria

Nuestro instinto nos dice que 64 bits deberían ser mejor que 32 pero… ¿por qué? Simple y llanamente por la cantidad de memoria que es posible gestionar. Los sistemas operativos de 32 bits pueden gestionar un máximo de 4 GBs de RAM en total y le asignan a cada aplicación un máximo de 2 GB de RAM. La cosa es tan sencilla como que si instalas 8 GB de RAM en un equipo con Windows XP o 7 de 32 bits el sistema solo «verá», esto es, solo podrá usar 4 GBytes. De esos 4GB, 1 GByte, aproximadamente, se lo «chupará» el sistema operativo y los otros 3 quedan a repartir entre todas las aplicaciones. Teniendo en cuenta que un sistema de 32 bits le puede asignar a cada aplicación, como FSX/P3D, solo 2 GBytes, aún tenemos 1 GB libre para otros procesos: correo, navegador, skype, etc.

Un sistema de 64 bits, por el contrario, puede manejar TODA la memoria que le instalemos a nuestro equipo. 8, 16, 32, 64, 128GB… El límite teórico está mucho más allá de lo que a día de hoy se puede comprar. Pero no cantes victoria todavía… Aunque el sistema operativo sea de 64 bits, las aplicaciones de 32 bits solo pueden usar un máximo de 4 GBs. Y FSX, y también P3D, al menos hasta su versión 3 disponbile en el momento de escribir estas líneas (septiembre de 2016) son aplicaciones de 32 bits. Esto significa que,en la práctica, en un equipo con 16 GB de RAM que se use para volar FSX/P3D, usará unos 7 GB. 4 GB para FSX/P3D y los otros tres para el sistema operativo y otras aplicaciones como el motor metereológico, cartas de navegación, etc. Los otros 9 quedarán sin usar.

2. El origen de los errores OOM (Out of Memory)

Cuando se usan aeropuertos con muchos objetos, aviones complejos con muchos sistemas y muy especialmente cuando se usan texturas HD o fotorrealistas se puede dar la situación de que FSX necesite tener a su disposición una cantidad de memoria superior a los 4 GB. Pero, por mucha RAM que haya libre en el sistema, una aplicación de 32 bits como FSX/P3D solo puede gestionar un máximo de 4GB. Así que en el momento en el que las necesidades de memoria superen los 4GB posibles… game over… Cuelgue, cierre y vuelta a empezar.

3. Soluciones

3.1 En sistemas operativos de 32 bits

Si todavía usas un sistema operativo de 32 bits, como Windows XP, pásate, PERO YA, a un sistema operativo de 64 bits. No hay discusión posible en ese sentido. Debes cambiar, y punto. Si no lo haces debes asumir que no vas a poder usar aviones, escenarios y otros extras modernos y te quedarás «anclado» en el pasado.

3.2 En sistemas operativos de 64 bits

Hace años que esperamos como agua de mayo una versión de P3D de 64 bits porque supondría el fin de los problemas OOM. Al menos siempre y cuando se cuente son suficiente memoria RAM libre en el sistema. Además, y aún en el caso de tener errores OOM, la solución sería tan sencilla como ampliar la RAM del equipo.

Eso sí, olvídate de un FSX de 64 bits. Nunca existirá. Los usuarios de X-Plane, en ese sentido, hace mucho que nos llevan ventaja, ya que X-Plane sí que es una aplicación nativa de 64 bits sin problemas OOM.

4. Reducir las necesidades de memoria de FSX/P3D

Mientras no contemos con una versión P3D de 64 bits, tanto en P3D como en FSX hay un límite en el uso de la memoria que supone una barrera absolutamente infranqueable: 4GB. Así que puesto que puesto que bajo ningún concepto podremos usar más de 4 GB la solución a los problemas OOM pasa por disminuir el consumo de memoria.

4.1 Número de objetos en el escenario

Cada objeto ocupa un espacio en la memoria. Aún en el caso de repetir un mismo objeto de autogen. Así que no importa que todas las «casitas de tejado rojo» sean iguales. Cada una de esas casas ocupa un espacio en memoria. Así que una de las soluciones más efectivas para evitar errores OOM es reducir el autogen.

Otra posibilidad, aunque menos recomendable bajo mi punto de vista, es bajar el nivel de detalle de los escenarios eliminando extras como personal y vehículos de tierra o aviones estáticos.

4.1.1 Tráfico

Del mismo modo que el autogen es uno de los principales causantes de los errores OOM el tráfico artificial, sea del tipo que sea, también es uno de los grandes responsables de los errores OOM, así que plantéate reducir, o directamente eliminar, el tráfico en carretera y barcos. Y ten también mucho cuidado con el tráfico artificial de aviones. Los extras como My Traffic X o los gratuitos ICE y SKY, generan un gran volumen de tráfico con texturas muy variadas que también contribuyten notablemente a generar errores OOM.

4.1.2 Aeropuertos que sobrevuelas (pero no usas)

Si vuelas de Barcelona a Alicante sobrevolarás Valencia. Si cuentas con un escenario detallado de Valencia el simulador lo va a cargar aunque lo sobrevueles a 40.000 pies y no aterrices allí. Estarás, por tanto, cargando un elevado número de objetos que son total y absolutamente prescindibles porque a esa altitud no lo verás. Es decir, usarás una cantidad valiosísima de RAM de forma total y absolutamente inútil. En lugar del corto vuelo entre Barcelona y Alicante imagina un vuelo intercontinental en el que sobrevueles múltiples aeropuertos detallados y podrás imaginar que las probabilidades de que acabes con un error OOM se multiplican.

Si usas escenarios detallados no incluidos por defecto en el simulador es altamente recomendable que únicamente cargues los de salida y destino, desactivando todos los que no uses. En ese sentido la herramienta Scenery Config Editor es más que recomendable. Hay un tutorial sobre su uso en este enlace:

http://www.airalandalus.org/content/gesti%C3%B3n-de-escenarios-videotutoriales

4.2 Aviones con sistemas avanzados

A todos nos gusta volar aviones que simulen los sistemas y comportamiento de sus homólogos reales. Sin embargo, los modelos más avanzados no solo necesitan una CPU más rápida para procesar un mayor número de cálculos. Cada uno de estos sistemas también necesita su parcela de memoria. De modo que, a mayor número de sistemas, también hay un mayor consumo de memoria. De todos los que conozco, el avión más glotón con respecto a la memoria es, sin duda, el Concorde X de FSLabs. Cuando vueles este modelo debes seguir cuidadosamente todos los consejos de esta guía porque los vas a necesitar. El avión, por sí solo y sin ningún extra más, casi 3GB de RAM.

No hay nada que podamos hace para reducir el consumo de memoria de un determinado avión, ya que el desarrollador es el único responsable. Sin embargo, conviene tener en cuenta que cuando volemos aviones sencillos podremos usar ajustes más exigentes mientras que para el vuelo con aviones detallados habrá que ser más comedidos con los ajustes y escenarios que usamos.

4.3 Texturas variadas y HD

Cada vez que el sistema carga una textura diferente debe almacenarla en un espacio nuevo de memoria. Por lo tanto, cuanto más variadas sean las texturas más probabilidades tenemos de un error OOM. Si hacemos una ruta ocenánica es muy improbable que tengamos un error OOM puesto que para la mayor parte de nuestro viaje usaremos una gama muy  limitada de texturas. Principalmente agua. Sin embargo, en un viaje desde Londres hasta Ciudad del Cabo, por ejemplo, las probabilidades de un error OOM son mucho más altas ya que también lo es la variedad de texturas que el simulador tendrá que cargar.

Con una instalación por defecto de FSX/P3D la carga de texturas no supone un problema porque su gama es bastante limitada. Sin embargo, si usamos extras de texturas como ORBX Global, y muy especialmente si además contamos con las texturas específicas para varias regiones, las posibilidades de errores OOM debido a la carga de un número elevado de texturas diferentes se eleva muy considerablemente.

Por ese mismo motivo, los escenarios más propensos a los errores OOM son los fotorrealistas puesto que en ellos no hay ni una sola textura que se repita. Todos y cada uno de los bloques de texturas son diferentes y, por tanto, este tipo de escenarios hacen el uso más intenso de la memoria.

A tener en cuenta que aumentar la resolución de las texturas DISPARA exponencialmente el consumo de memoria. Desde hace unos años está muy de moda ofrecer texturas HD. Sí… se ven mejor. Pero, al menos bajo mi punto de vista, la probabilidad de errores OOM y la bajada de rendimiento asociados al uso de texturas HD hacen que opine que no merezca la pena su uso. Por ejemplo, para el plugin de textura ASCA de HiFi uso texturas de solo 256 píxeles para las nubes. No noto una degradación de calidad notable y, a cambio, mi equipo funciona mucho más fluido y disminuyo dráscticamente las probabilidades de un error OOM.

4.4 El lod_radius (radio de nivel de detalle)

El ajuste lod_radius en la sección [TERRAIN] de los archivos fsx.cfg o prepar3d.cfg define la distancia desde nuestra posición actual a la que comenzarán a cargarse texturas o objetos. Esto, al menos en teoría, permite reducir texturas borrosas en la distancia o que los aeropuertos aparezcan «mágicamente» y de repente durante la aproximación puesto que ya estarán cargado bastante antes de que nosotros lleguemos.

Sin embargo, y como se ha descrito en apartados anteriores, aumentar el número de objetos en un escenario puede provocar errores OOM. Cargar un mayor número de texturas también puede provocar errores OOM. Así que aumentar de forma simultánea el número de objetos y texturas no es, desde luego, una muy buena idea.

El valor por defecto para el valor lod_radius en FSX y P3D es de 4.5. Si aumentas este valor y tienes errores OOM pues no te quedará más remedio que reducirlo.

4.5 Por qué P3D es mucho mejor gestionando el uso de la memoria pero sigue habiendo errores OOM

Cuando ya nos hemos alejado del aeropuerto de partida y ya no está a la vista es inútil mantener cargadas esas texturas puesto que no ya no lo vemos, no las necesitamos. FSX es un desastre en ese sentido y mantiene las texturas cargadas de principio a fin prácticamente en todos los casos.

En cambio, P3D ha mejorado MUCHÍSIMO al respecto y es capaz de liberar memoria descargando aquellas texturas y objetos que ya no necesitamos. Entonces… si P3D es capaz de liberar memoria ¿por qué seguimos teniendo errores OOM incluso en las últimas versiones de P3D?

Pues porque los desarrolladores siempre buscan el máximo realismo y ofrecer el mayor número de funciones avanzadas. Y si las últimas versiones de P3D ofrecen más margen de memoria libre, pues los desarrolladores aprovechan ese margen y crean extras más «hambrientos» de memoria. Cuando usamos solo UN extra detallado, como puede ser una avión avanzado, no hay problema. El problema viene cuando combinamos ese avión avanzado, con aeropuertos detallados, texturas variadas y HD, etc, etc. Aunque P3D hace un uso mucho más avanzado y optimizado de la memoria los diferentes extra de última generación son, individualmente, mucho más exigentes. Y combinarlos suele ser el detonante de los errores OOM.

5. Herramientas para monitorizar el consumo de memoria (VAS)

Mediante FSUIPC

Source: http://www.avsim.com/topic/431663-vas-fsuipc-and-fsx/

  • Ve al menú de FSX/FSX > Add-ons > FSUIPC …
  • Selecciona la pestaña Logging
  • Introduce un valor Offset de 024C (cero, dos, cuatro, ce)
  • Usa el Type S32 en la caja desplegable
  • *NO* marques la casilla Hex
  • Selecciona «FS Title Bar» para que la información se muestre en la barra de título de P3D
  • Pincha en OK

https://s10.postimg.io/rgopotmd5/VAS_FSUIPC.jpg

projectFLY Pilot Tools

http://pawkbun.co.uk/

http://puu.sh/iFaFF/8835fc2588.png

Microsoft tool TN Process Explorer

http://technet.micro…s/bb896653.aspx

, , , , ,

Comments are currently closed.