Tareas para evitar el temido error del sistema operativo Microsoft Windows Server 2003, en su versión Standard Edition de 32 bits x86, con 4GB de RAM gestionada con PAE. El error completo: Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema. Recursos insuficientes en el sistema para completar el servicio solicitado. ID de suceso: 1505. Y también el error: Windows no puede cargar el Registro. La mayoría de las veces esto es debido a una memoria insuficiente o a no tener los derechos de seguridad necesarios. Recursos insuficientes en el sistema para completar el servicio solicitado. para xxx\ntuser.dat. ID de suceso: 1508.

El error completo con ID 1505 y 1508 en Windows Server 2003

Normalmente en equipos con sistemas operativos Windows Server 2003 Standard Edition x86 de 32 bits se puede producir el siguiente error (que se le mostrará al usuario al iniciar sesión de Terminal Server) y aparecerá también en el visor de sucesos, en «Aplicación».

Tipo de suceso: Error
Origen del suceso: Userenv
Categoría del suceso: Ninguno
Id. suceso: 1505
Fecha: 20/06/2017
Hora: 10:17:12
Usuario: alonso
Equipo: servidor
Descripción:
Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema.
DETALLE – Recursos insuficientes en el sistema para completar el servicio solicitado.
Para obtener más información, vea el Centro de ayuda y soporte técnico en http://go.microsoft.com/fwlink/events.asp.

El error completo con ID 1505 y 1508 en Windows Server 2003

Y el error con ID de suceso 1508:

Tipo de suceso: Error
Origen del suceso: Userenv
Categoría del suceso: Ninguno
Id. suceso: 1508
Fecha: 20/06/2017
Hora: 10:17:10
Usuario: NT AUTHORITY\SYSTEM
Equipo: servidor
Descripción:
Windows no puede cargar el Registro. La mayoría de las veces esto es debido a una memoria insuficiente o a no tener los derechos de seguridad necesarios.
DETLLE – Recursos insuficientes en el sistema para completar el servicio solicitado. para … ntuser.dat
Para obtener más información, vea el Centro de ayuda y soporte técnico en http://go.microsoft.com/fwlink/events.asp.

El error completo con ID 1505 y 1508 en Windows Server 2003

Windows podría mostrar a los usuarios el siguiente mensaje de error cuando intentan acceder al equipo mediante Escritorio Remoto (Terminal Server):

Windows no puede iniciar sesión porque no se puede cargar el perfil. Compruebe que está conectado a la red, o que su red está funcionando correctamente. Si el problema persiste, póngase en contacto con el administrador de red. 

Causa de los errores ID 1505 y ID 1508 en carga del perfil del usuario y del registro en equipos con sistemas operativos Windows Server 2003

Puede haber varias causas que propicien estos errores, a continuación expondremos las más habituales:

  1. Espacio en disco insuficiente para la carga de los perfiles o del registro del sistema.
  2. Falta de memoria virtual, el archivo de paginación se podría quedar muy pequeño para la carga de trabajo.
  3. Exceso de carga de trabajo en servidores con los servicios de Terminal Server, exceso de usuarios conectados.
  4. Mala gestión de la memoria RAM. 

Uso de la memoria RAM y virtual en Windows Server 2003 x86 – PAE

Windows Server 2003 en su versión Standard Edition de 32 bits (x86) tiene una limitación por diseño de 4GB de memoria RAM máximos, aunque le asignemos más memoria RAM física sólo usará esos 4GB y sólo lo hará si hemos configurado en el fichero boot.ini de la unidad raíz del sistema operativo el parámetro «PAE»:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=»Windows Server 2003, Standard» /noexecute=AlwaysOff /fastdetect /PAE

Este tema es importante, si tenemos un equipo con 4GB de RAM física y W2003 R2 Standard Edition x86, para que use estos 4GB tendremos que añadir el parámetro /PAE al boot.ini. Sobre este asunto hay extensos documentos de Microsoft, para intentar optimizar al máximo el uso de la memoria RAM y de la limitación de 4GB de los sitemas de 32 bits. A continuación exponemos uno de ellos que es muy recomendable leer y entender:

PAE es la capacidad agregada del procesador IA32 para direccionar más de 4 GB de memoria física. Normalmente, un proceso que se ejecuta bajo Windows 2000 o Windows Server 2003 puede tener acceso hasta a 2 GB de espacio de direcciones de memoria (suponiendo que no se utilizara el modificador /3GB), siendo parte de la memoria física y parte memoria virtual. Cuantos más programas (y, por tanto, más procesos) se ejecuten, más memoria se requerirá hasta agotar todo el espacio de direcciones de 2 GB.

Cuando se produce esta situación, el proceso de paginación aumenta considerablemente y el rendimiento puede verse afectado negativamente. Los administradores de memoria de Windows 2000 y de Windows Server 2003 utilizan PAE para proporcionar más memoria física a un programa. Esto reduce la necesidad de intercambiar la memoria del archivo de paginación y aumenta el rendimiento. El propio programa no es consciente del tamaño de memoria real. El administrador de memoria controla toda la administración de memoria y la asignación de la memoria de PAE independientemente de los programas que se ejecutan.

La información anterior es válida para los programas que se ejecutan cuando se utiliza el modificador /3GB. Es más probable que un programa que solicita 3 GB de memoria pueda tener más cantidad de su memoria en memoria física en lugar de que se pagine. Esto aumenta el rendimiento de los programas que son capaces de utilizar el modificador /3GB. La excepción es cuando se utiliza el modificador /3GB junto con el modificador /PAE. En este caso, el sistema operativo no utiliza más memoria a partir de 16 GB. Este comportamiento se debe a las consideraciones de espacio de memoria virtual del núcleo. Así, si el sistema se reinicia con la entrada /3GB en el archivo Boot.ini, y el sistema tiene más de 16 GB de memoria física, el sistema operativo no utiliza la memoria de acceso aleatorio (RAM) física adicional. Reiniciar el equipo sin el modificador /3GB permite utilizar toda la memoria física.

AWE es un conjunto de interfaces de programación de aplicaciones (API) para las funciones de administrador de memoria que permite a los programas direccionar más memoria de los 4 GB que hay disponibles a través del direccionamiento de 32 bits estándar. AWE permite a los programas reservar memoria física como memoria no paginada y, a continuación, asignar dinámicamente partes de la memoria no paginada al conjunto de trabajo de memoria del programa. Este proceso permite que los programas que utilizan mucha memoria, como los grandes sistemas de bases de datos, reserven grandes cantidades de memoria física para datos sin necesidad de paginarla para poder utilizarla. En su lugar, los datos se intercambian en el conjunto de trabajo y se reserva memoria más allá del intervalo de 4 GB. Además, PAE expone el intervalo de memoria superior a 4 GB al administrador de memoria y las funciones de AWE. Sin PAE, AWE no puede reservar memoria por encima de 4 GB.

A continuación se muestra un ejemplo de un archivo Boot.ini donde se ha agregado el modificador PAE:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=»Windows Server 2003, Enterprise» /fastdetect /PAE

En resumen, PAE es una función de los administradores de memoria de Windows 2000 y Windows Server 2003 que proporciona más memoria física a un programa que solicita memoria. El programa no es consciente de que la memoria que utiliza reside en el intervalo de más de 4 GB, del mismo modo que un programa no es consciente de que la memoria que ha solicitado está realmente en el archivo de paginación.

AWE es un conjunto de API que permite a los programas reservar fragmentos grandes de memoria. La memoria reservada no es paginable y sólo es accesible para ese programa.

En otro documento indica Microsoft:

En todos los procesos (por ejemplo, archivos ejecutables de aplicación) que se ejecutan en versiones de 32 bits de Windows se asignan direcciones de memoria virtual (un espacio de direcciones virtuales), comprendido entre 0 y 4.294.967.295 (2 * 32-1 = 4 GB), independientemente de la cantidad de RAM que está instalada en el equipo.

En la configuración de Windows de forma predeterminada, se designan 2 gigabytes (GB) de este espacio de direcciones virtuales para el uso privado de cada proceso y los otros 2 GB se comparten entre todos los procesos y el sistema operativo. Normalmente, las aplicaciones utilizan sólo una fracción de los 2 GB de espacio de direcciones privadas. El sistema operativo asigna marcos de página de la memoria RAM sólo en aquellas páginas de memoria virtual que se están utilizando.

Extensión de dirección física (PAE) es la característica de la arquitectura Intel de 32 bits que expande la dirección de memoria física (RAM) a 36 bits. PAE no cambia el tamaño del espacio de direcciones virtuales (que permanece en 4 GB), sino sólo el volumen de RAM real que puede incluirse en el procesador.

RAM es un recurso limitado, mientras que para fines más prácticos, la memoria virtual es ilimitada. Puede haber muchos procesos y cada proceso tiene sus propios 2 GB de espacio de dirección virtual privada. Cuando la memoria usada por todos los procesos existentes excede la memoria RAM disponible, el sistema operativo mueve páginas (fragmentos de 4 KB) de uno o más espacios de direcciones virtuales al disco duro del equipo. Esto libera ese marco RAM para otros usos. En sistemas Windows, estas páginas «paginadas hacia fuera» se almacenan en uno o más archivos (Pagefile.sys) en la raíz de una partición. Puede haber un archivo de este tipo en cada partición del disco. La ubicación y el tamaño del archivo de página está configurado en las Propiedades del sistema.

En cualquier sistema, cuando aumenta la carga (el número de usuarios, el volumen de trabajo), disminuye el rendimiento, pero de una manera no lineal. Cualquier aumento en la carga o demanda, más allá de un cierto punto, causa una disminución significativa del rendimiento. Esto significa que ciertos recursos se proveen de manera críticamente baja y esto lo convierte en un cuello de botella.

En algún momento dejan de poderse aumentar los recursos que son escasos. Esto significa que se ha alcanzado un límite de arquitectura. Algunos límites de arquitectura frecuentes en Windows son los siguientes:

  • 2 GB de espacio de direcciones virtual compartido para el sistema (kernel).
  • 2 GB de espacio de dirección virtual privada por proceso (modo usuario).
  • 660 MB del sistema almacenamiento PTE (Windows Server 2003 y versiones anterior).
  • 470 MB de almacenamiento de información de grupo paginado (Windows Server 2003 y versiones anterior).
  • 256 MB de almacenamiento de información de grupo no paginado (Windows Server 2003 y versiones anterior).

Esto se aplica específicamente a Windows Server 2003, pero esto también se aplica a Windows XP y Windows 2000. Sin embargo, Windows Vista, Windows Server 2008 y Windows 7 no todos comparten estos límites de arquitectura.

Es importante, por lo tanto, entender las limitaciones anteriores en equipos con W2003 de 32 bits, dado que estas limitaciones suelen generar los errores 1508 y 1505. Por supuesto en este artículo se sobre entiende que tenemos equipos con W2003 que no podemos migrar a W2012 ó W2016 por los motivos que sean, que ya no tiene este tipo de limitaciones.

Si queremos modificar el fichero boot.ini con este parámetro PAE podremos hacerlo desde la ventana de Propiedades del sistema, pulsando en «Configuración» en la pestaña «Opciones avanzadas», en el grupo «Inicio y recuperación»:

Uso de la memoria RAM y virtual en Windows Server 2003 x86 - PAE

Y en la ventana de «Inicio y recuperación» pulsando en «Editar»:

Uso de la memoria RAM y virtual en Windows Server 2003 x86 - PAE

Nos mostrará el contenido del fichero boot.ini en el bloc de notas, desde aquí podremos modificarlo, siempre con precaución al ser un archivo de configuración de carga del sistema operativo:

Uso de la memoria RAM y virtual en Windows Server 2003 x86 - PAE

Cómo solucionar los errores 1508 y 1505 de carga del perfil y del registro del sistema en Windows Server 2003

Si hemos leído y entendido el punto anterior, ahora sabremos que W2003, en sus versiones de 32 bits y en su versión Standard Edition, como máximo podrá gestionar 4GB de RAM esto en los tiempos que corren es muy poco, así que si nuestro servidor tiene los servicios de Terminal Server y varios usuarios conectados podrá experimentar los errores comentados en este artículo.

Para evitar, en la medida de lo posible, estos errores podremos revisar los siguientes puntos y configuraciones de nuestro equipo. Siempre es conveniente hacer copia de seguridad (si es máquina virtual podremos hacer un snapshot) del equipo antes de proceder a realizar los cambios.

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Por supuesto, lo primero es revisar que las unidades donde tenemos alojados los perfiles de los usuarios y los ficheros de paginación (pagefile.sys) disponen de espacio libre suficiente.

Por otro lado, el archivo de paginación, para un equipo con 4GB de RAM y mucha carga de trabajo, es recomendable que sea de unos 6GB. Así pues este será el primer punto que revisaremos. Para ello accederemos al Panel de Control y pulsaremos en «Sistema»:

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Pulsaremos en la pestaña «Opciones avanzadas», luego en «Configuración» en «Rendimiento»:

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Pulsaremos ahora en la pestaña «Opciones avanzadas» y en «Memoria virtual» pulsaremos en «Cambiar»:

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Nos dará tres opciones:

  • Tamaño personalizado: podremos establecer manualmente el tamaño inicial y máximo del archivo de paginación.
  • Tamaño administrado por el sistema: será el sistema operativo el encargado de administrar el tamaño del archivo de paginación.
  • Sin archivo de paginación: no habrá archivo de paginación.
Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Recomendamos que primero se pruebe con la opción «Tamaño administrado por el sistema», dejándolo unos días en esta opción y viendo si da resultado. Transcurridos unos días volveremos a esta opción y comprobaremos si en «Recomendado» nos indica otra cantidad diferente al establecido por el sistema. En nuestro caso lo dejamos un tiempo en «Tamaño administrado por el sistema», en un equipo con Windows Server 2003 R2 Standard Edition de 32 bits y 4GB de RAM física. Al cabo de los días observamos que se seguían produciendo los errores 1505 y 1508, así que volvimos a acceder a esta ventana y el sistema había establecido 4GB de tamaño para el archivo de paginación, pero en «Recomendado» nos indicaba 6GB.

Puesto que el sistema no fue capaz de ampliar el tamaño del archivo de paginación pagefile.sys a 6GB de forma automática lo forzamos manualmente, marcando «Tamaño personalizado» e introduciendo en tamaño inicial y tamaño máximo el valor 6142. Pulsamos en «Establecer» (es importante pulsar este botón, de lo contrario no aplicará los cambios):

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Nos solicitará que reiniciemos el equipo, si es posible lo reiniciaremos para que se apliquen los cambios. A partir del reinicio el archivo de paginación pagefile.sys estableció su tamaño a 6GB:

Revisar el tamaño del archivo de paginación pagefile.sys y el espacio en disco en la unidad del sistema

Nota: el archivo pagefile.sys está oculto y es del sistema, para verlo hay que indicar en las opciones del Explorador de Windows que muestre los archivos del sistema y los ocultos. Este archivo puede estar en varias unidades y ubicaciones diferentes, según se haya indicado en la ventana de configuración anterior.

A partir de este momento el equipo experimentó una gran mejoría en su rendimiento. Los errores mencionados anteriormente no volvieron a aparecer en el visor de sucesos.

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Si con la ampliación del fichero de paginación explicada anteriormente no hemos resuelto el problema, podremos probar con este otro método. En este caso hay que modificar el Registro de configuraciones de Windows, por lo que recomendamos que se haga copia de seguridad de la máquina virtual antes de continuar con el proceso.

Abriremos el editor de registro, escribiendo en «Inicio» – «Ejecutar»:

regedit

Y pulsando «Aceptar».

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Accederemos a la clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

En la parte derecha pulsaremos con el botón derecho del ratón y elegiremos «Nuevo» – «Valor DWORD»:

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Introduciremos el nombre «PoolUsageMaximum»:

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Marcaremos «Decimal» e introduciremos en «Información del valor» 60:

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Haremos lo mismo con «PagedPoolSize», si no existe lo crearemos con tipo DWORD y valor hexadecimal «ffffffff»:

Modificar el registro del sistema para evitar el error Windows no puede cargar el perfil de usuario pero ha iniciado la sesión con su perfil predeterminado para el sistema

Una vez hechos estos cambios en el Registro del sistema deberemos reiniciar el equipo para que se apliquen.

A partir de aquí iremos observando el visor de sucesos y comprobando que los errores 1505 y 1508 ya no se reproducen.