"Pesan" seperti apa yang dipantau Activity Activity dengan kolom "Pesan Terkirim" dan "Pesan Diterima"?

9

Di Monitor Aktivitas pada OS X, dimungkinkan untuk menambahkan kolom tambahan ke tampilan daftar proses. Dua kolom yang tersedia dalam daftar itu adalah "Pesan Terkirim" dan "Pesan Diterima", yang masing-masing ditampilkan sebagai "Pesan Terkirim" dan "Pesan Mjr". Saksi:

Bagian Porsi Monitor Aktivitas menampilkan kolom "Pesan Terkirim" dan "Pesan Rcvd"

"Pesan" apa yang dimaksud Monitor Aktivitas?

Ketika saya melihat "pesan", saya pertama-tama berpikir "pesan" Objective-C yang dikirim objc_msgSend(), tetapi saya tidak dapat melihat bagaimana pesan tersebut akan dilacak oleh sistem operasi karena sebagian besar pesan itu akan bersifat internal untuk proses itu sendiri . Seorang debugger mungkin melacak pesan-pesan semacam itu ketika terpasang, tetapi saya tidak dapat melihat OS melakukannya sepanjang waktu - overhead yang sangat tinggi.

Jadi saya menduga itu adalah pesan yang lebih berat. Apakah mereka merupakan bentuk RPC antar proses? Atau, apakah pesan-pesan itu panggilan dari pengguna-tanah ke dalam kernel? Mencari referensi yang pasti. Terima kasih.

Chris W. Rea
sumber

Jawaban:

7

Angka-angka itu cocok dengan jumlah Mach yang masuk / keluar, jadi Anda tampaknya benar dalam tidak menafsirkannya sebagai objc_msgKirim hitungan.

Anda dapat mempelajari lebih lanjut tentang penghitungan pesan tingkat tinggi dengan menyalakan Instrumen (bagian dari rangkaian Xcode yang dapat diunduh secara bebas ) dan menggali ke dalam aplikasi tertentu untuk melihat pesan apa yang sedang dikirim dan kapan.

Tangkapan layar Instrumen Xcode

Itu dapat memfilter semua alokasi serta alokasi yang berkaitan dengan ObjC dan Anda dapat menggali rincian tingkat yang jauh lebih rendah daripada hanya jumlah pengiriman pesan. Dokumentasi kanonik yang merupakan bagian dari Xcode akan membantu Anda memahami statistik ini dan bagaimana kaitannya dengan Activity Monitor.

Secara khusus, cari NSObjCMessageLoggingEnableddan objc_msgSenddi bagian Mac OS X Debugging Magic - Tools Guide dari Dokumentasi Referensi untuk mendapatkan jumlah objC.

Cari mach messagedi Xcode dan cari bagian IPC / Antrian Pesan dari Panduan Pemrograman Kernel untuk detail antrian pesan mach dan apa yang membuatnya. Mereka jauh lebih rendah tingkat lalu lintas kernel IPC seperti yang Anda duga.

Anda mungkin dapat menemukannya di developer.apple.com juga, tetapi memiliki dokumentasi lokal dari dalam Xcode memiliki banyak keuntungan.

bmike
sumber
1
Terima kasih - tetapi belum sejernih kristal. Saya curiga tiga hal. Apakah yang Anda maksud untuk mengkonfirmasi hal yang saya pertama kali dicurigai, yaitu objc_msgSend()panggilan yang dilacak untuk semua proses, atau pesan yang lebih berat-berat tebakan?
Chris W. Rea
1
Saya pikir itu objc_msgKirim hitungan, tapi sekarang saya melihat saya salah. Mereka memetakan dengan sempurna ke jumlah pesan mach yang tersedia saat Anda memilih proses dari dalam Activity Monitor. Saya akan merevisi jawaban saya menjadi lebih benar dan kurang salah.
bmike
Terima kasih! Pointer ke Panduan Pemrograman Kernel sangat membantu. Tidak menyadarinya.
Chris W. Rea
Ya - ada begitu banyak dokumentasi yang luar biasa, dan meskipun saya tahu bagaimana dan mengapa itu dimasukkan ke developer.apple.com, saya sangat lebih efektif dalam menggunakannya dan menemukannya ketika saya menggunakan Xcode untuk menelusuri dokumen.
bmike