Интервал разрешения таймера ядра Windows по умолчанию — 15,6 миллисекунды, он же максимальный интервал. Это значит, что как минимум 64 раза в секунду ядро операционной системы издает периодическое прерывание (тактовый тик). Частоту прерываний можно существенно повысить, хотя Microsoft не рекомендует делать это, особенно на мобильных устройствах (ноутбук) из-за значительного повышения расхода электроэнергии.
Microsoft решила проблему в Windows 8, перейдя на таймер без прерываний (tickless timer). На графике показаны замеры по времени в режиме ожидания процессоров, работающих под операционными системами Windows 7 и Windows 8 (source). В Windows 7, как и в предыдущих версиях Windows, этот интервал не превышает 15,6 миллисекунд.
Программист из компании Valve Брюс Доусон провел собственное расследование — и выяснил, что в предыдущих версиях Windows частоту таймера повышали различные программы Microsoft, в том числе Visual Studio 11 из-за бага в WPF, SQL Server и проч.
Таким образом, программисты Microsoft ответственны за «мегаватты излишне потраченной человечеством энергии», с иронией пишет Доусон. Впрочем, в повышении частоты таймера замечен также браузер Google Chrome.
Узнать текущее частоту тиков таймера можно с помощью утилиты clockres.
ClockRes v2.0 – View the system clock resolution Copyright (C) 2009 Mark Russinovich SysInternals – http://www.sysinternals.com Maximum timer interval: 15.600 ms Minimum timer interval: 0.500 ms Current timer interval: 1.000 ms
Для изменения настроек таймера и установки интервала обратно на 15,6 миллисекунды с целью экономии заряда аккумуляторов используйте timeBeginPeriod. Оценить расход энергии в разных режимах таймера можно с помощью утилиты Intel Power Gadget на совместимых процессорах Intel.
По оценке Доусона, повышение разрешения системного таймера Windows приводит к повышению энергопотребления примерно на 0,3 Ватта, а также уменьшает производительность компьютера на величину от 2,5% до 5% из-за того, что ядро системы чаще обращается к процессору.