활동 모니터는 "보낸 메시지"및 "수신 된 메시지"열을 통해 어떤 종류의 "메시지"를 추적합니까?


9

OS X의 활동 모니터에서 프로세스 목록보기에 추가 열을 추가 할 수 있습니다. 해당 목록에서 사용 가능한 두 개의 열은 "보낸 메시지"및 "수신 된 메시지"이며 각각 "보낸 메시지"및 "Rcvd 메시지"로 표시됩니다. 증거:

"보낸 메시지"및 "Rcvd 메시지"열을 표시하는 활동 모니터 부분

Activity Monitor는 어떤 종류의 "메시지"를 나타 냅니까?

"메시지"를 보았을 때, 처음에 Objective-C "메시지"와 함께 발송되었다고 생각 objc_msgSend()했지만, 이러한 메시지의 대부분은 프로세스 자체에 포함되므로 운영 체제에서 메시지를 추적하는 방법을 볼 수 없습니다. . 디버거가 연결되면 이러한 종류의 메시지를 추적 할 수 있지만 OS가 항상 그렇게하는 것을 볼 수는 없습니다-매우 높은 오버 헤드.

그래서 나는 그것들이 더 무거운 메시지라고 생각합니다. 프로세스 간 RPC 형태입니까? 아니면 이러한 메시지가 사용자 영역에서 커널로 호출됩니까? 확실한 참조를 찾고 있습니다. 감사합니다.

답변:


7

이 숫자는 Mach 메시지의 입 / 출력 수와 일치하므로 objc_msgSend 수로 해석하지 않는 것이 올바른 것 같습니다.

계측기 (무료로 다운로드 할 수있는 Xcode 도구 세트 의 일부 )를 시작하고 특정 응용 프로그램을 파헤쳐 어떤 메시지가 언제 전송되는지 확인할 수 있습니다.

Xcode Instruments 스크린 샷

ObjC와 관련된 할당뿐만 아니라 모든 할당을 필터링 할 수 있으며 메시지 전송 횟수보다 훨씬 낮은 수준의 세부 정보를 파헤칠 수 있습니다. Xcode의 일부인 정식 문서는 이러한 통계와 활동 모니터와의 관계를 이해하는 데 도움이됩니다.

특히, 검색 NSObjCMessageLoggingEnabledobjc_msgSend맥 OS X 디버깅 마법에 - 도구를 참조 문서의 가이드 부분을 objC 카운트에서 얻을 수 있습니다.

mach messageXcode에서 검색 하여 커널 프로그래밍 안내서 의 IPC / 메시지 큐 섹션에서 자세한 메시지 큐 세부 사항 및 구성 요소를 찾으십시오 . 예상 한대로 훨씬 낮은 수준의 IPC 커널 트래픽입니다.

아마 developer.apple.com에서도 찾을 수 있지만 Xcode 내에서 로컬로 문서를 보유하면 많은 장점이 있습니다.


1
고마워-그러나 아직 명확하지 않다. 나는 세 가지를 의심했다. 내가 의심 한 첫 번째 사항, 즉 모든 프로세스에 대한 objc_msgSend()통화 추적되는지 또는 더 무거운 메시지가 추측되는지 확인 했습니까?
Chris W. Rea

1
나는 이것들이 objc_msgSend 카운트라고 생각했지만 지금은 내가 틀렸다는 것을 알았다. 활동 모니터 내에서 프로세스를 선택할 때 사용 가능한 마하 메시지 수에 완벽하게 맵핑됩니다. 더 정확하고 덜 잘못되도록 답변을 수정하겠습니다.
bmike

감사! 커널 프로그래밍 안내서에 대한 포인터가 특히 유용합니다. 그것을 몰랐다.
Chris W. Rea

그렇습니다. 놀라운 문서가 많이 있으며, developer.apple.com에 게시 된 방법과 이유를 알고 있지만 Xcode를 사용하여 문서를 탐색 할 때 문서를 사용하고 찾는 데 훨씬 효과적입니다.
bmike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.