Разгон и торможение Windows NT



         

Листинг2 измеритель скорости переключения процессов


Даже при небольшом количестве процессов система значительно "проседает" под нагрузкой и начинает ощутимо притормаживать, а количество переключений контекстов сокращаются приблизительно вдвое. I486C ядро по-прежнему держится впереди, что не может не радовать, к тому же с ним система намного более оживленно реагирует на внешние раздражители (в частности, клавиатурный ввод). Быстродействие подсистемы ввода/вывода специально не тестировалось, но по субъективным ощущениям I486C и с этим справляется намного быстрее.

Желающие подкрепить экспериментальные данные доброй порцией дизассемблерных листингов, могут самостоятельно проанализировать функции планировщика, если конечно, ухитрятся выдрать их из ядра! Далеко не всем исследователем недр Windows удалось это сделать…

Задумайтесь: если ядро львиную долю процессорного времени тратит на переключение контекстов, не означает ли это, что наиболее интенсивно вызываемыми функциями окажутся функции, принадлежащие планировщику? Запускаем нашу тестовую программу, подключаем Microsoft Kernel Profiler (или любой другой профилировщик ядра по вкусу) и дав ему на сбор статистки порядка десяти секунд, внимательно изучим полученный результат:

   4484              ntoskrnl.exe ExReleaseResourceForThread

   4362              ntoskrnl.exe KiDispatchInterrupt

   4333              ntoskrnl.exe SeTokenImpersonationLevel

   2908              ntoskrnl.exe KeDelayExecutionThread

   2815              ntoskrnl.exe KiIpiServiceRoutine

    300              ntoskrnl.exe RtlPrefetchMemoryNonTemporal

     73              ntoskrnl.exe KeDisconnectInterrupt

     41              ntoskrnl.exe ExFreePoolWithTag




Содержание  Назад  Вперед