У нас есть Win 2003 R2 TS (x86), у которого бывают «плохие дни». Я сам до сих пор не собирал данные об этом, но кажется, что большую часть времени он работает нормально, но в некоторые дни мы наблюдаем высокую загрузку процессора, скорее всего, из-за прерываний.
Используя процедуру, я могу увидеть всплески прерываний, которые не являются нормальными по сравнению с другими очень похожими TS. У меня нет оснований для "хорошего дня" по этому конкретному случаю, но проблема есть. Использование прерываний ЦП колеблется от 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 не указывает на очевидные плохие процессы.
Единственный раз, когда я видел подобное поведение, был с устаревшими / несоответствующими инструментами vmtools на виртуальной машине VMWare. Этот сервер работает на физическом блейд-сервере, как и около 14 других хорошо работающих TS.
И нет, это не режим PIO. :-)
Каждый системный вызов (функция ядра) вызывает прерывание. Я не уверен, что это могло бы объяснить низкую производительность. Кроме того, чтобы увидеть, какие программы их вызывают, лучше всего изучить конкретные процессы; по сути, то, что вы делаете, - это анализ прерываний в ядре (ntkrnlpa - это физическое расширение адреса ядра NT).
Учитывая, что SeMarkLogonSessionForTermination и NtBuildNumber так интенсивно используются, возможно, что-то заставляет этот сервер устанавливать и отключать сеансы чаще, чем другие, но это не кажется вероятной причиной.
Какие именно симптомы? Возможно, стоит проверить оборудование.