• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

Deferred Procedure Call (DPC) 대기 시간 검사기

sotheb sotheb

0

0

e46f9a687b5ebd409820dbc17a22d150.jpg

 

 

 

DPC Latency Checker는 테스트 간격으로 표시된 간격으로 주기적으로 내부 통계 데이터를 업데이트합니다 이 통계 데이터는 쿼리되어 화면에 초당 한 번 표시됩니다. 현재 대기 시간 값은 마지막 초에서 측정 된 최대 DPC 지연을 나타낸다. Absolute Maximum으로 표시된 값 은 도구가 시작된 이후 측정 된 최대 대기 시간을 나타냅니다. 재설정 버튼을 사용 하여이 값을 지우십시오.

 

막대 그래프는 현재 대기 시간 값을 시간별로 보여줍니다. 각 막대는 1 초 이내에 발생한 최대 DPC 대기 시간을 나타냅니다. 가장 최근 값이 가장 오른쪽 막대로 표시됩니다. 매초마다 막대가 오른쪽에서 왼쪽으로 스크롤되고 새 막대가 오른쪽에서 추가됩니다.

 

대기 시간 분석은 중지 버튼 을 사용하여 중지 할 수 있습니다 버튼을 다시 클릭하면 도구가 DPC 대기 시간 측정을 다시 시작합니다.

 

아래 그림에는 일반적인 문제 시나리오가 나와 있습니다. 과도한 DPC 대기 시간은 빨간색 막대로 표시됩니다.

 

bce41aef205753cea026bf36e9f818e3.jpg

 

 

 

 

DPC Latency Checker로 드롭 아웃 문제 분석

장치 관리자에서 한 번에 하나씩 개별 장치를 비활성화하십시오.
장치를 비활성화하려면 해당 항목 (예 : 이더넷 어댑터)을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 사용 안 함을 선택하십시오. Windows는 비활성화 된 장치에 아래 그림과 같이 적색 십자가 표시를합니다. 장치를 다시 활성화하려면 컨텍스트 메뉴에서 사용을 선택하십시오. 

 

단일 장치를 비활성화 한 후에는 DPC 대기 시간 검사기를주의 깊게 관찰하십시오. 과도한 대기 시간 값이 사라지면 담당 장치 드라이버를 찾았습니다. 예외적 인 대형 DPC 대기 시간이 여전히있는 경우 다음 장치를 사용해보십시오.

 

많은 경우 DPC 대기 시간 문제는 특정 유형의 장치로 인해 발생합니다. 따라서 먼저 아래에 나열된 장치 유형을 시도해야합니다.

  • 이더넷 및 무선 LAN (W-LAN) 용 네트워크 어댑터
  • 내부 모뎀
  • 내부 사운드 장치 (온보드 사운드 시스템)
  • 모든 PCI 또는 PCI Express 추가 카드, PC 카드 또는 ExpressCard (예 : TV 튜너 카드, ISDN 또는 DSL 어댑터, 모뎀 등)

 

경고 : 컴퓨터가 작동하는 데 필수적인 장치를 비활성화하지 마십시오!

사용 중지 해서는 안됩니다 .

 

  • 장치 관리자의 시스템 장치 또는 컴퓨터 아래에 나열된 장치,
  • 시스템 파티션이 들어있는 하드 디스크,
  • 이 하드 디스크가 연결된 IDE / ATAPI 또는 SATA 컨트롤러,
  • 시스템 키보드,
  • 마우스, 트랙 포인트 또는 터치 패드 장치,
  • USB 컨트롤러 외장 키보드 및 / 또는 마우스 장치가
  • 디스플레이 컨트롤러 아래에 나열된 디스플레이 컨트롤러

드롭 아웃을 담당하는 장치 드라이버를 확인한 후 장치 공급 업체의 웹 사이트 또는 고객 지원부에 문의하여이 드라이버의 업데이트를 찾으십시오. 이것이 가능하지 않은 경우 스트리밍 응용 프로그램을 사용하는 동안 해당 장치를 사용하지 않도록 할 수 있습니다.

 

위에서 설명한 방법을 사용하면 문제를 일으키는 장치 드라이버를 명확하게 식별하지 못할 수도 있습니다. 이러한 상황에서는 Microsoft에서 제공하는 RATT 도구를 사용해보십시오. 그러나 RATT는 사용하기 쉽지 않으며 분석 결과를 해석하기가 어려울 수 있습니다. RATT를 다운로드하려면 Google에서 "Microsoft RATTV3"를 검색하십시오.

 

 

배경 정보 : 드롭 아웃이 발생하는 이유

실시간 스트리밍 데이터 처리는 Windows 기반 응용 프로그램 및 장치 드라이버에서 매우 어려운 작업입니다. 이것은 설계 상 Windows가 실시간 운영 체제가 아니기 때문입니다. 적시에 특정 (주기적) 행동을 실행할 수 있다고 보장 할 수는 없습니다.

 

외부 장치에서 또는 외부 장치로 전송되는 오디오 또는 비디오 데이터 스트림은 일반적으로 커널 모드 장치 드라이버에서 처리합니다. 이러한 장치 드라이버의 데이터 처리는 인터럽트 구동입니다. 일반적으로 외부 하드웨어는 인터럽트를 주기적으로 발행하여 드라이버가 다음 데이터 블록을 전송하도록 요청합니다. Windows NT 기반 시스템 (Windows 2000 이상)에는 특정 인터럽트 처리 메커니즘이 있습니다. 장치 드라이버는 인터럽트 루틴에서 즉시 데이터를 처리 할 수 ​​없습니다. DPC (Deferred Procedure Call)는 기본적으로 운영 체제에서 가능한 한 빨리 호출 할 콜백 루틴입니다. 장치 드라이버가 수행하는 모든 데이터 전송은 DPC라는 이름의이 콜백 루틴의 컨텍스트에서 수행됩니다.

 

운영 체제는 장치 드라이버가 예약 한 DPC를 대기열에 보관합니다. 시스템에서 사용할 수있는 CPU 당 하나의 DPC 대기열이 있습니다. 어떤 지점에서 커널은 DPC 대기열을 검사하고 어떤 인터럽트도 처리되지 않고 현재 실행중인 DPC가없는 경우 첫 번째 DPC가 대기열에서 제외되고 실행됩니다. DPC 대기열 처리는 발송자가 스레드를 선택하고 CPU를 할당하기 전에 발생합니다. 따라서 지연 프로 시저 호출은 시스템의 모든 스레드보다 우선 순위가 높습니다.

 

지연 프로 시저 호출 개념은 커널 모드에서만 존재합니다. 모든 사용자 모드 코드 (Windows 응용 프로그램)는 스레드의 컨텍스트에서 실행됩니다. 스레드는 디스패처에 의해 실행되도록 관리되고 예약됩니다.

 

스레드에 대한 선점 형 멀티 태스킹이 있지만 DPC는 DPC 큐의 첫 번째, 첫 번째 특성에 따라 순차적으로 실행됩니다. 따라서 지연 프로 시저 호출에는 일종의 협업 멀티 태스킹 스키마가 있습니다. 과도한 시간 동안 DPC가 실행되면 다른 DPC는 그 시간만큼 지연됩니다. 따라서 특정 DPC의 대기 시간은 해당 DPC 앞에 대기중인 모든 DPC의 실행 시간 합계로 정의됩니다. 합리적인 DPC 대기 시간을 얻으려면 Windows 장치 드라이버 키트 (DDK) 설명서에서 가능한 한 빨리 DPC 루틴을 반환하는 것이 좋습니다. 하드웨어 상태 변경 (폴링)을 기다리는 긴 작업 (특히 루프)은 사용하지 않는 것이 좋습니다.

 

불행히도 많은 기존 장치 드라이버가이 조언을 따르지 않습니다. 이러한 드라이버는 DPC 루틴에서 지나치게 많은 시간을 소비하여 다른 드라이버의 DPC에 대해 큰 대기 시간을 초래합니다. 실시간으로 데이터 스트림을 처리하는 장치 드라이버의 경우 하드웨어가 다음 인터럽트를 발행하기 전에 해당 인터럽트 루틴에서 예약 된 DPC를 실행하는 것이 중요합니다. DPC가 지연되고 다음 인터럽트가 발생한 후에 실행되면 일반적으로 하드웨어 버퍼 오버런이 발생하고 데이터 흐름이 중단됩니다. 드롭 아웃이 발생합니다.

 

 

 

 

 

 

신고공유스크랩
댓글 쓰기를 허용하지 않았습니다.

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?

공유

facebooktwitterpinterestbandkakao story