Ядро Redox научилось профилировать пользовательское пространство вместе с ядром
03.06.2026В ядре Redox появился смешанный профилировщик: он строит флеймграф, где видны и системные вызовы, и код приложения, с переходом между ними. Вывод — SVG с кликабельным раскрытием деталей.
Зачем смешанный профилировщик
Обычная программа на Redox почти не работает напрямую с ядром: каждый чтение файла или сетевой вызов уходит через libc, а та — через системный вызов. Время делится между этими слоями, и обычный инструмент показывает только один из них.
Практический пример. Программа на Rust тормозит. Профилировщик пользовательского пространства показывает, что время уходит на повторные выделения памяти. Но если эти выделения идут через системные вызовы, то настоящая причина может быть в ядре — и без смешанного профиля её не увидеть.
Как сделано
Работа идёт через NMI — немаскируемое прерывание, которое нельзя отложить и которое потому годится для сэмплирования. Реализация пока в статусе экспериментальной: разработчик прямо помечает один из коммитов как WIP, то есть работа не завершена.
Отдельная правка того же месяца разрешает прохождение границ системных вызовов — без неё флеймграф обрывался бы на каждом вызове и половина времени пропадала бы из отчёта.
Вывод делается в SVG с кликабельным раскрытием: можно открыть конкретный участок и увидеть детали, не перезапуская профилирование.
Кому это нужно
Тем, кто пишет системный код на Rust: ядро, драйверы, libc. Инструмент, который показывает переходы между ядром и приложением, экономит часы угадывания. Инструмент при этом общий: он не привязан к Rust, хотя применять его будут в первую очередь там, где весь код на Rust.
Оригинал
Коммиты WIP: simultaneous NMI-based user+kernel profiling и profiling: allow walking across syscall boundaries от 3 июня 2026 года в репозитории redox-os/kernel
Упоминаний: 1 · Просмотров: 3