컴퓨터를 종료하는 데 시간이 오래 걸립니다.
범인을 어떻게 식별 할 수 있습니까? 컴퓨터가 종료 될 때까지 몇 분 정도 기다리지 않습니다 ...
종료하는 데 걸리는 시간을 추적하는 데 사용할 수있는 프로그램이 있습니까?
컴퓨터를 종료하는 데 시간이 오래 걸립니다.
범인을 어떻게 식별 할 수 있습니까? 컴퓨터가 종료 될 때까지 몇 분 정도 기다리지 않습니다 ...
종료하는 데 걸리는 시간을 추적하는 데 사용할 수있는 프로그램이 있습니까?
답변:
Windows는 성능 카운터 와 이벤트 추적 을 제공하여 응용 프로그램에서 성능 분석을 수행 할 수 있도록하여 성능 문제의 원인을 정확히 파악할 수 있도록합니다.이 중 하나의 툴킷 은 Windows SDK 에서 사용할 수있는 Windows 성능 툴킷 입니다.
당신은 발견 할 것이다 툴킷에 xbootmgr.exe
대한 의미, 윈도우 온 / 오프 전환 성능 분석 .
위의 링크 된 문서가 모든 켜기 / 끄기 전환에 대한 모든 세부 사항을 xbootmgr
다루고 있지만 xperf GUI를 사용하여 종료 전환을 추적하고 분석하는 일반적인 아이디어는 다음 과 같습니다.
Windows SDK를 다운로드 한 다음이를 사용하여 Windows Performance Toolkit을 설치하십시오.
관리자 권한으로 명령 프롬프트를 연 후 다음을 실행하십시오.
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
나중에 도움이 필요하면을 입력 xbootmgr -help
해도됩니다 xperf /?
.
다음과 같이 재부팅 추적을 수행하십시오.
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
부팅 후 2 분 내에 추적이 생성됩니다.
트레이스가에 저장되었습니다 %ProgramFiles%\Microsoft Windows Performance Toolkit
.로 드래그 xperf.exe
하면 GUI에서 열립니다.
그래프가 다른 GUI가 표시되며 왼쪽의 화살표를 사용하면 그래프를 추가 / 제거 할 수 있습니다.
그래프를보고 평범하지 않은 것을 식별 할 수 있는지 확인하고 원하는 경우 간격을 선택하고 확대 할 수 있습니다. 전체를 보려면 마우스 오른쪽 버튼을 클릭하고 확대를 취소하십시오.
각 그래프에 대해 마우스 오른쪽 버튼을 클릭 하여 현재 선택된 간격에 대한 요약 테이블을 얻을 수 있습니다 .
이 표에서 무게 또는 시간별로 정렬하여 어느 것이 가장 많이 소비되는지 파악하십시오. 열을 드래그 할 수 있으므로 예를 들어 I / O 테이블을 사용하면 최고 사용 경로와 최고 사용 프로세스를 확인할 수 있습니다.
나누기 (노란색 머리글 열)는 오른쪽 열이 왼쪽 열의 합계를 표시하도록 만듭니다. 따라서 경로가 먼저 있고 프로세스가있는 경우 파일의 트리를 열어 액세스 한 프로세스를 확인한 다음 해당 프로세스 / 파일 조합에 대한 총계를 얻을 수 있습니다.
여기 에서 그래프와 테이블의 기능에 대한 자세한 정보를 찾을 수 있습니다 .
스택 추적을 조사하기 위해 어떻게 든 내려 가야하는 경우; 다른 부트 추적을 수행하고 -stackWalk profile
매개 변수를 추가하고 _NT_SYMBOL_PATH를 설정하고 그래프를 마우스 오른쪽 단추로 클릭 한 후 "부하로드"를 활성화하십시오. 이를 통해 실제로 호출하는 기능을 확인할 수 있습니다. 일반적으로 종료시에는 필요하지 않습니다. 그러나 방화벽이 프로그래머로서 디버거를 방해한다는 것을 발견하는 것과 같은 것을 허용 할 수 있습니다. 꽤 근사하다 ...
행운을 빕니다, 당신이 범인을 찾을 수 있기를 바랍니다. 그렇지 않으면 추적을 삭제하고 우리가 당신을 살펴볼 것입니다 ...
DPC는 지연된 프로 시저 호출 이고 인터럽트는 소프트웨어 인터럽트 이며 둘 다 드라이버 / 하드웨어와 관련이 있습니다.
실행 시간이 오래 걸리는 종료. 다음은 Tom 's answer의 예입니다 .
첫 번째 그래프는 디스크 I / O 문제를 보여줍니다 .
종료 시간이 1 분 이상 걸리고 모든 하드 드라이브 I / O입니다.
다음 그래프 인 디스크 사용률 은 드라이브 사용률 이 100 %로 거의 최대 값임을 나타냅니다.
마지막 그래프는 프로세스 별 디스크 사용률을 보여줍니다 .
아래로 필터링하면 모든 원인이 있음을 알 수 있습니다 WinInit.exe
.
하드 드라이브 그래프를 마우스 오른쪽 버튼으로 클릭하고 Summary Table을 선택 하면 어떤 프로세스에서 어떤 파일에 액세스했는지 세부 정보를 얻을 수 있습니다.
종료 시간 56.4 초에 WinInit
6.7GB를 기록했습니다 C:\hiberfil.sys
.
그러나 문제는 Windows가 종료시 내 동면 파일에 쓰는 이유 는 무엇입니까?
그런 다음 종료시 해당 페이징 파일 을 지우도록 설정 한 옵션을 기억했습니다 .
그래서 옵션을 비활성화하고 xbootmgr
다시 실행 하십시오. 이제 종료 시간은 22 초입니다.
지금 9s
의 22s
종료가 지출되고 System
일부에 쓰는 unknown
파일. 더 많은 조사가 필요합니다.
그러나 지금은 1 분 반의 종료를 해결했습니다.
나는 더 나아가서 22 초 느린 종료를 해결했습니다. t =에서 12s
t에 = 21s
100 % 보여 주었다 디스크 사용률 ,하지만 제로 디스크 I / O . 당황했다.
한 번 종료 할 때까지 내 드라이브 중 하나가 회전하는 소리가 들렸습니다. Windows가 휴면 상태 인 디스크에 액세스하려고했기 때문에 종료가 9 초 동안 정지되었습니다. 9 초 후 드라이브가 응답하고 잠시 후 기계가 꺼졌습니다.
아이러니하게도 Windows가 디스크를 깨워서 절전 모드로 전환 할시기임을 알려줍니다.
실제 종료 시간은 13.5 초입니다. 더 많은 조사가 필요합니다. 그러나 지금은 22 초 종료를 해결했습니다.