KR20180072860A - 디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집 - Google Patents

디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집 Download PDF

Info

Publication number
KR20180072860A
KR20180072860A KR1020187017470A KR20187017470A KR20180072860A KR 20180072860 A KR20180072860 A KR 20180072860A KR 1020187017470 A KR1020187017470 A KR 1020187017470A KR 20187017470 A KR20187017470 A KR 20187017470A KR 20180072860 A KR20180072860 A KR 20180072860A
Authority
KR
South Korea
Prior art keywords
device driver
operations
sequence
automatically
self
Prior art date
Application number
KR1020187017470A
Other languages
English (en)
Other versions
KR101949115B1 (ko
Inventor
토마스 프리만
나단 알란 라베
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20180072860A publication Critical patent/KR20180072860A/ko
Application granted granted Critical
Publication of KR101949115B1 publication Critical patent/KR101949115B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses

Abstract

자가 진단 디바이스 드라이버는 기계 명령어들을 저장하는 메모리, 및 디바이스 드라이버와 연관된 운영 이력을 기록하도록 기계 명령어들을 실행하는, 메모리에 커플링되는 프로세서를 포함한다. 프로세서는 또한, 디바이스 드라이버와 연관된 에러를 검출하고, 연관된 드라이버를 서비스로부터 제외시키며, 에러의 검출 바로 이전의 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하기 위한 기계 명령어들을 실행한다. 프로세서는 또한, 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하기 위한 기계 명령어들을 실행한다. 시퀀스가 복제된 후, 디바이스는 서비스로 리턴된다.

Description

디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집
본 설명은 진단 데이터, 더 구체적으로 디바이스 드라이버들에 대한 자동 진단 데이터 수집에 관한 것이다.
디바이스 드라이버들은, 컴퓨터의 호스트 운영 체제와, 연결된 하드웨어 디바이스들 사이의 인터페이스로서 역할한다. 디바이스 드라이버들은 일반적으로, 운영 체제가 키보드, 포인팅 디바이스들, 모니터들, 프린터들, 네트워크 카드들, 저장 디바이스들 등과 같은 내부 및 주변 디바이스들과 통신하는 것을 가능하게 한다. 디바이스 드라이버들은 일반적으로, 응용 프로그램들 또는 호스트 운영 체제로부터 입력/출력(input/output; I/O) 또는 관리상의(administrative) 명령들을 수신한다. 디바이스 드라이버는 이들 명령들을 연관 하드웨어 디바이스에 전달하거나, 명령들을 디바이스 특유의(device-specific) 명령들로 변환하거나, 또는 임의의 사전에 필요한(prerequisite) 또는 후속 관리(management) 작업들을 수행할 수 있다. 디바이스 드라이버들은 일반적으로, 디바이스 드라이버들이 운영 체제 패키지 내에 포함될 수 있지만, 하드웨어 디바이스 제조자에 의해 제공된다.
때로는, 디바이스 드라이버들은 디바이스들을 관리하는 동안 에러들을 만날 수 있다. 디바이스 드라이버들은 또한, 연관 하드웨어 디바이스 또는 호스트 운영 체제로부터 에러 통지들을 수신할 수 있다. 그러한 에러들은 호스트 시스템, 디바이스 드라이버, 하드웨어 디바이스, 또는 이들 컴포넌트들간의 복잡한 상호작용들과 관련될 수 있다. 특히 생산 시나리오들에서, 에러의 근본 원인이 종종 명백하지 않을 수 있다.
결과적으로, 일부 기존 시스템들은, 시스템 개발자들 또는 기술자들과 같은 운영자들이 디바이스 드라이버 에러들을 문제해결하는 것을 지원하는 운영 정보를 기록하는 추적 메커니즘을 구현한다. 그러나, 일반적으로, 상세한 기록을 만드는 것은 시스템 리소스들을 필요로 하며, 이는 시스템 성능에 약영향을 줄 수 있다. 결과적으로, 이용가능한 추적 메커니즘들이 때로는 현장에서 인에이블되지 못한다.
일반적으로, 불충분한 기록된 디버깅 정보가 이용가능하면, 문제해결 프로세스는 비교적 상세한 추적 기록이 일시적으로 인에이블되고 이 문제가 수동으로 재현되는 것을 필요로 할 수 있다. 이 프로세스는 비교적 시간 소모적일 수 있고, 에러를 초래한 단계들의 정확한 시퀀스를 운영자가 실험적으로 재생산할 수 있는 후에만 성공적일 수 있으며, 일부 생산 시나리오들에서 허용가능하지 않을 수 있다.
본 발명의 일 실시예에 따르면, 디바이스 드라이버의 자가 진단을 위한 장치는, 기계 명령어들을 저장하는 메모리, 및 디바이스 드라이버와 연관된 운영 이력을 기록하도록 기계 명령어들을 실행하는, 메모리에 커플링되는 프로세서를 포함한다. 프로세서는 또한, 디바이스 드라이버와 연관된 에러를 검출하고, 에러의 검출 이전의 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하기 위한 기계 명령어들을 실행한다. 프로세서는 또한, 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하기 위한 기계 명령어들을 실행한다.
본 발명의 다른 실시예에 따르면, 디바이스 드라이버에 대한 자가 진단의 컴퓨터로 구현되는 방법은, 디바이스 드라이버와 연관된 운영 이력을 기록하는 단계 및 디바이스 드라이버와 연관된 에러를 검출하는 단계를 포함한다. 방법은, 에러의 검출 이전의 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 단계를 더 포함한다. 방법은 또한, 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하는 단계를 포함한다.
본 발명의 또 다른 실시예에 따르면, 디바이스 드라이버의 자가 진단을 위한 컴퓨터 프로그램 제품은, 디바이스 드라이버와 연관된 운영 이력을 기록하는 것 및 디바이스 드라이버와 연관된 에러를 검출하는 것을 구현하기 위해 프로세서에 의해 실행되도록 구성되는 명령어들로 인코딩되는 비일시적, 컴퓨터 판독가능 저장 매체를 포함한다. 명령어들은 또한, 에러의 검출 이전의 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 것을 구현하도록 구성된다. 명령어들은 또한, 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하는 것을 구현하도록 구성된다.
본 발명의 하나 이상의 실시예의 상세사항들은 첨부된 도면들 및 아래의 설명에 제시된다. 본 발명의 다른 특징들, 목적들, 장점들은 설명 및 도면들로부터, 또한 청구항들로부터 명백해질 것이다.
도 1은 본 발명의 실시예에 따른 예시적인 자가 진단 디바이스 드라이버를 예시하는 블록도이다.
도 2는 도 1의 자가 진단 디바이스 드라이버를 구현할 수 있는 예시적인 일반 컴퓨팅 시스템을 도시하는 개략도이다.
도 3은 본 발명의 실시예에 따른 자가 진단 및 자동 데이터 수집의 예시적인 방법을 나타내는 흐름도이다.
컴퓨터 시스템에 통신가능하게 연결되는 하드웨어 디바이스에 관한 진단 데이터를 자동으로 수집하기 위해 자가 진단 프로세스를 이용하는 예시적인 자가 진단 디바이스 드라이버(10)를 예시하는 도 1에 본 발명의 실시예가 도시된다. 자가 진단 디바이스 드라이버(10)는, 하드 디스크 드라이브(hard disk drive; HDD), 고체 상태 드라이브(solid-state drive; SSD), 다른 저장 디바이스들, 다수의 저장 디바이스들, 그래픽 카드, 네트워크 카드, 프린터, 모니터, 키보드, 포인팅 디바이스, 또는 통신 버스와 같은 하드웨어 디바이스들로 구현될 수 있다. 자가 진단 디바이스 드라이버(10)는, 인에이블/디스에이블 제어부(12), 운영 추적 기록기(14), 에러 검출기(16), 진단 추적 기록기(18), 및 진단 이력 복제기(replicator)(20)를 포함한다.
인에이블/디스에이블 제어부(12)는, 자가 진단 디바이스 드라이버(10)의 자가 진단 기능들을 인에이블 및/또는 디스에이블할 수 있는 드라이버 설정을 저장하도록 호스트 컴퓨터에 의해 구성된다. 일부 실시예들에서, 인에이블/디스에이블 제어부(12)는 명시적 운영자 입력에 의해 설정된다. 다른 실시예들에서, 인에이블/디스에이블 제어부(12)는, 예를 들어 시스템 상태들, 오류율들, 사용 패턴들 등에 기반하여 사용자 정의 정책에 따라 설정된다.
실시예에서, 인에이블/디스에이블 설정은 초기 드라이버 설치 동안 호스트 컴퓨터에 의해 구성되고 설정이 재구성될 때까지 하드웨어 디바이스 내에 상주하는 비휘발성 메모리 내에 유지된다. 대안적인 실시예들에서, 인에이블/디스에이블 설정은, 예를 들어 스타트업 루틴 동안 디바이스가 파워업될 때마다 초기화 루틴 동안 호스트에 의해 설정될 수 있고, 하드웨어 디바이스 내에 상주하는 휘발성 또는 비휘발성 메모리 내에, 호스트 컴퓨터 내에, 또는 호스트 컴퓨터에 통신가능하게 연결되는 다른 디바이스 내에 저장될 수 있다.
자가 진단 기능들이 인에이블된 디바이스의 정상 동작 동안, 운영 추적 기록기(14)는 디바이스 드라이버 동작들 또는 이벤트들의 감소된 또는 최소 운영 이력 로그를 저장하거나, 또는 기록한다. 예를 들어, 실시예에서, 운영 추적 기록기(14)는, 호스트 컴퓨터 운영 체제로부터 자가 진단 디바이스 드라이버(10)에 의해 수신되는 시스템 콜들을 기억하는 추적 파일, 자가 진단 디바이스 드라이버(10)에 의해 하드웨어 디바이스에 송신되는 디바이스 프로토콜 명령들, 및 자가 진단 디바이스 드라이버(10)에 의해 수행되는 내부 디바이스 드라이버 루틴들의 시놉시스를 저장한다.
실시예에서, 운영 추적 기록기(14)는 하드웨어 디바이스 내에 상주하는 비휘발성 메모리 버퍼들 내에 운영 이력 로그를 유지한다. 따라서, 일반적으로, 하드웨어 디바이스의 명령되었거나 또는 명령되지 않은 파워 다운, 비동작의 임의의 기간, 및 하드웨어 디바이스 재시작 및 디바이스 드라이버 초기화 후, 운영 이력 로그가 자가 진단 디바이스 드라이버(10)에게 이용가능할 것이다. 다른 실시예들에서, 운영 추적 기록기(14)는 운영 이력 로그의 일부 또는 모두를 하드웨어 디바이스 내의 휘발성 메모리 버퍼들 내에, 또는 호스트 컴퓨터 또는 다른 저장 디바이스 내에 상주하는 비휘발성 또는 휘발성 메모리 내에 유지한다.
일부 실시예들에서, 운영 추적 기록기(14)는 보충적 운영 정보를 제공하기 위해 개별 추적 로그 엔트리(entry)들과 관련된 추적 메시지들을 추가적으로 저장한다. 예를 들어, 추적 메시지들은 동작 동안 자가 진단 디바이스 드라이버(10)에 의해 사용되거나 또는 생산되는 운영 데이터를 포함할 수 있다.
에러 검출기(16)는 정상 동작들 동안 하드웨어 디바이스 동작 및 드라이버 기능들을 모니터링하고(즉, 하드웨어 디바이스 동작 및 드라이버 기능들에 관한 데이터를 지속적으로, 주기적으로, 간헐적으로 수집하고 평가함) 운영 에러들을 검출하기 위해 운영 정보 및 신호들을 리뷰한다. 자가 진단 디바이스 드라이버(10) 및 하드웨어 디바이스는 에러가 검출될 때까지 정상 모드에서 동작하도록 허용된다. 다양한 실시예들에서, 에러 검출기(16)에 의해 검출될 수 있는 에러들의 유형들의 예시들은, 불충분한 이용가능 시스템 또는 디바이스 리소스들; 디바이스 구성 정보 에러들; 디바이스 리소스 레지스트리 에러들; 디바이스 펌웨어 에러들; 다수의 연결된 디바이스들간의 비호환성들; 비성공적 디바이스 관리 명령들; 사용불가 디바이스; 드라이버 소프트웨어 커럽션(corruption); 또는 디바이스 동작에 영향을 줄 수 이는 임의의 다른 드라이버 또는 디바이스 문제를 포함한다.
에러가 검출되었을 때, 자가 진단 디바이스 드라이버(10)는 인에이블/디스에이블 제어부(12)의 현재 설정을 검증한다. 에러 검출기(16)에 의해 에러가 검출되었을 때 자가 진단 기능이 현재 디스에이블되어 있으면, 자가 진단 디바이스 드라이버(10)는 추적 파일을 저장하지 않는다. 에러 검출기(16)에 의해 에러가 검출되었을 때 자가 진단 기능 설정이 현재 인에이블되어 있을 때, 자가 진단 디바이스 드라이버(10)는 자가 진단 프로시저를 수행하기 위해 정상 동작들을 일시적으로 중단시키고 하드웨어 디바이스를 서비스에서 제거한다.
실시예에서, 하드웨어 디바이스가 서비스로부터 제거되는 기간 동안, 자가 진단 프로시저가 상대적으로 격리되어 완료될 수 있도록 호스트 컴퓨터에 의한 디바이스에의 정상 액세스가 방지되고 디바이스의 정상 동작들이 중단된다. 다른 실시예들에서, 하드웨어 디바이스는 다수의 저장 디바이스들, 예를 들어 RAID(redundant array of independent disks) 또는 드라이브 또는 볼륨 미러링과 같은 다른 리던던시(redundancy) 솔루션을 포함할 수 있다. 이들 실시예들에서, 자가 진단 디바이스 드라이버(10)는, 추가적 저장 디바이스들에 관한 정상 동작들을 지속하는 동안, 에러에 직면한 단일 저장 디바이스만을 서비스로부터 제거할 수 있다.
자가 진단 프로시저를 수행하기 위해, 자가 진단 디바이스 드라이버(10)는 자가 진단 프로시저 전반에 걸쳐 디바이스 드라이버 동작들 또는 이벤트들의 강화된(enhanced) 운영 이력 로그를 저장하거나, 또는 기록하는 진단 추적 기록기(18)를, 예를 들어 최대 서비스가능 모드로 개시한다. 자가 진단 디바이스 드라이버(10)는 진단 추적 기록기(18)를 자동으로, 즉 시스템 개발자 또는 기술자와 같은 운영자에 의한 입력 또는 개입을 필요로 하지 않고 개시한다.
실시예에서, 진단 추적 기록기(18)는 검출된 에러 이벤트에 응답하여 자가 진단 디바이스 드라이버(10)에 의해 수행되고 데이터 프로세싱된 동작 프로시저들의 비교적 완전하고, 상세한 진단 이력 로그를 기억하는 추적 로그를 저장한다. 진단 이력 로그는, 호스트 컴퓨터 운영 체제로부터 자가 진단 디바이스 드라이버(10)에 의해 수신된 시스템 콜들 및 자가 진단 디바이스 드라이버(10)에 의해 하드웨어 디바이스에 송신된 디바이스 프로토콜 명령들뿐만 아니라, 사용된 데이터 피연산자(operand)들의 비교적 완전한 리스트와 함께 내부 디바이스 드라이버 루틴들을 수행하기 위해 자가 진단 디바이스 드라이버(10)에 의해 실행된 동작 단계들의 상세한 해석(account) 및 자가 진단 프로시저 동안 자가 진단 디바이스 드라이버(10)에 의해 생산된 데이터 결과들을 포함한다.
실시예에서, 진단 추적 기록기(18)는 하드웨어 디바이스 내에 상주하는 비휘발성 메모리 버퍼들 내에 진단 이력 로그를 유지한다. 다른 실시예들에서, 진단 추적 기록기(18)는 운영 이력 로그의 일부 또는 모두를 하드웨어 디바이스 내의 휘발성 메모리 버퍼들 내에, 또는 호스트 컴퓨터 또는 다른 저장 디바이스 내에 상주하는 비휘발성 또는 휘발성 메모리 내에 유지할 수 있다. 일부 실시예들에서, 진단 추적 기록기(18)는 보충적 운영 정보를 제공하기 위해 개별 추적 로그 엔트리들과 관련된 추적 메시지들을 추가적으로 저장한다.
자가 진단 프로시저 동안, 진단 이력 복제기(20)는 검출된 에러를 초래한 정상 동작 동안 자가 진단 디바이스 드라이버(10) 및 하드웨어 디바이스에 의해 이전에 수행된 운영 단계들의 정확한 시퀀스를 재생산함으로써 에러를 복사하는 것을 시도하기 위해 운영 이력 로그로부터의 정보를 사용한다. 따라서, 진단 이력 복제기(20)는 자가 진단 디바이스 드라이버(10)에게, 운영 이력 로그 또는 보충적 추적 메시지들 내에 기록된 데이터를 사용하여 운영 이력 로그 내에 반영된 동작들 각각을 시퀀스로 수행하도록 지시한다. 진단 이력 복제기(20)는 운영 이력을 자동으로, 즉 시스템 개발자 또는 기술자와 같은 운영자에 의한 입력 또는 개입을 필요로 하지 않고 복제한다.
예를 들어, 실시예에서, 진단 이력 복제기(20)는 에러 검출기(16)에 의해 에러가 검출된 시간 이전의 설정 간격에서 시작하고 에러가 검출된 시간에 또는 에러가 검출된 시간 이후에 종료되는 시구간에 대응하는 운영 이력 로그의 세그먼트로부터의 디바이스 드라이버 동작들을 복제한다. 대안적인 실시예에서, 진단 이력 복제기(20)는 에러 검출기(16)에 의해 에러가 검출된 포인트 이전의 동작들의 설정 개수에서 시작하고 에러가 검출된 포인트에서 또는 에러가 검출된 포인트 이후에 종료되는 디바이스 드라이버 동작들의 개수에 대응하는 운영 이력 로그의 세그먼트로부터의 동작들을 복제한다. 상세한 진단 데이터가 진단 추적 기록기(18)에 의해 캡처되는 한편, 진단 이력 복제기(20)가 자가 진단 디바이스 드라이버(10)의 운영 이력을 재생산한다.
대안적인 실시예에서, 운영 이력 로그가 프로시저 단계들의 정확한 시퀀스를 규정하기에 불충분하거나 또는 운영 이력 로그 내에 모호성이 존재할 때, 진단 이력 복제기(20)는 다수의 실행들 동안, 복제된 동작들을 반복하는 동안 차이(variation)들을 도입할 수 있다. 예를 들어, 진단 이력 복제기(20)는 에러를 복제하려는 시도로 운영 이력 로그의 반복된 복제들 동안 대안적인 프로시저 브랜치(branch)들을 수행하거나 또는 대안적인 데이터 피연산자들을 사용할 수 있다.
다른 대안적인 실시예에서, 진단 이력 복제기(20)는 후속 디바이스 동작에 영향을 줄 수 있는 시스템 상태 변경들을 도입하는 것을 회피하기 위해, 재현 자가 진단 프로시저 동안 허용되는 명령들 또는 프로시저들을 제한할 수 있다. 실시예에서, 자가 진단 디바이스 드라이버(10)는 자가 진단 프로시저를 완료한 후 시스템 체크를 수행할 수 있다.
자가 진단 프로시저가 완료되면, 자가 진단 디바이스 드라이버(10)는 진단 추적 기록기(18)를 중지하고 하드웨어 디바이스를 서비스 내에 다시 위치시킨다. 디바이스가 서비스에 리턴된 후, 호스트 컴퓨터에 의한 디바이스에의 정상 액세스가 허용되고 정상 동작이 재개된다.
따라서, 자가 진단 디바이스(10)는 검출된 에러를 애초에 초래한 동작들을 수행하는 동안 시스템 레벨에서 상세한 진단 데이터를 자동으로 수집하고 저장한다. 실시예에서, 상세한 진단 데이터는 모든 디바이스 드라이버 대 하드웨어 디바이스 통신들을 포함한다. 일부 경우들에서, 디바이스 드라이버 대 하드웨어 디바이스 통신들은 다수의 호스트 프로세스들 또는 응용 프로그램들에 의해 개시된다. 자동 문제 재현을 용이하게 하는 것에 추가하여, 수집된 시스템 레벨 데이터는 또한, 개별 프로세스 추적 파일들의 수동 검토(examination)와 비교하여 후속 수동 문제 조사(investigation) 동안 매우 유용할 수 있다(예를 들어, 다수의 호스트 프로세스들로부터 비롯된 디바이스 명령들간의 상호작용들로부터 기인하는 에러들의 식별을 지원함).
도 2에 예시된 바와 같이, 도 1의 자가 진단 디바이스 드라이버(10)에 이용될 수 있는 예시적인 일반 컴퓨팅 디바이스(30)는 프로세서(32), 메모리(34), 입력/출력 디바이스(I/O)(36), 저장소(38) 및 네트워크 인터페이스(40)를 포함한다. 컴퓨팅 디바이스(30)의 다양한 컴포넌트들은, 다양한 실시예들에서 예를 들어 어드레스 버스, 데이터 버스, 직렬 버스, 병렬 버스, 저장소 버스, 또는 이들의 임의의 조합을 포함하는 로컬 데이터 링크(42)에 의해 커플링된다.
일부 실시예들에서, 컴퓨팅 디바이스(30)는, 다양한 실시예들에서 설계에 의해 희망되고 필요될 수 있음에 따라, 모뎀들, 액세스 포인트들, 라우터들, 네트워크 인터페이스 카드들, LAN 또는 WAN 인터페이스들, 무선 또는 광학 인터페이스들 등을 포함한, 프로세서 기반 시스템들을 임의의 연관 전송 프로토콜들과 함께 커플링하도록 구성되는 - 임의의 연관 소프트웨어 또는 펌웨어뿐만 아니라 - 예를 들어 디바이스들의 임의의 조합을 포함할 수 있는 네트워크 인터페이스(40)에 의해 통신 네트워크(34)에 커플링된다.
컴퓨팅 디바이스(30)는, 예를 들어 도 1의 자가 진단 디바이스 드라이버(10)의 컴포넌트들의 기능들을 구현하도록 사용될 수 있다. 다양한 실시예들에서, 컴퓨팅 디바이스(30)는, 예를 들어 서버, 워크스테이션, 메인프레임 컴퓨터, 컨트롤러, 개인용 컴퓨터(personal computer; PC), 데스크탑 PC, 랩탑 PC, 태블릿, 노트북, 개인용 디지털 보조기(personal digital assistant; PDA), 스마트 폰, 웨어러블 디바이스 등을 포함할 수 있다. 자가 진단 디바이스 드라이버(10)의 기능들을 수행하기 위해, 컴퓨팅 디바이스(30)에 커플링되는 저장소(38) 또는 주변 저장 컴포넌트와 같은 컴퓨터 판독가능 매체 상에 저장되는 소스 코드, 객체 코드 또는 실행가능 코드와 같은 프로그래밍 코드가 메모리(34) 내에 로딩되고 프로세서(32)에 의해 실행될 수 있다.
이제 도 3을 참조하면, 예를 들어 컴퓨터 시스템에 통신가능하게 연결되는 하드웨어 디바이스에 관한 진단 데이터를 자동으로 수집하기 위한 디바이스 드라이버의 자가 진단에 대한 이 개시에서 설명된 방법의 실시예를 구현하는 도 1의 자가 진단 디바이스 드라이버(10)에 의해 수행될 수 있는 예시적인 프로세스 흐름이 예시된다. 프로세스는, 호스트 컴퓨터 시스템이 위에서 설명된 바와 같은 디바이스 드라이버의 자가 진단 기능을 인에이블하기 위한 인에이블/디스에이블 제어부의 디바이스 드라이버 설정을 구성하는 블록(70)에서 시작한다.
블록(72)에서, 디바이스 드라이버는 위에서 설명된 바와 같이 디바이스의 정상 기능 동안 추적 메커니즘을 사용하여 드라이버 동작들의 운영 이력을 저장한다. 디바이스의 정상 동작들은 블록(74)에서 디바이스 드라이버가 에러를 검출할 때까지 지속된다. 에러가 검출되었을 때, 디바이스 드라이버는 블록(76)에서 자가 진단 프로시저 동안 서비스로부터 디바이스를 제거하고 디바이스에의 액세스를 일시적으로 제한한다.
블록(78)에서, 디바이스 드라이버는 위에서 설명된 바와 같이 자가 진단 프로시저 동안 드라이버 동작들의 강화된 운영 이력, 또는 상세한 진단 이력을 저장한다. 디바이스 드라이버는 위에서 설명된 바와 같이 블록(80)에서 에러 상태들을 재현하려는 시도로 에러 검출의 포인트에 대한 바로 이전의 운영 이력에 기록된 운영 단계들의 시퀀스를 재생산한다. 재현 프로시저 동안 디바이스 드라이버에 의해 상세한 진단 데이터가 캡처된다.
블록(82)에서, 디바이스 드라이버는 상세한 진단 이력 기록을 중지하고, 블록(84)에서 디바이스 드라이버는 감소된 운영 이력을 기록하는 것을 재개한다. 블록(86)에서, 디바이스 드라이버는, 정상 디바이스 동작들이 재개될 수 있도록, 위에서 설명된 바와 같이 디바이스를 서비스에 리턴하고 디바이스에의 정상 액세스를 허용한다.
본원에서 설명된 시스템들 및 방법들은 수동 문제해결에 대한 필요성을 감소기키거나 또는 제거하는 것과 같은 장점들을 제공할 수 있고, 이는 일반적으로 초기 에러 검출과 최종 에러 분석 사이의 시간을 감소시킬 것이다. 이들 시스템들 및 방법들은 검출된 디바이스 드라이버 에러들을 분석하기 위해 필요되는 시스템 리소스들을 시스템 성능에 대한 임의의 연관된 저하와 함께 감소시키거나 또는 최소화할 수 있다.
본 개시의 양태들은, 각각의 블록 또는 블록들의 임의의 조합이 컴퓨터 프로그램 명령어들에 의해 구현될 수 있는, 흐름도 또는 블록도를 참조하여 본원에서 설명된다. 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 기계 또는 제조물품(article of manufacture)을 실시하기 위한 다른 프로그램가능 데이터 프로세싱 장치의 프로세서에 제공될 수 있고, 프로세서에 의해 실행될 때 명령어들은 도면들 내의 각각의 블록 또는 블록들의 조합에 특정된 기능들, 액트들 또는 이벤트들을 구현하기 위한 수단을 생성한다.
이 점에서, 흐름도 또는 블록도 내의 각각의 블록은 특정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 모듈, 세그먼트, 또는 코드의 부분에 대응할 수 있다. 일부 대안적인 구현예들에서, 임의의 블록과 연관된 기능이 도면들에 기재된 순서를 벗어나 발생할 수 있다는 점을 또한 유념해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록들은 사실상 실질적으로 동시에 실행될 수 있거나, 또는 블록들은 때로는 역순서로 실행될 수 있다.
당업자는 본 개시의 양태들이 디바이스, 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다는 점을 이해할 것이다. 따라서, 일반적으로 회로들, 모듈들, 컴포넌트들 또는 시스템들 등으로서 본원에 지칭된 본 개시의 양태들은 그 위에서 구현되는 컴퓨터 판독가능 프로그램 코드를 갖는 컴퓨터 판독가능 매체에서 구현되는 컴퓨터 프로그램 제품들을 포함하여, 하드웨어에서, (소스 코드, 객체 코드, 어셈블리 코드, 기계 코드, 마이크로 코드, 상주 소프트웨어, 펌웨어 등을 포함하는) 소프트웨어에서, 또는 소프트웨어 및 하드웨어의 임의의 조합에서 구현될 수 있다.
다양한 변형들이 이루어질 수 있다는 점이 이해될 것이다. 예를 들어, 개시된 기술들의 단계들이 상이한 순서로 수행된다면, 그리고/또는 개시된 시스템들 내의 컴포넌트들이 다른 컴포넌트들에 의해 상이한 방식으로 조합되고/되거나 대체되거나 또는 보충된다면 유용한 결과들이 여전히 달성될 수 있다. 따라서, 다른 구현예들은 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 디바이스 드라이버의 자가 진단을 위한 장치에 있어서,
    기계 명령어들을 저장하는 메모리; 및
    상기 디바이스 드라이버와 연관된 운영 이력(operational history)을 기록하고, 상기 디바이스 드라이버와 연관된 에러를 검출하며, 상기 에러의 검출 이전의 상기 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하고, 상기 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 상기 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하기 위해 상기 기계 명령어들을 실행하는, 상기 메모리에 커플링되는 프로세서
    를 포함하는, 장치.
  2. 제 1 항에 있어서, 상기 프로세서는 또한, 상기 디바이스 드라이버 동작들의 시퀀스가 자동으로 복제되는 동안 상기 디바이스 드라이버와 연관된 디바이스의 정상 동작들을 중단시키고 상기 디아비스 드라이버 동작들의 시퀀스가 자동으로 복제된 후 상기 디바이스의 정상 동작들을 재개시키기 위한 상기 기계 명령어들을 실행하는 것인, 장치.
  3. 제 1 항에 있어서, 상기 프로세서는 또한, 상기 디바이스 드라이버 동작들의 시퀀스가 자동으로 복제되는 동안 상기 에러를 복사하기 위한 상기 기계 명령어들을 실행하는 것인, 장치.
  4. 제 1 항에 있어서, 상기 프로세서는 또한, 제어 설정을 구성하기 위한 상기 기계 명령어들을 실행하고, 상기 디바이스 드라이버 동작들의 시퀀스는 자가 진단을 인에이블하도록 현재 구성된 상기 제어 설정에 기반하여 자동으로 복제되고 자동으로 기록되는 것인, 장치.
  5. 제 1 항에 있어서, 상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하고 자동으로 기록하기 위한 운영자에 의한 개입을 필요로 하지 않는 것인, 장치.
  6. 제 1 항에 있어서, 상기 운영 이력은 상기 디바이스의 정상 동작의 기간에 대응하는 것인, 장치.
  7. 제 1 항에 있어서, 상기 운영 이력을 기록하는 것은 상기 호스트 컴퓨터와 연관된 복수의 프로세스들과 연관된 디바이스 드라이버 동작들을 기록하는 것을 포함하는 것인, 장치.
  8. 디바이스 드라이버에 대한 자가 진단 방법에 있어서,
    상기 디바이스 드라이버와 연관된 운영 이력을 기록하는 단계;
    상기 디바이스 드라이버와 연관된 에러를 검출하는 단계;
    상기 에러의 검출 이전의 상기 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 단계; 및
    상기 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 상기 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하는 단계
    를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 동안 상기 디바이스 드라이버와 연관된 디바이스의 정상 동작들을 중단시키는 단계; 및
    상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제한 후 상기 디바이스의 정상 동작들을 재개시키는 단계
    를 더 포함하는, 방법.
  10. 제 8 항에 있어서, 상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 동안 상기 에러를 복사하는 단계를 더 포함하는, 방법.
  11. 제 8 항에 있어서, 제어 설정을 구성하는 단계를 더 포함하고, 상기 자동 복제 단계 및 자동 기록 단계는 자가 진단을 인에이블하도록 현재 구성된 상기 제어 설정에 기반해서만 수행되는 것인, 방법.
  12. 제 8 항에 있어서, 상기 운영 이력의 세그먼트는 미리결정된 시구간에 대응하는 것인, 방법.
  13. 제 8 항에 있어서, 상기 운영 이력의 세그먼트는 디바이스 드라이버 동작들의 미리결정된 개수에 대응하는 것인, 방법.
  14. 제 8 항에 있어서, 자동 복제 단계 및 자동 기록 단계는 운영자에 의한 개입을 필요로 하지 않는 것인, 방법.
  15. 제 8 항에 있어서, 명령을 상기 디바이스 드라이버로부터, 호스트 컴퓨터와 통신가능하게 연결된 디바이스에 송신하는 단계를 더 포함하고, 상기 디바이스 드라이버는 상기 호스트 컴퓨터 상에서 실행되는 것인, 방법.
  16. 제 8 항에 있어서, 상기 운영 이력은 상기 디바이스의 정상 동작의 기간에 대응하는 것인, 방법.
  17. 제 8 항에 있어서, 상기 운영 이력을 기록하는 단계는, 상기 호스트 컴퓨터와 연관된 운영 체제로부터 상기 디바이스 드라이버에 의해 수신되는 시스템 콜, 상기 디바이스 드라이버로부터 상기 디바이스에 송신된 명령, 및 상기 디바이스 드라이버에 의해 실행되는 루틴으로 구성되는 그룹으로부터 선택되는 적어도 하나를 기록하는 단계를 포함하는 것인, 방법.
  18. 제 8 항에 있어서, 상기 운영 이력을 기록하는 단계는 상기 호스트 컴퓨터와 연관된 복수의 프로세스들과 연관된 디바이스 드라이버 동작들을 기록하는 단계를 포함하는 것인, 방법.
  19. 디바이스 드라이버의 자가 진단을 위한 컴퓨터 프로그램 제품에 있어서,
    상기 디바이스 드라이버와 연관된 운영 이력을 기록하는 것;
    상기 디바이스 드라이버와 연관된 에러를 검출하는 것;
    상기 에러의 검출 이전의 상기 운영 이력의 세그먼트에 대응하는 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 것; 및
    상기 디바이스 드라이버 동작들의 시퀀스를 복제하는 동안 상기 디바이스 드라이버와 연관된 진단 이력을 자동으로 기록하는 것
    을 구현하기 위해 프로세서에 의해 실행되도록 구성되는 명령어들로 인코딩되는 비일시적, 컴퓨터 판독가능 저장 매체를 포함하는, 컴퓨터 프로그램 제품.
  20. 제 19 항에 있어서, 상기 명령어들은 또한,
    상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제하는 동안 상기 디바이스 드라이버와 연관된 디바이스의 정상 동작들을 중단시키는 것; 및
    상기 디바이스 드라이버 동작들의 시퀀스를 자동으로 복제한 후 상기 디바이스의 정상 동작들을 재개시키는 것
    을 구현하도록 구성되는 것인, 컴퓨터 프로그램 제품.
KR1020187017470A 2016-03-02 2017-03-01 디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집 KR101949115B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/058,834 US10042688B2 (en) 2016-03-02 2016-03-02 Self-diagnosis of device drive-detected errors and automatic diagnostic data collection
US15/058,834 2016-03-02
PCT/US2017/020280 WO2017151821A1 (en) 2016-03-02 2017-03-01 Self-diagnosis of device drive-detected errors and automatic diagnostic data collection

Publications (2)

Publication Number Publication Date
KR20180072860A true KR20180072860A (ko) 2018-06-29
KR101949115B1 KR101949115B1 (ko) 2019-02-15

Family

ID=58632566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187017470A KR101949115B1 (ko) 2016-03-02 2017-03-01 디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집

Country Status (5)

Country Link
US (1) US10042688B2 (ko)
KR (1) KR101949115B1 (ko)
CN (1) CN108431781B (ko)
DE (1) DE112017000210T5 (ko)
WO (1) WO2017151821A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467082B2 (en) * 2016-12-09 2019-11-05 Microsoft Technology Licensing, Llc Device driver verification
US10452459B2 (en) * 2016-12-09 2019-10-22 Microsoft Technology Licensing, Llc Device driver telemetry
US11016862B2 (en) * 2017-05-23 2021-05-25 International Business Machines Corporation Error-initiated mirror redrive to collect diagnostic information
US10599508B2 (en) * 2017-06-08 2020-03-24 International Business Machines Corporation I/O error diagnostics
US11119890B2 (en) * 2019-08-28 2021-09-14 International Business Machines Corporation Instruction level tracing for analyzing processor failure
US11971789B2 (en) * 2020-06-16 2024-04-30 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for crash recovery in storage devices
KR20220010303A (ko) * 2020-07-17 2022-01-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04264627A (ja) 1991-02-19 1992-09-21 Nikon Corp 自己診断装置および方法
US5379414A (en) * 1992-07-10 1995-01-03 Adams; Phillip M. Systems and methods for FDC error detection and prevention
US6467054B1 (en) 1995-03-13 2002-10-15 Compaq Computer Corporation Self test for storage device
US5852720A (en) * 1996-08-16 1998-12-22 Compaq Computer Corp. System for storing display data during first time period prior to failure of computer and during second time period after reset of the computer
US6067262A (en) 1998-12-11 2000-05-23 Lsi Logic Corporation Redundancy analysis for embedded memories with built-in self test and built-in self repair
US6591358B2 (en) 2001-01-26 2003-07-08 Syed Kamal H. Jaffrey Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
WO2002095585A1 (en) * 2001-05-24 2002-11-28 Techtracker, Inc. Program execution stack signatures
US6895500B1 (en) 2001-10-31 2005-05-17 Western Digital Technologies, Inc. Disk drive for receiving setup data in a self monitoring analysis and reporting technology (SMART) command
KR100571782B1 (ko) 2004-01-16 2006-04-18 삼성전자주식회사 프린팅 시스템의 에러 자가 진단 장치 및 그 방법
US20050210329A1 (en) 2004-03-18 2005-09-22 Newisys, Inc. Facilitating system diagnostic functionality through selective quiescing of system component sensor devices
US7366944B2 (en) * 2005-01-14 2008-04-29 Microsoft Corporation Increasing software fault tolerance by employing surprise-removal paths
US7849364B2 (en) 2005-03-01 2010-12-07 Microsoft Corporation Kernel-mode in-flight recorder tracing mechanism
JP4262260B2 (ja) * 2006-05-12 2009-05-13 株式会社日立製作所 内燃機関の診断装置
JP4201034B2 (ja) * 2006-09-04 2008-12-24 ソニー株式会社 映像記録ビデオカメラ装置および映像記録方法、並びにプログラム
US9298568B2 (en) 2008-02-07 2016-03-29 International Business Machines Corporation Method and apparatus for device driver state storage during diagnostic phase
US9064043B2 (en) * 2008-12-19 2015-06-23 Ncr Corporation Fault replay system and method
WO2010097953A1 (ja) 2009-02-27 2010-09-02 富士通株式会社 情報処理装置における障害再現装置及び障害再現方法並びに障害再現プログラム
US8639984B2 (en) * 2011-08-09 2014-01-28 International Business Machines Corporation Checkpoint debugging using mirrored virtual machines
US9417628B2 (en) * 2013-03-13 2016-08-16 Western Digital Technologies, Inc. Production failure analysis system
US9183117B2 (en) 2013-06-20 2015-11-10 Abbott Laboratories Inc. Method for developing and testing a connectivity driver for an instrument

Also Published As

Publication number Publication date
KR101949115B1 (ko) 2019-02-15
CN108431781A (zh) 2018-08-21
DE112017000210T5 (de) 2018-08-09
US20170255535A1 (en) 2017-09-07
US10042688B2 (en) 2018-08-07
WO2017151821A1 (en) 2017-09-08
CN108431781B (zh) 2021-07-20

Similar Documents

Publication Publication Date Title
KR101949115B1 (ko) 디바이스 드라이버 검출 에러들의 자가 진단 및 자동 진단 데이터 수집
US9678682B2 (en) Backup storage of vital debug information
US20170046152A1 (en) Firmware update
CN109032838B (zh) 虚拟机备份恢复数据一致性的自动校验方法
US8145942B2 (en) Methods and systems for troubleshooting remote systems through recreation of remote system scenarios
US10496495B2 (en) On demand remote diagnostics for hardware component failure and disk drive data recovery using embedded storage media
US9256489B2 (en) Synchronized debug information generation
Levy et al. Predictive and Adaptive Failure Mitigation to Avert Production Cloud {VM} Interruptions
US20170364274A1 (en) Software Backup and Restoration Procedures Using Application and File Monitoring
US9280453B1 (en) Method and system for test automation framework for backup and recovery applications
US20220405164A1 (en) Application logging mechanism
US11500854B2 (en) Selective data synchronization to troubleshoot production environment failures
US10514972B2 (en) Embedding forensic and triage data in memory dumps
CN110704228A (zh) 一种固态硬盘异常处理方法及系统
US9817731B2 (en) Acquiring diagnostic data selectively
JP7064225B2 (ja) 改善されたi/oエラー診断法
US11226875B2 (en) System halt event recovery
US11907087B2 (en) Remote health monitoring in data replication environments
US11907102B2 (en) Dynamic debug log enabler for any protection failure jobs
US11016862B2 (en) Error-initiated mirror redrive to collect diagnostic information
US11281694B2 (en) Remote data capture in data replication environments
CN115543672A (zh) 一种错误数据定位方法、装置、设备及存储介质
CN117076209A (zh) 执行计算任务的方法、装置和存储介质
JP2012128755A (ja) ログ判定方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant