Những loại tin nhắn nào mà Keith theo dõi Hoạt động theo dõi với các Tin nhắn và các tin nhắn đã nhận được các cột Tin nhắn và các cột Nhận được?


9

Trong Activity Monitor trên OS X, có thể thêm các cột bổ sung vào chế độ xem danh sách quy trình. Hai cột có sẵn trong danh sách đó là "Tin nhắn đã gửi" và "Tin nhắn đã nhận", lần lượt hiển thị là "Đã gửi Msss" và "Rcvd Msss". Nhân chứng:

Portion of Activity Monitor window showing "Sent Msgs" and "Rcvd Msgs" columns

Activity Monitor đang đề cập đến loại "tin nhắn" nào?

Khi tôi nhìn thấy "tin nhắn", lúc đầu tôi đã nghĩ đến "tin nhắn" Objective-C được gửi đi cùng với objc_msgSend(), nhưng tôi không thể thấy những thứ đó sẽ được hệ điều hành theo dõi như thế nào vì hầu hết các tin nhắn đó sẽ là nội bộ của chính quá trình. Trình gỡ lỗi có thể theo dõi các loại thông báo đó khi được đính kèm, nhưng tôi không thể thấy HĐH làm việc đó mọi lúc - chi phí rất cao.

Vì vậy, tôi đoán đó là những tin nhắn nặng hơn. Chúng có phải là một dạng RPC giữa các quy trình không? Hoặc, những tin nhắn đó gọi từ vùng đất người dùng vào kernel? Tìm kiếm tài liệu tham khảo dứt khoát. Cảm ơn bạn.

Câu trả lời:


7

Những số đó khớp với số lượng tin nhắn vào / ra của Mach, vì vậy bạn có vẻ đúng khi không hiểu chúng là số đếm objc_msgSend.

Bạn có thể tìm hiểu thêm về số lượng tin nhắn cấp cao hơn bằng cách kích hoạt Công cụ (một phần có thể tải xuống miễn phí Bộ công cụ Xcode ) và đào sâu vào một ứng dụng cụ thể để xem tin nhắn nào được gửi và khi nào.

Xcode Instruments screen shot

Nó có thể lọc tất cả các phân bổ cũng như phân bổ liên quan đến ObjC và bạn có thể khai thác chi tiết ở cấp độ thấp hơn nhiều so với chỉ số lượng tin nhắn gửi. Tài liệu chính tắc là một phần của Xcode sẽ giúp bạn hiểu được các thống kê này và cách chúng liên quan đến Trình giám sát hoạt động.

Cụ thể, tìm kiếm NSObjCMessageLoggingEnabledobjc_msgSend trong phần gỡ lỗi Mac OS X - Hướng dẫn công cụ của Tài liệu tham khảo để có được số lượng objC.

Tìm kiếm mach message trong Xcode và tìm phần IPC / Hàng đợi Tin nhắn của phần Hướng dẫn lập trình kernel cho chi tiết hàng đợi tin nhắn mach và những gì làm cho chúng lên. Chúng là lưu lượng nhân IPC cấp thấp hơn nhiều như bạn đã phỏng đoán.

Bạn có thể cũng có thể tìm thấy nó trên developer.apple.com, nhưng có tài liệu cục bộ từ bên trong Xcode có nhiều lợi thế.


1
Cảm ơn - nhưng nó vẫn chưa rõ ràng. Tôi nghi ngờ ba điều. Ý của bạn là xác nhận điều đầu tiên tôi nghi ngờ, tức là objc_msgSend() cuộc gọi theo dõi cho tất cả các quá trình, hoặc các thông điệp nặng hơn đoán?
Chris W. Rea

1
Tôi nghĩ đó là những số objc_msgSend, nhưng bây giờ tôi thấy tôi đã sai. Chúng ánh xạ hoàn hảo đến số lượng tin nhắn mach có sẵn khi bạn chọn một quy trình từ bên trong Activity Monitor. Tôi sẽ sửa lại câu trả lời của mình để đúng hơn và ít sai hơn.
bmike

Cảm ơn! Con trỏ đến Hướng dẫn lập trình hạt nhân đặc biệt hữu ích. Không biết về nó.
Chris W. Rea

Vâng - có rất nhiều tài liệu tuyệt vời, và mặc dù tôi biết làm thế nào và tại sao nó được đưa vào developer.apple.com, tôi rất hiệu quả trong việc sử dụng và tìm thấy nó khi tôi sử dụng Xcode để duyệt các tài liệu.
bmike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.