В Linux подкрутили код ACPI, замедлявший работу систем AMD Zen 3

В Linux подкрутили код ACPI, замедлявший работу систем AMD Zen 3

В Linux подкрутили код ACPI, замедлявший работу систем AMD Zen 3

В ядро Linux внесены исправления, призванные ограничить использование устаревшего приема — фиктивной операции ожидания, тормозящей CPU при его переводе в состояние сна. Современные системы AMD и Intel не нуждаются в такой помощи, более того, при определенных рабочих нагрузках трюк, в котором нет необходимости, может вызвать существенное снижение производительности.

В 2002 году в Linux была добавлена поддержка стандарта ACPI (Advanced Configuration and Power Interface), согласно которому управление энергопотреблением осуществляется на уровне операционной системы. Спецификации предусматривают возможность перевода устройства в состояние сна разной степени, а также использование технологий мгновенной готовности (пробуждение по сигналу).

Однако некоторые чипсеты оказались неспособными быстро реагировать на сигнал STPCLK# (stop-clock, вызывает состояние функционирования C2, при котором питание процессора отключается, но регенерация ОЗУ продолжается; для возврата в рабочий режим требуется время). В связи с этим был придуман обходной маневр — имитация ожидания, при которой система просто считывает данные ввода-вывода, задерживая обработку инструкций.

Соответствующий код появился в Linux вместе с поддержкой ACPI и присутствует до сих пор. Современные процессоры Intel его не используют, так как давно засыпают с помощью инструкции MWAIT — ее использование обеспечивает более тонкое управление энергопотреблением неактивного состояния (их семь против трех по ACPI).

Чипсетам AMD фейковая операция ожидания тоже больше не требуется, однако для них альтернативы нет. В то же время трюк двадцатилетней давности при определенных условиях может оказаться губительным. Недавнее исследование показало, что он может сильно замедлить работу AMD Zen 3 при рабочих нагрузках Linux с быстрым переключением состояний занятости и простоя. Падение производительности особенно заметно на платформах Ryzen Threadripper и EPYC, которые используют многоядерные процессоры.

Во избежание таких потерь был предложен патч для Linux, который лимитирует использование потерявшего актуальность кода: он пускается в ход только на старых платформах (в случае с Intel это системы с микроархитектурой древнее Nehalem). Концепцию заплатки подхватил Линус Торвальдс; в итоге долгожданный фикс был добавлен в новую сборку ядра Linux (6.0), выпуск которой запланирован на 2 октября.

GitHub сделает платными собственные раннеры для Actions

GitHub меняет подход к оплате Actions и готовится брать деньги за то, что раньше было бесплатным. С марта компания начнёт взимать плату за использование собственных раннеров в приватных репозиториях — по $0,002 за минуту работы. Для публичных репозиториев ничего не меняется: там собственные раннеры по-прежнему бесплатны.

Об изменениях GitHub сообщил в блоге, одновременно анонсировав снижение цен на GitHub-раннеры с 1 января. Всё это компания объединяет под лозунгом «более простое ценообразование и лучший опыт работы с GitHub Actions».

Реакция крупных пользователей оказалась ожидаемой. В DevOps-сообществе новость встретили без энтузиазма. Один из пользователей Reddit рассказал, что для его команды новые тарифы означают плюс около $3,5 тыс. в месяц к счёту GitHub — и это при использовании собственных серверов.

В GitHub объясняют решение тем, что собственные раннеры годами фактически пользовались инфраструктурой Actions бесплатно. По словам компании, развитие и поддержка этих сервисов всё это время субсидировались за счёт цен на GitHub раннеры, и теперь расходы хотят «привести в соответствие с фактическим использованием».

При этом GitHub уверяет, что большинство пользователей изменений не почувствует. По оценке компании:

  • 96% клиентов не увидят роста расходов вообще;
  • из оставшихся 4% у 85% затраты даже снизятся;
  • для оставшихся 15% медианный рост составит около $13 в месяц.

Для тех, кто использует самохостные раннеры и хочет заранее понять, во что это выльется, GitHub обновил калькулятор цен, добавив туда новые расчёты.

Тем не менее для крупных команд и корпоративных проектов нововведение может стать поводом пересмотреть CI/CD-процессы — особенно если их раннеры использовались активно именно ради экономии.

RSS: Новости на портале Anti-Malware.ru