Как стать автором
Поиск
Написать публикацию
Обновить

В Google предложили повысить частоту генерации прерываний от таймера в ядре Linux до 1000 Гц по умолчанию вместо 250 Гц

Время на прочтение3 мин
Количество просмотров31K
Всего голосов 19: ↑18 и ↓1+24
Комментарии63

Комментарии 63

Разница в энергопотреблении - в рамках погрешностей. В производительности - не более 10%. И это, между прочим, один из топовых 12-ядерных процессоров.

Интересные тесты, но хотелось бы видеть результаты на гораздо большем ряде платформ - от недорогих ноутов до серверов, ARM, Intel и пр.

Не забывайте, что тест на одном, а изменения коснутся сначала миллионов, затем миллиардов устройств.

Учитывая же неоднозначность тестирований даже на одном устройстве, лучше ничего не трогать пока не будут разработаны лучшие альтернативы, например, как указали ниже, адаптивные.

НЛО прилетело и опубликовало эту надпись здесь

И правда (22.04):

└> cat /boot/config-6.8.0-53-generic | grep HZ
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set
CONFIG_NO_HZ_FULL=y
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_MACHZ_WDT=m

не обязательно. просто на индикаторе будет отображаться 1000 вместо 250. мы же к истокам движемся

Везёт вам, само отображалось - мне приходилось вручную переставлять пару десятков джамперов, чтобы вместо 33 написать 66 (МГц, дело было ещё во времена 486 процессоров; хотелось не отставать от пацанов)

ну, у меня была рпзная техника. и ЕС и ДВК в которых от температуры платы аж винтом шли и Искры и вся линейка x86. Так что, где джамперами, а где и паяльником приходилось, иногда работать.

Можно повысить в ½ раза. По сути всё равно, а людям приятно.

Это даже не отрицательное повышение, никто и не заметит подвоха.

Для некоторых топовых процессоров не помешало бы. Сидишь в интернетике, слушаешь музыку - комп работает в стандартном режиме, тихо и экономно. Захотелось поиграть или покомпилять - нажимаешь Турбо, включаются дополнительные ядра, частоты выходят на максимум, начинают работать дополнительные вентиляторы, выдвигаются бластеры.

х86 процессоры это и так делают в автоматическом режиме лет этак десять как минимум.

Так она уже может быть адаптивная. Например:

cat /proc/interrupts |grep LOC; sleep 1;cat /proc/interrupts |grep LOC
LOC:  163428476  132908259  161984855  132746572  160142291  133741721  168149496  147129433   Local timer interrupts
LOC:  163428924  132908734  161985242  132746893  160142669  133742114  168149852  147129799   Local timer interrupts

Наблюдаем по ядрам:

163428924-163428476=448
132908734-132908259=475
161985242-161984855=387
132746893-132746572=321
160142669-160142291=378
133742114-133741721=393
168149852-168149496=356
147129799-147129433=366

При этом:

cat /boot/config-6.8.0-52-generic |grep CONFIG.*HZ
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
# CONFIG_NO_HZ_IDLE is not set
CONFIG_NO_HZ_FULL=y
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_MACHZ_WDT=m

Параметр CONFIG_NO_HZ_FULL=y как раз и обеспечивает некоторую адаптивность, которую видно по факту.

Увеличение частоты переключения процессов приведет как к сокращению тика процесса, так и к оверхеду на само переключение. Смысл в чем? Кроме как иметь возможность гуглю "отслеживать" процессы каждую миллисекунду и периодически майнить фоном.. :)

Проверять это изменение на тысячах архитектур, куда оно может залететь при обновлении системы инженер из гугла конечно же не собирался

Оно всё было проверено при переходе на безтиковый планировщик, а до того - при переходе со 100 герц. На данный момент весь актуальный за последние 10 лет код не должен иметь проблем.

при использовании дисплеев с частотой обновления 120 Гц, типичных для современных ПК и мобильных устройств, при частоте таймера 250 Гц неточность квантования времени составляет примерно половину времени кадра

Неужели линукса на дескопах наконец-то стало больше, чем на серверах - где нет ни каких дисплеев? Или тут опять проблемы меньшинств становятся впереди здравого смысла.

С пробуждением! Код сливали, кажись, еще в 4 ветке, отчего ядро разбухло практически вдвое

В 5.15 был набор патчей который откатили в 5.17+, я про speculative page fault и был он только в андройд ядре. Если Гугл захочет, то могут также применить патч с частотами для андройда.

Для унитазного гейминга существуют, конечно, смертфоны с ЧО 90 и даже 120 Гц, но будем честны - их мало, все-таки "три в ряд" и на 60 Гц нормально идут.

Очень хорошая, идея в свете набирающих популярность пользовательских планировщиков (как в Java).
Ещё очень полезно во всяких мультимедиа-задачах, задачах управления и т.п.
И игры, конечно же.

Оно исторически задано через макрос. Изменения потребуют рефакторинга очень большого количества критичного кода. Такой переход займёт годы.

Хм. В QNX частота системного таймера 1000 Гц. С точностью этого таймера работают всякие функции типа delay. Можно менять в любой момент времени эту частоту программно функцией как угодно, вплоть до зависания системы:

 //настроим системный тик
 struct _clockperiod new_clock;
 new_clock.nsec=100000;//0.1 мс
 new_clock.fract=0;
 ClockPeriod_r(CLOCK_REALTIME,&new_clock,NULL,0);

В чём же проблема реализовать управление системным таймером из ПО в Linux? Да, рефакторинг кода ядра. Но... всё когда-нибудь меняется, ничего вечного нет.

Изменение константы по умолчанию - повод для новости?

Зачем такие статьи? С другой стороны, мне самому написать нечего.

Изменение константы по умолчанию - повод для новости?

Это изменение дефолтного поведения операционки, на которой работает процентов 80 интернета, конечно это повод для новости.

Сомневаюсь, что у огромной свалки почти ничем не связанных друг с другом дистрибутивов под общим названием "линукс" есть какое-то общее дефолтное поведение.

Сотрудник Гугла: "Посоны, го по пивку после работы".

"Новостные обозреватели" Хабра: "В Гугле призвали к употреблению алкоголя".

А почему это вообще сработало? больше частота -> больше накладных расходов -> меньше производительность, понятно что при этом растет отзывчивость, но как на бенчах это могло сказаться в лучшую сторону?

Ну, в статье это описано таким образом:

Профильные эксперты пояснили, что в компьютерных системах возникают ситуации, когда задача уже отработала желаемые операции, требовавшие активных вычислений, но процессор продолжает работу на повышенной частоте из‑за конечности кванта времени, который ещё не закончился. Повышение частоты переключения задач может привести к снижению потребления энергии из‑за повышения эффективности динамического управления частотой (DVFS), более точного распределения интервалов планировщиком задач, более частого обновления статистики загрузки CPU и уменьшения времени нахождения задач в состоянии ожидания.

Производительность процессоров растёт - раньше за один квант выполнялось, скажем, 1000 инструкций (цифра с неба), а теперь стало можно 3000. Однако, операция занимает всего 800 инструкций и оставшееся время просто тратится впустую.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости