9 votos

Mac OS X Mavericks se congela y deja de responder cuando se agota la memoria

Ocurre cada dos días y los síntomas son, como mínimo, extraños. El ordenador sigue respondiendo en cierto sentido; puedo mover el ratón, los botones de volumen de los auriculares funcionan. El teclado sí nada sin embargo, tampoco hace clic. No se presentan estados hover. Es como si el puntero del ratón no se moviera realmente.

Puedo usar el ordenador si me conecto desde otro ordenador usando SSH o usando un remoto desde mi teléfono (uso Rowmote.) Es muy lento, sin embargo - pero responde.

En este estado, puedo hacer muy pocas cosas. Iniciar nuevas aplicaciones es una ruleta, por ejemplo podía iniciar el Monitor de Actividad (no se veía nada raro) pero iniciar la Consola después no era posible. Cerrar aplicaciones daba resultados extraños hasta que finalmente también dejó de responder al remoto. Curiosamente, la aplicación remota no creía haber perdido la conexión, así que de alguna manera seguía recibiendo y reconociendo los comandos remotos.

A continuación se presenta la información pertinente /var/log/system.log salida desde el momento en que se produjo:

Jan  3 10:39:19 knifen.local WindowServer[119]: CGXCreateShmem : mach_make_memory_entry(268453900: unknown error code) : Cannot map memory
Jan  3 10:39:19 knifen.local WindowServer[119]: _CGXCreateWindowInline: Creation failure 1007
Jan  3 10:39:19 knifen.local Dock[15204]: CGSNewWindowWithOpaqueShape: Cannot create window
Jan  3 10:39:19 knifen.local WindowServer[119]: CGXCreateShmem : mach_make_memory_entry(268453900: unknown error code) : Cannot map memory
Jan  3 10:39:19 knifen.local WindowServer[119]: _CGXCreateWindowInline: Creation failure 1007
Jan  3 10:39:19 knifen.local Dock[15204]: CGSNewWindowWithOpaqueShape: Cannot create window
Jan  3 10:39:28 knifen.local WindowServer[119]: BUG in libdispatch: 13A603 - 2930 - 0x1000480c
Jan  3 10:39:51 knifen kernel[0]: IOHIDSystem: postEvent LLEventQueue overflow.
Jan  3 10:40:50 knifen.local Spotify[13941]: Got disconnected: Error Domain=GCDAsyncSocketErrorDomain Code=4 "Read operation timed out" UserInfo=0xfa075f0 {NSLocalizedDescription=Read operation timed out}
Jan  3 10:40:55 knifen kernel[0]: IOHIDSystem: postEvent LLEventQueue overflow.
Jan  3 10:41:50 knifen.local hidd[95]: IOHIDEventQueue unable to get policy for event of type 11. (e00002e8)
Jan  3 10:41:56 --- last message repeated 113 times ---

La verdad es que no me pregunto nada aquí, si tenéis consejos supongo que estaría bien. Parece ser una mala ingeniería por parte de Apple.

4voto

Oskar Puntos 1242

Cuando el sistema operativo está hambriento de espacio en el disco, ocurren cosas malas por diseño en un esfuerzo por tratar de mantener las partes críticas del sistema en línea el tiempo suficiente para dejar que ocurra una caída controlada y potencialmente dejar que las aplicaciones con cambios para guardar sobrevivan hasta que comience la actividad de limpieza.

Es mucho menos probable que Mavericks asigne toda la cantidad de RAM a /var/db/sleepimage, por lo que las personas acostumbradas a tener ese espacio preasignado pueden encontrarse con sorpresas cuando el sistema operativo necesite un poco de espacio para hacer crecer la imagen de sueño si las condiciones de funcionamiento lo exigen.

El principal consejo sería conservar varios gigabytes de espacio libre en el volumen de arranque cuando se tiene una carga de trabajo que estresa el sistema de memoria virtual y se ejecuta con la presión de la memoria en rojo.

Aquí están mis recomendaciones:

  • ¿A qué escala o medida se ciñe la "presión de memoria" de Mavericks y Yosemite? tiene una buena información sobre el control y la presión de la memoria en el comando
  • arrancar el sistema, iniciar la sesión de un usuario, salir de todas las aplicaciones
  • abrir el monitor de actividad y observar/grabar la pantalla de memoria
  • poner la máquina en reposo y despertarla 30 segundos después
  • ejecute sudo du -sm /var/vm/* y observe el tamaño de su archivo de imagen de reposo, así como si se ha creado algún archivo de intercambio en el disco.

Querrás tener idealmente suficiente espacio libre en el disco para que coincida con tu huella total de memoria si pretendes ejecutar programas que lleven al sistema de memoria virtual a un territorio amarillo por la presión de la memoria. Probablemente no necesitarás todo ese espacio sólo para el SO, pero especialmente si estás recibiendo errores de memoria de máquina como los que estás enumerando, la carga de trabajo que estás ejecutando necesita un poco más de espacio libre para crecer de lo que estás permitiendo.

Además, si cree que el ajuste del sistema es incorrecto, puede presentar fácilmente un informe de error ejecutando sysdiagnose después de un arranque limpio como el descrito anteriormente, una vez más cuando el sistema está ejecutando la carga de trabajo prevista correctamente y una última sydiagnose ejecutar una vez que ha provocado que las asignaciones de memoria empiecen a romper el sistema. Es posible que haya mejores opciones que Apple podría haber hecho, pero también podría ser simplemente que su software es buggy / fugas de memoria y el sistema está rompiendo como estaba previsto cuando los recursos finitos que tiene se han agotado. Sin más detalles es difícil saber cuál es el caso.

2voto

lericson Puntos 168

"shmem" es memoria compartida, y OS X está fallando al asignar la memoria compartida. Por tanto, parece que el ordenador se ha quedado sin memoria, tanto la RAM como la del disco duro. ¿Es este el caso? En el momento de la congelación, parecía que quedaba alrededor de 1GB de espacio.

  • Liberar espacio en disco borrando archivos
  • Liberar memoria cerrando aplicaciones

En este caso concreto, los registros indicaron más tarde que Spotlight había estado intentando indexar un volumen sparsebundle montado, lo que hizo que el disco de respaldo se quedara sin espacio.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X