2012-02-02 3 views
1

".NET CLR LocksAndThreads"범주의 "Contentions 수"및 "Queue Length Peak"창 성능 카운터의 차이점은 무엇입니까? MSDN 설명서는 http://msdn.microsoft.com/en-us/library/zf749bat.aspx에서 확인할 수 있습니다..NET 잠금 성능 카운터 차이점

내 혼란은 "응용 프로그램을 시작한 후 관리되는 잠금을 획득하기 위해 대기 한 스레드의 총 수와 비교하여"잠금을 성공적으로 획득하려고 시도한 스레드의 수와 다른 것 "이라고 생각합니다. 본질적으로, 내가 누군가를 의미하는 것으로 해석하는 자물쇠를 얻기 위해 기다리는 것과 그것을 획득하려고 시도 할 때의 차이점은 무엇이며, 자물쇠를 성공적으로 획득하려고 시도하는 것의 차이점은 무엇입니까 ?? 내가 생각할 수있는 유일한 방법은 잠금 획득이 시도되는 방식과 관련이 있습니다. Monitor.TryEnter 대 Monitor.Enter. 나는

+0

나는 그들이 생각 주어진 시간에 다른 것들을 측정. Contentions은 인시던트 수이며 Queue Length는 스레드 수입니다. 아마도 Contentions는 잠금을 즉시 얻을 수 없었던 횟수이고 Queue Length는 즉시 잠금을 얻을 수없는 스레드의 수입니다. – Luke

+0

내가 혼란스러워하는 것은 스레드가 즉시 두 가지 카운트를 계산하지 못하는 방식으로 잠금을 얻지 못하는 경우입니다. 즉, 실패한 각 잠금 획득은 즉시 잠금을 획득하지 못한 스레드의 인스턴스와 즉각적으로 획득하지 못한 잠금의 인스턴스. 문제의 응용 프로그램은 148,411의 "Queue Length Peak"값을 갖고 있지만 "Total # of Contentions"는 255에 불과합니다. – user1185281

+0

모니터가 스핀 록으로 먼저 구현 된 다음 특정 시간이 지나면 읽혀집니다. 대기 상태. 아마도 하나의 카운터는 스핀 잠금이 성공한 횟수이고 다른 하나는 실패한 횟수입니다. 나는 잘 모른다. 문서가 명확하지 않습니다. – Luke

답변

1

을 잠금 획득 할 때 3 가지 시나리오의 생각 : 가) 리소스가 더
B 즉시 획득, 기타 단체에 의해 잠겨) 리소스가 잠겨
을하지만, 자원이 잠겨) 지연
C로 인수, 시간에 발표 하지만, 시간에 발표 획득 시간이 초과되지

주장의

총 # - 시나리오 (C)의 총
큐 길이 피크 - 주에서 가장 스레드 (b)는