Какие «сообщения» отслеживает Activity Monitor с помощью столбцов «Отправленные сообщения» и «Полученные сообщения»?

9

В Activity Monitor в OS X можно добавить дополнительные столбцы в представление списка процессов. В этом списке доступны два столбца: «Отправленные сообщения» и «Полученные сообщения», которые отображаются как «Отправленные сообщения» и «Отправленные сообщения» соответственно. Свидетель:

Часть окна «Монитор активности» с колонками «Отправленные сообщения» и «Отправленные сообщения»

К каким «сообщениям» относится Activity Monitor?

Когда я увидел «message», я сначала подумал о «сообщениях» Objective-C, которые отправляются objc_msgSend(), но я не понимаю, как они будут отслеживаться операционной системой, поскольку большинство этих сообщений будут внутренними для самого процесса. , Отладчик может отслеживать такие сообщения при подключении, но я не вижу, чтобы ОС делала это постоянно - очень большие накладные расходы.

Я предполагаю, что это более тяжелые сообщения. Являются ли они формой RPC между процессами? Или эти сообщения звонят от пользователя к ядру? Ищу окончательные ссылки. Спасибо.

Крис В. Ри
источник

Ответы:

7

Эти числа соответствуют числу входов / выходов сообщений Маха, поэтому вы, похоже, правы, не интерпретируя их как счетчик objc_msgSend.

Вы можете узнать больше о подсчете сообщений более высокого уровня, запустив Instruments (часть свободно загружаемого набора инструментов Xcode ) и покопавшись в конкретном приложении, чтобы увидеть, какие сообщения отправляются и когда.

Снимок экрана инструментов Xcode

Он может фильтровать все распределения, а также распределения, связанные с ObjC, и вы можете углубиться в детали более низкого уровня, чем просто количество отправленных сообщений. Каноническая документация, которая является частью XCode, поможет вам разобраться в этих статистических данных и их связи с Activity Monitor.

В частности, найдите NSObjCMessageLoggingEnabledи objc_msgSendв части справочной документации Mac OS X Debugging Magic - Руководство по инструментам, чтобы получить счет objC.

Ищите mach messageв XCode и ищите раздел IPC / Очереди сообщений Руководства по программированию Ядра для подробностей очереди сообщений маха и что составляет их. Это гораздо более низкий уровень трафика ядра IPC, как вы и предполагали.

Вы, вероятно, можете найти его и на developer.apple.com, но наличие локальной документации из XCode имеет много преимуществ.

bmike
источник
1
Спасибо - но это еще не кристально ясно. Я подозревал три вещи. Возможно , вы имели в виду , чтобы подтвердить первое , что я подозреваемый, т.е. objc_msgSend()звонки являются тем тяжелее весомо MESSAgES догадок отслеживаются для всех процессов, или?
Крис В. Ри
1
Я думал, что это был счет objc_msgSend, но теперь я вижу, что я не прав. Они точно соответствуют количеству сообщений, доступных при выборе процесса в Activity Monitor. Я пересмотрю свой ответ, чтобы быть более правильным и менее неправильным.
bmike
Спасибо! Указатель на Руководство по программированию ядра особенно полезен. Не знал об этом.
Крис В. Ри
Да, есть так много удивительной документации, и хотя я знаю, как и почему она появилась на developer.apple.com, я гораздо эффективнее ее использую и нахожу, когда использую Xcode для просмотра документов.
bmike