Che tipo di "messaggi" monitora Activity Monitor con le colonne "Messaggi inviati" e "Messaggi ricevuti"?


9

In Activity Monitor su OS X, è possibile aggiungere colonne aggiuntive alla vista dell'elenco dei processi. Due colonne disponibili in tale elenco sono "Messaggi inviati" e "Messaggi ricevuti", che vengono visualizzati rispettivamente come "Messaggi inviati" e "Messaggi Rcvd". Testimone:

Parte della finestra Monitor attività che mostra le colonne "Messaggi inviati" e "Messaggi SMS"

A che tipo di "messaggi" fa riferimento Activity Monitor?

Quando ho visto "messaggio", all'inizio ho pensato ai "messaggi" di Objective-C che venivano spediti objc_msgSend(), ma non riesco a vedere come verrebbero tracciati dal sistema operativo poiché la maggior parte di quei messaggi sarebbe interna al processo stesso . Un debugger potrebbe tenere traccia di questi tipi di messaggi quando è allegato, ma non riesco a vedere il sistema operativo farlo continuamente - sovraccarico molto elevato.

Quindi immagino che quelli siano messaggi più pesanti. Sono una forma di RPC tra processi? Oppure, quei messaggi vengono richiamati da user-land nel kernel? Alla ricerca di riferimenti definitivi. Grazie.

Risposte:


7

Quei numeri corrispondono ai conteggi in / out dei messaggi Mach, quindi sembra che tu sia corretto nel non interpretarli come conteggi objc_msgInvia.

Puoi saperne di più sul conteggio dei messaggi di livello superiore accendendo Strumenti (parte del set di strumenti Xcode liberamente scaricabile ) e scavando in un'applicazione specifica per vedere quali messaggi vengono inviati e quando.

Schermata di Xcode Instruments

Può filtrare tutte le allocazioni e anche le allocazioni relative a ObjC e puoi scavare in dettagli di livello molto più basso rispetto ai soli conteggi di invio di messaggi. La documentazione canonica che fa parte di Xcode ti aiuterà a dare un senso a queste statistiche e al loro rapporto con Activity Monitor.

In particolare, cercare NSObjCMessageLoggingEnablede objc_msgSendnella sezione Debugging Magic di Mac OS X - Guida degli strumenti della Documentazione di riferimento per ottenere i conteggi objC.

Cerca mach messagein Xcode e cerca la sezione IPC / Code dei messaggi della Guida alla programmazione del kernel per i dettagli sulla coda dei messaggi di mach e su cosa li compone. Sono traffico del kernel IPC di livello molto più basso, come avete ipotizzato.

Probabilmente puoi trovarlo anche su developer.apple.com, ma avere la documentazione locale all'interno di Xcode ha molti vantaggi.


1
Grazie - ma non è ancora cristallino. Sospettavo tre cose. Intendevi confermare la prima cosa che sospettavo, vale a dire che le objc_msgSend()chiamate vengono monitorate per tutti i processi o che i messaggi più pesanti indovinano?
Chris W. Rea,

1
Pensavo che quelli fossero objc_msgInvia conteggi, ma ora vedo che mi sbaglio. Si associano perfettamente ai conteggi dei messaggi mach disponibili quando si seleziona un processo da Activity Monitor. Revisionerò la mia risposta per essere più corretto e meno sbagliato.
bmike

Grazie! Il puntatore alla Guida alla programmazione del kernel è particolarmente utile. Non ne ero a conoscenza.
Chris W. Rea,

Sì, c'è così tanta documentazione incredibile, e anche se so come e perché è stato messo su developer.apple.com, sono così più efficace nell'usarlo e trovarlo quando uso Xcode per sfogliare i documenti.
bmike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.