Jakie „wiadomości” śledzi Monitor aktywności za pomocą kolumn „Wiadomości wysłane” i „Wiadomości odebrane”?

9

W Monitorze aktywności w systemie OS X można dodać dodatkowe kolumny do widoku listy procesów. Dwie kolumny dostępne na tej liście to „Wysłane wiadomości” i „Otrzymane wiadomości”, które wyświetlają się odpowiednio jako „Wysłane wiadomości” i „Wiadomości Rcvd”. Świadek:

Część okna Monitora aktywności przedstawiająca kolumny „Wysłane wiadomości” i „Wiadomości Rcvd”

Do jakiego rodzaju „wiadomości” odnosi się Monitor aktywności?

Kiedy zobaczyłem „wiadomość”, początkowo myślałem o „wiadomościach” celu C, które są wysyłane objc_msgSend(), ale nie widzę, w jaki sposób byłyby one śledzone przez system operacyjny, ponieważ większość tych wiadomości była wewnętrzna dla samego procesu . Debuger może śledzić tego rodzaju wiadomości po podłączeniu, ale nie widzę, aby system operacyjny robił to cały czas - bardzo duże obciążenie.

Sądzę więc, że są to komunikaty o większej wadze. Czy są formą RPC między procesami? Czy te połączenia są wysyłane z lądowania użytkownika do jądra? Poszukiwanie ostatecznych odniesień. Dziękuję Ci.

Chris W. Rea
źródło

Odpowiedzi:

7

Liczby te pasują do liczników wejścia / wyjścia Macha, więc wydaje się, że masz rację, nie interpretując ich tak, jak liczy się obiekt objc_msgSend.

Możesz dowiedzieć się więcej na temat liczby wiadomości na wyższym poziomie, uruchamiając Instruments (część zestawu narzędzi Xcode do pobrania za darmo ) i kopiąc do określonej aplikacji, aby zobaczyć, jakie wiadomości są wysyłane i kiedy.

Zrzut ekranowy instrumentów Xcode

Może filtrować wszystkie przydziały, a także przydziały związane z ObjC, i możesz zagłębić się w szczegóły na niższym poziomie niż tylko liczba wysłanych wiadomości. Dokumentacja kanoniczna będąca częścią Xcode pomoże ci zrozumieć te statystyki i ich związek z monitorem aktywności.

W szczególności wyszukaj NSObjCMessageLoggingEnabledi objc_msgSendzapoznaj się z częścią dokumentacji systemu Mac OS X Debugging Magic - Tools Guide w dokumentacji referencyjnej, aby uzyskać liczbę obiektów objC.

Wyszukaj mach messagew Xcode i poszukaj sekcji IPC / Kolejki komunikatów w Przewodniku programowania jądra, aby poznać szczegóły kolejki komunikatów mach i ich skład. Są to znacznie niższy poziom ruchu jądra IPC, jak się domyślacie.

Prawdopodobnie można go również znaleźć na developer.apple.com, ale posiadanie lokalnej dokumentacji z Xcode ma wiele zalet.

bmike
źródło
1
Dzięki - ale nie jest jeszcze krystalicznie czysty. Podejrzewałem trzy rzeczy. Czy chodziło Ci potwierdzić, pierwszą rzeczą, którą podejrzewa, czyli objc_msgSend()rozmowy śledzone dla wszystkich procesów lub wiadomości cięższego domysły?
Chris W. Rea
1
Myślałem, że to objc_msgWysyłaj liczby, ale teraz widzę, że się mylę. Doskonale odwzorowują one liczbę komunikatów mach dostępnych po wybraniu procesu z Monitora aktywności. Poprawię moją odpowiedź, aby była bardziej poprawna i mniej zła.
bmike
Dzięki! Wskaźnik do Przewodnika programowania jądra jest szczególnie pomocny. Nie byłam tego świadoma.
Chris W. Rea
Tak - jest tak niesamowita dokumentacja i chociaż wiem, jak i dlaczego została umieszczona na developer.apple.com, jestem bardziej skuteczny w korzystaniu z niej i znajdowaniu jej, gdy używam Xcode do przeglądania dokumentów.
bmike