문제

Apple Instruments Tools를 사용하여 다중 스레드 응용 프로그램을 분석하고 있습니다. 이는 많은 정보를 제공하고자하는 많은 정보를 제공합니다.공구에서 색상으로 코딩 된 스레드 상태를 설명하기 위해 좋은 자원을 찾으려고합니다.나는 xnu 커널 문서와 책을 들여다 보지만 많은 행운이 없다.

"선취 된"및 "감독자"모드에 해당하는 노란색과 보라색이 많이 있습니다. (전체 컬러 차트는 첨부 된 이미지의 오른쪽 상단 팝업에 설명되어 있습니다).이 주에서는 "달리기"주 (파란색으로)와 반대로이 주에서 많은 시간을 보내고, 나는 그들이 언급 한 것을 알고있는 것과이 주에서 소비 된 시간을 최소화하는 것이 가능하거나 바람직한 지 여부에 특히 관심이있을 것입니다..

여기에 이미지 설명

도움이 되었습니까?

해결책

선점= 스레드가 실행될 수 있으며 준비가되어 있고, 기꺼이 실행 가능했지만 다른 스레드를 찬성하여 (컨텍스트 스위칭) 밖으로 쫓겨났습니다. 즉, 스레드가 I / O 또는 이벤트에서 자고 있지 않고 실제로 CPU 집약적 인 것을 수행하고 있었음을 의미합니다. 그러나 양자 만료 또는 더 큰 우선 순위의 다른 스레드로 인해 CPU에서 벗어났습니다.

supervisor= 스레드가 커널 모드에있었습니다. 일반적으로 이것은 커널이 스레드가 만든 시스템 호출을 서비스하는 것을 의미합니다.

둘다는 엄격하게 나쁘지는 않지만 :

선점 피하기 : 최우선 순위를 가지고있는 것 외에도 여기에서 할 수있는 것은 아니며, SetPriority API를 사용하여 부정적인 멋진 가치를 사용하여 최우선 순위를 높이십시오. 스케줄링 정책을 사용하여 스레드의 선호도를 높이고 Machs 스케줄러 (스레드의 기본 의사 결정자)를 먼저 넣고 더 많은 CPU 시간을 제공합니다.

감독자 모드를 피하는 것 : 시스템 호출에서 무거워 질 수 있습니다. 다시 말하지만, 이것은 반드시 나쁜 것이 아닙니다.

이 도움이되기를 바랍니다

tg

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top