dump文件中"Wait Start TickCount"和"Ticks"的含义

The meaning of "Wait Start TickCount" and "Ticks" in dump file

当我使用WinDBG分析一个内核模型转储文件时,我可以得到某个线程的信息。但是有些项目让我感到困惑。

所以请帮我理解以下关键字的含义。谢谢。

  1. 等待开始 TickCount

  2. 刻度

  3. 用户时间

  4. 内核时间


这是一个例子。

    THREAD b6b48908  Cid 1038.10b0  Teb: 7ffac000 Win32Thread: fd517868 WAIT: (WrUserRequest) UserMode Non-Alertable
        b5700630  SynchronizationEvent
    IRP List:
        b6ae6ab8: (0006,01d8) Flags: 00060000  Mdl: 00000000
    Not impersonating
    DeviceMap                 95bd9310
    Owning Process            b5614788       Image:         iexplore.exe
    Attached Process          N/A            Image:         N/A
    Wait Start TickCount      27465609       Ticks: 109779 (0:00:28:32.563)
    Context Switch Count      38627             
    UserTime                  00:00:00.717
    KernelTime                00:00:00.421
    Win32 Start Address 0x6a6439a0
    Stack Init b8b7ded0 Current b8b7d8e0 Base b8b7e000 Limit b8b7b000 Call 0
    Priority 11 BasePriority 8 UnusualBoost 0 ForegroundBoost 2 IoPriority 2 PagePriority 5
    ChildEBP RetAddr  Args to Child              
    b8b7d8f8 8328aefd b6b48908 8333d008 83339e20 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])
    b8b7d930 83289d57 b5700630 b6b48908 b6b489ec nt!KiSwapThread+0x266
    b8b7d958 83285af4 b6b48908 b6b489c8 00000000 nt!KiCommitThreadWait+0x1df
    b8b7dad4 94bac293 00000001 b8b7db0c 00000001 nt!KeWaitForMultipleObjects+0x535
    b8b7db44 94bac06c 000025ff 00000000 00000001 win32k!xxxRealSleepThread+0x20b (FPO: [SEH])
    b8b7db60 94ba90b4 000025ff 00000000 00000001 win32k!xxxSleepThread+0x2d (FPO: [3,0,0])
    b8b7dbb8 94bac685 b8b7dbe8 000025ff 00000000 win32k!xxxRealInternalGetMessage+0x4b2 (FPO: [SEH])
    b8b7dc1c 83249dc6 0295c7dc 00000000 00000000 win32k!NtUserGetMessage+0x4d (FPO: [SEH])
    b8b7dc1c 77366bf4 0295c7dc 00000000 00000000 nt!KiSystemServicePostCall (FPO: [0,3] TrapFrame @ b8b7dc34)
    0295c790 00000000 00000000 00000000 00000000 ntdll!KiFastSystemCallRet (FPO: [0,0,0])

Wait Start TickCount 是线程开始等待的计算机内部时间表示,即线程从状态 "running" 变为状态 "waiting" 的时间。

Ticks 是 Wait Start TickCount 到现在的差值。这些值可能会影响线程调度(与其他值一起,例如优先级)。

Usertime 是线程在顶部具有用户模式函数的调用堆栈的时间量。

Kerneltime 是线程在顶部具有内核模式函数的调用堆栈的时间量。这应该对应于用户模式调试中 !runaway 显示的值。这两个时间都不包括等待时间,只包括线程真正执行 CPU 条指令的实际 运行 时间。