1

I am looking a dump file collected from production environment for high cpu usage. I ran !threadpool and !runaway command as follows

0:000> !ThreadPool
CPU utilization: 100%
Worker Thread: Total: 6 Running: 2 Idle: 4 MaxLimit: 32767 MinLimit: 4
Work Request in Queue: 0
--------------------------------------
Number of Timers: 8
--------------------------------------
Completion Port Thread:Total: 8 Free: 3 MaxFree: 8 CurrentLimit: 8 MaxLimit: 1000 MinLimit: 4

0:000> !runaway
ERROR: !runaway: extension exception 0x80004002.
    "Unable to get thread times - dumps may not have time information"

I want to know what threads are consuming most cpu time but I cannot run !runaway command. Are there any other commands in sos, sosex or any other extension that could be helpful in this case?

4

1 回答 1

2

您需要一个工具来将必要的信息添加到转储中。

在 WinDbg 中,该.dump命令具有/mtMiniOption,它

向 minidump 添加额外的线程信息。这包括线程时间,可以在调试 minidump 时使用!runaway扩展名或.ttime(显示线程时间)命令显示。

(重点:WinDbg 中的链接)

t选项也包含在a选项中,所以.dump /ma也很好。

要确定您的转储是否包含该信息,请使用未记录的命令,.dumpdebug如下所示:

.shell -ci ".dumpdebug" findstr "MiniDump"

如果有一条线

1000 MiniDumpWithThreadInfo

信息已包含在内,您有不同的问题。如果不存在,则时间信息不可用。

我知道的大多数其他工具都没有提供如此详细的设置,因此无论是否包含此信息,都或多或少是运气。

于 2016-04-14T10:02:01.687 回答