Краткий контекст: что случилось с Meteor Lake на Linux
В конце 2025 года серия сравнительных тестов выявила нечастое явление: ноутбук на Intel Core Ultra 7 155H (Meteor Lake) при запуске современного стека Linux показал худшие результаты, чем те же тесты два года назад. Геометрическое среднее по более чем 200 бенчмаркам упало примерно до 93% от исходного уровня. На фоне того, что у ряда других платформ (AMD, Intel Lunar/Arrow Lake) наблюдались улучшения, это выделяется.
Почему это важно
Речь не только о цифрах в Phoronix. Регрессии производительности на живых платформах означают: нарушенная оптимальность энергомоделей, возможные баги в драйверах, неверные решения по дефолтным профилям энергопотребления и, как следствие, ухудшенный пользовательский опыт для тысяч пользователей и тестирующих. Разберёмся, какие факторы действительно могут давать такой эффект и как их системно диагностировать.
Короткий перечень реалистичных причин
- Изменения в ядре и политике управления энергией — например, разные параметры intel_pstate, поведение governor'ов и CPPC/ACPI.
- Микрокод и BIOS/UEFI-апдейты — новые версии микрокода могут снижать рабочие частоты для соблюдения терм/пауэр-ограничений.
- Драйверы графики (i915 / Mesa) — изменения в Mesa или i915 могут замедлить рендер/компьют нагрузку или ухудшить взаимодействие GPU/CPU.
- Компилятор и рантаймы — GCC 15 и Python 3.13 генерируют иной код; сборка тестов под новым toolchain может быть медленнее.
- Тепловой режим и троттлинг — разные прошивки, paste ageing или тепловые ограничения корпуса влияют на стабильные частоты.
- Изменение дефолтных настроек дистрибутива — больше энергосбережения «по умолчанию» может снизить скорость без явной на то причины.
- Регрессии в самих бенчмарках/сценариях — редкие, но возможные: зависимость теста от конкретной версии библиотек.
Разбираем причины глубже: что именно могло повлиять
1. Scheduler и гибридная архитектура
Meteor Lake — гибридная архитектура с разными типами ядер. Эффективность распределения задач между «большими» и «маленькими» ядрами зависит от модели энергопотребления и планировщика. Если ядра неправильно ранжируются по стоимости выполнения (energy model) или kernel scheduler получает некорректные данные от ACPI/firmware, нагрузка может уходить на менее подходящие ядра, что отражается в падении производительности.
2. Энергомодель и CPPC/ACPI
Современные ноутбуки полагаются на взаимодействие BIOS ↔ ACPI ↔ ядро. Обновление ядра или микрокода иногда требует скорректировать CPPC-файлы (Collaborative Processor Performance Control). Если в цепочке появляются несогласованности, система начинает агрессивно экономить энергию, урезая частоты существенным образом.
3. Драйвер i915 / Mesa
Intel активно перерабатывает графический стек — изменения в Mesa (25.x), переходы API и новые оптимизации иногда снимают старые обходы или меняют настройки таймингов. Неправильный матч между версией i915 в ядре и версией Mesa может привести к отключению оптимизаций или включению более консервативных путей исполнения.
4. Компилятор и бинарная оптимизация
GCC 15 изменил поведение ряда оптимизаций и ABI-деталей. Для вычислительно плотных тестов даже небольшие различия в inlining или векторизации влияют. Кроме того, LTO/PGO-поддержка и флаги оптимизации дистрибутива могли поменяться, так что «тот же» тест на новом toolchain — уже иной артефакт.
5. Микрокод/BIOS и терм-менеджмент
Производители часто выпускают микрокод, который ужесточает лимиты для избежания деградации батареи или падения стабильности. Такой патч может снизить частоты или изменить кривые подачи питания, чтобы держать SoC в заданном терм-оконце — и это выглядит как регрессия производительности.
6. Изменение дефолтных профилей дистрибутива
Дистрибутивы с годами смещают акцент в сторону энергоэффективности и безопасности: systemd-твики, выключенные CPU-boost возможности, profilе «balanced», настройки schedtune для фоновых служб — всё это складывается.
Как системно диагностировать регрессию: чек-лист
Если есть собственный тестовый ноутбук — последовательность действий для локализации проблемы:
- Собрать контрольные точки: старые ISO/снимки окружения, версии ядра, Mesa, GCC. Попробовать воспроизвести запуском старого образа и нового на том же железе.
- Собрать метрики: turbostat, RAPL (powercap), intel_gpu_top, perf, dmesg. Сохранить логи до и после.
- Отследить частоты и throttling: watch /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq, turbostat --interval 1.
- Сравнить энергопотребление: package power via RAPL за тот же тестовый период.
- Проверить микрокод/BIOS: откатить, если возможно, и протестировать. Часто vendors добавляют политику «safe by default».
- Изолировать GPU и CPU: запуск CPU-only и GPU-only тестов, чтобы понять источник деградации.
- Провести бенчмарк-бисект: менять версии ядра по одной, или версии Mesa по одной, чтобы найти коммит/релиз, который привёл к деградации.
Практические команды и инструменты (коротко)
- turbostat — мониторинг частот, C-state и package power.
- perf stat / perf record — профилирование CPU.
- intel_gpu_top — загрузка GPU и частоты.
- powertop — рекомендации по энергосбережению (и где включены «вредные» режимы).
- phoronix test suite — повторяемые наборы тестов для регрессий.
Примеры из практики и параллели
Опыт с другими платформами показывает, что развитие Linux-стека обычно приводит к улучшениям: AMD в некоторых ревизиях давала приросты за счёт оптимизаций драйверов, Intel — за счёт совершенствования Mesa и i915. Но обратные кейсы не редкость: когда upstream-апдейт убирает локальную оптимизацию, или когда дефолты дистрибутива становятся более «экономными».
Типичный пример — апдейт Mesa, который меняет планировщик команд для GPU. На одном ноутбуке это давал +5–10% в некоторых тестах; на другом — падение, потому что ранее потенциально «опасный» обход был оптимизирован под конкретный чип/BIOS. Такая же логика применима и к микрокоду: безопасный патч уменьшает частоты и ухудшает бенчмарки, но повышает стабильность батареи и надежность в долгосрочной перспективе.
Что делать разработчикам дистрибутивов и вендорам
- Тесная интеграция тестов производительности в CI: регрессии должны ловиться до выпуска релиза.
- Предоставлять возможность простого переключения профилей (performance / balanced / battery) и документировать поведение.
- Поддерживать матрицы совместимости между версиями i915 и Mesa, рекомендовать проверенные связки.
- Отправлять репорты и патчи upstream: если регрессия в kernel/i915/Mesa — нужен быстрый фидбэк к разработчикам.
Прогнозы и тренды
Индустрия движется в сторону более сложных SoC: гибридные ядра, интегрированные NPU, tiled GPU. Это увеличивает число стыков, где может возникнуть рассогласование. В ближайшие релизы ядра и Mesa ожидается усиленная работа над корректной поддержкой гибридных архитектур и энергомоделей, а также улучшения в диагностике и инструментах. Параллельно, при росте роли «AI»-ускорителей на платах ноутбуков — производительность общего кода будет все сильнее зависеть от, казалось бы, отдельных компонент: от политики питания NPU до того, как драйверы делят шину памяти.
Рекомендации для инженеров и тестировщиков
- Не полагаться на один набор бенчмарков — покрывать CPU, GPU, I/O, микролатентности.
- Автоматизировать базовые проверки после каждого релиза ядра/mesa/firmware.
- Хранить «образ эталона» системы для кросс-проверок: старый ISO vs новый стек.
- Документировать изменения в дефолтных профилях дистрибутива и встречно сверять с vendor firmware notes.
Небольшая заметка о дистрибутивах
Для тестирования в контролируемых виртуализованных средах иногда удобны отечественные сборки и облачные образы; например, для работы с виртуальными машинами и контейнерами можно рассмотреть НАЙС.ОС Cloud как один из вариантов платформы для воспроизводимых стендов.
Выводы
Регрессия Meteor Lake на Linux — тревожный, но объяснимый кейс. Когда железо становится сложнее, количество точек взаимодействия растёт, и даже позитивные обновления (более строгий микрокод, патчи безопасности, новые оптимизации компилятора) могут дать негативный эффект на показатели старых тестов. Задача инженерного сообщества — автоматизировать регрессионное тестирование, делать прозрачными профили энергопотребления и держать смежные стеки (ядро, Mesa, микрокод, компилятор) в согласованности.
Вовлекающий вопрос читателю
Сталкивались ли вы с похожими регрессиями после апдейтов ядра или драйверов? Какие инструменты и практики в ваших проектах помогли быстро локализовать проблему — bisect ядра, откат микрокода, профильные тесты? Поделитесь кейсами и любимыми командами для диагностики — это поможет составить практический набор для других тестировщиков.
Комментарии