¿Por qué la "Memoria real" es mayor que la "Memoria" para el proceso kernel_task?

¿Qué significa exactamente la columna Memoria del Monitor de actividad?

¿Cómo es que en la situación de ejemplo a continuación (de un sistema macOS High Sierra) la columna Real Mem es mayor que la columna Memory?

Según una pregunta anterior ¿Cómo se calcula la columna "Memoria" en Monitor de Actividad? , uno podría esperar que Real Mem siempre sea menor o igual que Memory, lo que aparentemente no siempre es cierto.

Monitor de actividad

Editar: este comportamiento no solo se aplica a la tarea del kernel, sino también a otros procesos. Por ejemplo, en la siguiente captura de pantalla, vemos un par de Google Chrome Helpers que experimentan el mismo comportamiento, donde Real Mem > Memory. Lo mismo se puede ver con Dock , Notes , Spotlight , Facetime .

ingrese la descripción de la imagen aquí

Wow - Chrome debe tener pérdidas de memoria extensivas. ¿Puede hacer que eso suceda en un caso reproducible o necesita muchas horas de navegación para obtener esa condición de memoria para las numerosas aplicaciones auxiliares?
Sí, muy reproducible. Y no solo le pasa a Chrome, sino a muchos otros programas, como Dock , Notes , Spotlight , el propio Monitor de actividad . Vea la captura de pantalla actualizada arriba. Entonces, a menos que se trate de un problema del sistema dado, sospecho que nos falta algo en la definición de Apple de Real mem .

Respuestas (1)

El núcleo es especial: es el microsistema el que realmente asigna memoria y ejecuta la memoria virtual. Puede suponer que 3,60 GB es lo que ha reclamado su kernel y que 1,86 GB corresponden a lo que necesita la tarea en sí y el resto es la sobrecarga/asignaciones para soportar todas las demandas del kernel Mach.

Todas las demás líneas en el Monitor de actividad se comportan como cabría esperar, sumando bastante claramente una vez que ignora los números del núcleo:

  • La asignación total de memoria virtual es siempre la más grande. La mayor parte de eso no está asignado / no está mapeado físicamente y no está en ninguna categoría enumerada.
  • Real Mem es la asignación no compartida y no comprimida para esa tarea.
  • La memoria comprimida es la parte de la memoria total que ha sido comprimida antes de almacenarse activamente.
  • Tanto Privado como Compartido son uso de memoria real, pero indican si otros procesos también pueden necesitar o ser responsables de esa asignación contra el total.

Para una discusión más amplia de kernel_task, esta pregunta tiene algunos enlaces excelentes y una discusión sobre cómo kernel_taskes tan diferente al resto de los procesos que ve en macOS.

Esta descripción sobre la funcionalidad especial del kernel tiene sentido. Sin embargo, ¿cómo es que otros procesos experimentan el mismo comportamiento? (Consulte la descripción de la pregunta actualizada con una captura de pantalla adicional). Gracias.