¿Qué tipo de "mensajes" rastrea el Monitor de actividad con las columnas "Mensajes enviados" y "Mensajes recibidos"?

9

En Activity Monitor en OS X, es posible agregar columnas adicionales a la vista de lista de procesos. Dos columnas disponibles en esa lista son "Mensajes enviados" y "Mensajes recibidos", que aparecen como "Mensajes enviados" y "Mensajes Rcvd", respectivamente. Testigo:

Ventana de parte del monitor de actividad que muestra las columnas "Mensajes enviados" y "Mensajes Rcvd"

¿A qué tipo de "mensajes" se refiere el Monitor de actividad?

Cuando vi "mensaje", pensé al principio en los "mensajes" de Objective-C que se envían objc_msgSend(), pero no puedo ver cómo el sistema operativo los rastrearía, ya que la mayoría de esos mensajes serían internos al proceso en sí . Un depurador puede rastrear ese tipo de mensajes cuando está conectado, pero no puedo ver que el sistema operativo lo haga todo el tiempo, una sobrecarga muy alta.

Así que supongo que esos son mensajes más pesados. ¿Son una forma de RPC entre procesos? O, ¿son esos mensajes llamados desde la tierra del usuario al núcleo? Buscando referencias definitivas. Gracias.

Chris W. Rea
fuente

Respuestas:

7

Esos números coinciden con los recuentos de entrada / salida de mensajes Mach, por lo que parece ser correcto al no interpretarlos como los recuentos objc_msgSend.

Puede obtener más información sobre el recuento de mensajes de nivel superior activando Instrumentos (parte del conjunto de herramientas Xcode que se puede descargar libremente ) y buscando en una aplicación específica para ver qué mensajes se envían y cuándo.

Captura de pantalla de Xcode Instruments

Puede filtrar todas las asignaciones, así como las asignaciones relacionadas con ObjC y puede profundizar en detalles de niveles mucho más bajos que solo los recuentos de envío de mensajes. La documentación canónica que forma parte de Xcode lo ayudará a entender estas estadísticas y cómo se relacionan con el Monitor de actividad.

Específicamente, busque NSObjCMessageLoggingEnabledy objc_msgSenden la parte de Mac OS X Debugging Magic - Guía de herramientas de la Documentación de referencia para obtener los recuentos de objC.

Busque mach messageen Xcode y busque en la sección IPC / Colas de mensajes de la Guía de programación del kernel los detalles de la cola de mensajes mach y lo que los compone. Son mucho más bajos niveles de tráfico de kernel IPC como usted ha supuesto.

Probablemente también pueda encontrarlo en developer.apple.com, pero tener la documentación local desde Xcode tiene muchas ventajas.

bmike
fuente
1
Gracias, pero aún no está claro como el cristal. Sospeché tres cosas. ¿Quería confirmar lo primero que sospeché, es decir objc_msgSend(), se realiza un seguimiento de las llamadas para todos los procesos o se adivinan los mensajes más pesados?
Chris W. Rea
1
Pensé que eran objc_msgEnviar recuentos, pero ahora veo que estoy equivocado. Se asignan perfectamente a los recuentos de mensajes de mach disponibles cuando selecciona un proceso desde el Monitor de actividad. Revisaré mi respuesta para que sea más correcta y menos incorrecta.
bmike
¡Gracias! El puntero a la Guía de programación del núcleo es particularmente útil. No lo sabía.
Chris W. Rea
Sí, hay mucha documentación sorprendente, y aunque sé cómo y por qué se puso en developer.apple.com, soy mucho más eficaz al usarla y encontrarla cuando uso Xcode para examinar los documentos.
bmike