Які "повідомлення" відстежує "Монітор активності" стовпцями "Надіслані повідомлення" та "Отримані повідомлення"?


9

У «Моніторі діяльності» в ОС X можна додати додаткові стовпці до переліку списку процесів. У цьому списку є два стовпці: "Повідомлення надіслані" та "Отримані повідомлення", які відображаються відповідно як "Надіслані повідомлення" та "Повідомлення Rcvd". Свідок:

Частина вікна Monitor Monitor, що показує стовпці "Надіслані повідомлення" та "Rcvd Msgs"

Про які "повідомлення" посилається Монітор діяльності?

Коли я побачив "повідомлення", спершу подумав про "повідомлення" об'єктива-С, які надсилаються разом objc_msgSend(), але не можу зрозуміти, як би їх відстежувала операційна система, оскільки більшість цих повідомлень були внутрішніми для самого процесу . Налагоджувач може відслідковувати такі повідомлення, коли додається, але я не можу бачити, щоб ОС це робила постійно - дуже великі накладні витрати.

Тож я здогадуюсь, що це більш важкі повідомлення. Чи є вони формою RPC між процесами? Або це повідомлення про дзвінки з користувальницької землі в ядро? Шукаю остаточні посилання. Дякую.

Відповіді:


7

Ці числа відповідають кількості вхідних / вихідних повідомлень Mach, тому вам здається, що ви правильні, не інтерпретуючи їх як облік objc_msgSend.

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

Знімок екрана інструментів Xcode

Він може фільтрувати всі асигнування, а також розподіли, що стосуються ObjC, і ви можете копатись у деталі більш низького рівня, ніж просто підрахунок відправки повідомлень. Канонічна документація, що є частиною Xcode, допоможе вам зрозуміти ці статистичні дані та те, як вони стосуються Монітора активності.

Зокрема, шукайте NSObjCMessageLoggingEnabledта objc_msgSendв розділі Посібник з налагодження Mac OS X Magic - Інструменти довідкової документації, щоб отримати обчислення objC.

Шукайте mach messageв Xcode та знайдіть у розділі IPC / Черги повідомлень у Посібнику з програмування ядра, щоб дізнатись деталі черги повідомлень для машин та їх склад. Вони набагато нижчого рівня трафіку ядра IPC, як ви вже здогадалися.

Напевно, ви можете знайти його і на developer.apple.com, але наявність локальної документації з Xcode має багато переваг.


1
Дякую - але це ще не кришталево ясно. Я підозрював три речі. Можливо , ви мали в виду , щоб підтвердив перший , що я підозрюваний, тобто objc_msgSend()дзвінки є тим важче вагомо MESSAgES здогадок відслідковуються для всіх процесів, або?
Кріс В. Реа

1
Я думав, що це облік objc_msgSend, але тепер я бачу, що я помиляюся. Вони ідеально відображають кількість підрахунків, які доступні, коли ви вибираєте процес з "Монітора активності". Я перегляну свою відповідь як більш правильну і менш помилкову.
bmike

Дякую! Вказівник до Посібника з програмування ядра особливо корисний. Не знав про це.
Кріс В. Реа

Так - існує стільки дивовижної документації, і, хоча я знаю, як і чому вона потрапила на developer.apple.com, я настільки ефективніша в її використанні та пошуку, коли використовую Xcode для перегляду документів.
bmike
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.