中断频繁,有时会死机

中断频繁,有时会死机

我们有一个 Win 2003 R2 TS (x86),它有时会出问题。直到现在我还没有亲自收集这方面的数据,但似乎大多数时候它运行良好,但有时我们会看到 CPU 使用率过高,很可能是中断造成的。

使用 procexp 我可以看到中断的峰值与其他非常相似的 TS 相比是不正常的。我没有这个特定“好日子”的基线,但问题就在那里。中断 CPU 使用率范围约为 1-10%,大多在 3% 左右。

Krview 显示以下内容(除外):

Module           Hits       %Total
intelppm         12195      48%
ntkrnlpa          8994      35%
win32k            1545       6%
hal                984       3%

通常我看到 intelppm >98%,这看起来像是正常的中断情况。

放大 ntkrnlpa 后显示如下内容:

Module                                Hits   msec  %Total  Events/Sec
NtBuildNumber                          1075      14031     9 %     1915401
RtlCaptureContext                      1062      14031     9 %     1892238
ZwYieldExecution                        991      14031     8 %     1765733
NtFreeVirtualMemory                     803      14031     6 %     1430760
SeMarkLogonSessionForTermination        638      14031     5 %      136768
KeFlushEntireTb                         577      14031     4 %     1028080
KiDispatchInterrupt                     535      14031     4 %      953246
ExAllocatePoolWithTag                   494      14031     4 %      880193
KeAreAllApcsDisabled                    453      14031     3 %      807141
wctomb                                  441      14031     3 %      785760
...

这是我遇到的难题...我不知道为什么这些函数会导致中断,也不知道哪些程序正在调用它们。有人能帮我解决这个问题吗?

我们运行了十几个会计应用程序,其中一些在 softgrid (app-v) 和 MS Office 上运行。Taskman 没有指出任何明显的不良流程。

我唯一一次看到类似行为是在 VMWare VM 上使用过时/不匹配的 vmtools 时。此服务器在物理刀片上运行,与大约 14 个其他表现良好的 TS 相同。

不,这不是 PIO 模式。:-)

答案1

每个系统调用(内核函数)都会导致中断。不过,我不确定这些是否能解释性能不佳的原因。此外,要查看哪些程序正在调用它们,最好深入研究特定进程;本质上,您正在做的是内核中断分析(ntkrnlpa 是物理地址扩展 NT 内核)。

鉴于 SeMarkLogonSessionForTermination 和 NtBuildNumber 的使用率如此之高,可能有某种原因导致该服务器比其他服务器更频繁地建立和拆除会话,但这似乎不是一个可能的原因。

症状究竟是什么?检查硬件可能是个好主意。

相关内容