David Solomon - Windows internals: Process and thread trobleshooting - Part 1
David Solomon 이 외부 강의를 한 내용을 정리 해 보았습니다. 작업관리자에서 응답없음이나 실행 중 으로 나타나는 것의 원리를 알게된 것이 가장 좋았습니다.
https://www.microsoft.com/emea/spotlight/sessionh.aspx?videoid=55&PUID=00030000804624B5
만약 Interrupt 를 많이 발생시키는 Device Driver 가 있으면 Idle 에 CPU Time 이 증가되어 있을 것입니다.
1. Process and thread trobleshooting
작업관리자의 Application 안의 작업 안에 보여주는 것은 자신의 session 안의 것만 보여줍니다. 다른 session 의 것은 보여주지 않습니다.
작업관리자에서 Running 이라는 것은 실제적으로는 Thread 가 동작하지 않고 Windows Message 를 기다리는 것입니다. Not responding 은 windows messages 를 기다리고 있지 않다는 것으로 thread 가 다른 일을 하고 있다는 것입니다. loop 를 돌고 있거나 Windows Message event 와 상관없는 다른 것을 기다리고 있는 것입니다.
내컴퓨터->속성->고급->성능(설정)->고급 프로세서 사용 계획에서 프로그램을 선택하면 Thread 가 짧은 term 으로 schedule 됩니다. Server 가 thread schedule 간격이 더 깁니다. 이것은 일반 PC 에서는 좀더 빠른 반응을 하기 위한 것이고 server 에서는 좀 더 많은 많은 일을 처리 하기 위한 것입니다.
svchost.exe 는 dll 이 동작하게 해주는 서비스 입니다.
Linux 에서도 많은 드라이버가 있다면 문제가 많이 발생할 것입니다.
processExplorer 에는 Driver 가 embedded 되어 있습니다.
ProcessExplorer 에서 pause 를 시켜놓고 F5 를 눌러서 변경 사항을 확인하게 하는 것이 문제 파악을 하기 편합니다. high light 보여지는 시간을 결정할 수 있습니다.
어떤 Anti Virus vender 에서 Client 가 접속 할 때마다 Process 를 생성해서 검사하는 방식을 사용하였는데 unix 와는 달리 Process 생성에 많은 CPU Power 가 필요하므로 Design 을 변경해야 했었습니다.
kernel event tracing
tracelog.exe (Windows XP 또는 2003 support tool)
tracerpt.exe - produces report
Process Explorer 의 기능 설명
image verify 를 사용해서 올바른 image 인지를 확인할 수 있습니다.
Process 의 Start time 을 볼 수 있습니다.
speed 를 pause 로 해 놓고 어떤 동작을 한 후 F5 를 눌러서 변화를 살펴보면 변경된 내용을 알 수 있습니다.
Find Windows's process 를 사용해서 해당 Windows 의 Process 를 찾을 수 있습니다.
Process 의 속성에 따라서 Highlighting 설정 가능합니다. (New, Delete, .NET, Job 등 )
tlist 나 tasklist 를 사용하면 svchost 에서 어떤 것을 service 하고 있는지 이름을 알 수 있습니다.