Я ищу приблизительное значение для сравнения переключения контекста между Windows и Linux (предполагается то же оборудование и аналогичная нагрузка). Я обнаружил, что Windows, похоже, имеет меньший диапазон длин временного интервала, чем Linux (10–120 мс против 10–200 мс), но эта информация не является достоверной.
Я не вижу, какую полезную информацию можно почерпнуть из того, что вы пытаетесь сделать, но вы можете изменить свое тактовое разрешение на машинах с Windows через стандартный Win32 API. Различные приложения в системе, требующие более длительного времени отклика (например, мультимедийные приложения), делают это постоянно. Разрешение часов может быть от 0,5 мс до 15,6 мс и выше. Поэтому сделайте так, чтобы у ваших двух машин было одинаковое разрешение часов.
Windows 7 по умолчанию настроена так, чтобы потоки выполнялись в течение 2 тактовых интервалов, прежде чем будет принято другое решение по расписанию. (То есть, переключать контекст или нет?) Server 2008 R2 по умолчанию настроен на 12 тактовых интервалов между решениями планирования потоков (также известный как квант потока). Идея состоит в том, что с более длинными квантами потока у ОС сервера больше шансов запуска и выполнения клиентского запроса без прерывания. (То есть, меньше переключений контекста.) Но вы не получите такой «быстрой» работы на рабочем столе в серверной версии Windows. (Что вообще никого не волнует.)
Вот пример моего ПК с Win7. Google Chrome фактически призвал к более низкому общесистемному тактовому разрешению, равному 1 мс. Вы можете использовать clockres.exe из Sysinternals, чтобы увидеть ваше текущее и базовое тактовое разрешение, и powercfg.exe, чтобы увидеть, какие приложения меняли ваше тактовое разрешение.
Мой процессор выполняет 3 501 000 000 циклов в секунду (3,5 ГГц), а таймер срабатывает каждые 0,001 секунды. 3501000000 * 0,001 = 3501000 циклов ЦП за тактовый интервал.
1 квантовая единица = 1/3 (одна треть) тактового интервала, поэтому 1 квантовая единица = 1167000 циклов ЦП.
Предполагая, что при частоте 3,501 ГГц каждый цикл процессора составляет 286 пикосекунд, что составляет 333,8 микросекунды на квантовую единицу. Поскольку мой компьютер настроен на кванты потоков с 2 тактовыми интервалами, а каждый тактовый интервал составляет 3 квантовых единицы, это означает, что мой компьютер принимает решение о планировании потоков примерно каждые 2 миллисекунды.
Давайте даже не будем углубляться в кванты потоков переменной длины или вытесняющий планировщик (поток не успевает завершить свой квант до того, как его вытеснит другой поток с более высоким приоритетом).
Так что ваш эксперимент по сравнению переключения контекста в двух разных операционных системах, работающих с совершенно разными наборами кода, все еще не имеет для меня смысла, но, возможно, это помогает, по крайней мере, на стороне Windows.