
Перевірку залежностей збірки прискорили у 54 рази завдяки eBPF
Дослідники з університету Васеда створили mkcheck2 — інструмент, який перевіряє залежності збірки через eBPF, а не ptrace, і аналізує лише змінені частини графа. На 300 проєктах середній час аналізу одного коміту впав із 1267,49 до 23,56 секунди.
Японські дослідники створили інструмент, який перевіряє залежності збірки програм значно швидше за попередні підходи: замість ptrace він відстежує системні виклики через eBPF і аналізує лише ті частини графа залежностей, які змінилися. Як повідомляє The Register, mkcheck2 прискорює перевірку до 54 разів.
Залежності збірки визначають, які файли система збірки має перезібрати, коли змінюється інший файл. Якщо цей опис хибний, збірка або завершується помилкою, або дає неправильний результат.
Чому перевірка така дорога
У статті, представленій на ICSE 2026, Юта Сайто та Хіронорі Васідзакі з університету Васеда разом із Кадзунорі Сакамото з Токійського онлайн-університету зазначають, що помилки, пов'язані із залежностями, як відсутні, так і зайві, становлять понад 50% помилок збірки у великих проєктах.
Традиційний підхід спирається на ptrace, який працює в просторі користувача, тому зупиняє процес і перемикає контекст на кожному системному виклику. За вимірюваннями авторів, час збірки з попереднім інструментом mkcheck зростав у середньому на 101,7%, а з BuildFS — на 148,0%. Відсутня залежність призводить до збою або неправильної збірки, а зайва — до непотрібних перезбирань.
Трасування eBPF та інкрементальний аналіз
mkcheck2 замінює ці витрати двома прийомами. Модуль Build Tracer запускає eBPF-програми всередині ядра і фільтрує системні виклики в реальному часі без перемикань контексту. Будівник графа залежностей перетворює відстежені операції з файлами на опис залежностей, які збірка справді використала, і зберігає їхню історію. Інкрементальний аналізатор порівнює графи різних збірок і перевіряє лише змінені частини, а не кожне ребро.
«Наш підхід використовує eBPF, легку технологію моніторингу системних викликів, разом з інкрементальним аналізом, що суттєво скорочує час перевірки», — пояснює Васідзакі.
Результати та обмеження
Оцінювання охопило 300 проєктів з відкритим кодом, зокрема корпус Make, який використовує BuildFS. Середні накладні витрати на збірку впали до 0,3% від базового рівня проти 101,7% і 148,0% в інструментів на ptrace — автори оцінюють це як скорочення до 99,7%. Середній час аналізу одного коміту зменшився з 1267,49 секунди до 23,56 секунди, а на десяти послідовних комітах інструмент на 75-80% швидший.
Точність не постраждала: автори повідомляють про 100% виявлення 15 740 відсутніх залежностей у корпусі та 92% для 11 720 зайвих, без хибних спрацювань. Є одне обмеження: потрібне сучасне ядро Linux із підтримкою eBPF і права на кшталт CAP_SYS_ADMIN, щоб завантажувати програми трасування. За словами Васідзакі, технологія може бути важливою у хмарній та AI-інфраструктурі, де швидка перевірка в безперервній інтеграції критична.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.