Comando de purga: ¿no se pueden purgar los buffers del disco, error # -2?

1

Cuando intento ejecutar el comando de purga, siempre aparece el mismo error.

[ERROR] <CPDevice.c:3816>   Unable to create new counter client.
[ERROR] <CPOSX.c:1172>  Unable to get user client so as to poke the kernel. 
Unable to purge disk buffers, error #-2.

Lo he intentado con y sin sudo, inicialmente pensé que tal vez no podía hacerlo debido a que no tenía el acceso adecuado, y simplemente no se programaron en una verificación de permisos. Aunque es el mismo error.

Tengo una instalación de Xcode dual, que creo que puede ser el problema aquí. Tengo 3.2.6 instalado en un directorio personalizado (/ Xcode 3) y tengo Xcode 4.6.3 de la Mac App Store. He instalado las herramientas de línea de comandos más recientes (2013.4) desde Xcode 4. Estoy ejecutando OS X 10.7.4 Lion.

Antes de que alguien me diga que debería dejar que el sistema operativo administre la memoria inactiva solo, porque lo hace bien, no, no lo hace. En lo mas minimo. Normalmente funciona lo suficientemente bien como para no molestarme. Pero cada vez que uso cualquier tipo de VM, encuentro problemas con la memoria que nunca se libera.

Por ejemplo, puedo iniciar una instancia de una VM de emulación. Utilizará unos 600 MB de memoria. Cuando termino la emulación por completo, la memoria no se libera. Además de eso, si vuelvo y vuelvo a ejecutar la misma emulación, los 600 MB inactivos no se reutilizan como se podría esperar. No, simplemente se sienta allí. Y otros 600 de la piscina gratis se acostumbran. Y cuando se termina esa segunda emulación, ahora tengo 1.2 GB de memoria inactiva. Ahora normalmente esto estaría bien, si la memoria inactiva se liberara cuando se usara toda la memoria libre. Pero no lo hace. Simplemente se sienta allí y nunca se libera. Se cambiará al disco en su lugar.

Este problema es particularmente molesto con las máquinas virtuales de virtualización que usan 4 GB o incluso más de RAM dentro de mi uso normal. Reinicie esas cosas más de una vez y las cosas nuevas se vuelven lentas a un rastreo debido al intercambio de discos.

Solía usar el comando de purga todo el tiempo en 10.5 Leopard con Xcode 3.1.4, y los problemas en Leopard no estaban tan mal con la administración automática de la memoria. Acabo de usar la purga para obtener más de una pizarra limpia sin tener que reiniciar. Ni siquiera puedo hacer eso ahora. Y a diferencia de lo que algunas personas le dirían, es un problema grave.

Cualquier idea sería apreciada. Una cosa más. He usado xcode-select para seleccionar Xcode 4.6.3 en lugar de 3.2.6. Solo uso 3.2.6 para desarrollo y compilación. Sin embargo, Macports, Homebrew y algunas otras cosas requieren que se instale y seleccione Xcode 4, que es la única razón por la que lo tengo. Pero si recuerdo correctamente, la purga tampoco funcionó cuando seleccioné Xcode 3 en su lugar.

    
pregunta superriku11 03.01.2014 - 01:11

1 respuesta

1

Se necesita privilegio

En Mountain Lion purge se puede ejecutar desde una cuenta de usuario normal.

En Mavericks , la purga solo se puede ejecutar desde la cuenta root (a través de sudo ). Si intenta ejecutarlo con una cuenta de usuario normal, recibirá un mensaje de error:

Unable to purge disk buffers: Operation not permitted

Función real

purge no actúa directamente en la memoria principal. Su función principal es terminar todo el IO pendiente que está utilizando el caché disco y luego libere todo el disco ocupado caché.

purge debería liberar espacio en el disco para facilitar la paginación y el intercambio de memoria principal. Por lo tanto, muchas personas se convencen de que purge fue liberando la memoria principal. Esta es una leyenda urbana.

Falla real

Este problema claramente viene directamente del núcleo de MacOS X. Puede deberse a que los programas hacen mucha E / S en un sistema en el que la memoria virtual ya está muy utilizada. Pero estos programas son falsos culpables.

Puede encontrar un falso culpable aquí: Mountain Lion Panic - decode

Un pánico del kernel es un fallo del kernel. El tipo de mensaje de error es un mensaje de error del kernel. Es un fallo del núcleo.

Desde su contexto real, le aconsejo que ejecute sysdiagnose y abra un caso de error en Apple con el resultado. Esta herramienta ejecutará para usted todas las herramientas relevantes para analizar cualquier mal comportamiento de su sistema o de cualquier aplicación que se ejecute en él.

Lea esta respuesta profesional: sysdiagnose de Apple

    
respondido por el daniel Azuelos 08.01.2014 - 11:28

Lea otras preguntas en las etiquetas