Почему «perf» должен точно соответствовать версии ядра Linux?

Если вы попытаетесь запустить случайный perf файл, который не соответствует вашему текущему ядру Linux, он скажет:

 $ perf WARNING: perf not found for kernel 4.13.0-45 

Конечно, если я получу perf для этой версии, это работает.

Глядя на некоторые популярные ресурсы, такие как Linux perf Примеры и Perf wiki, я не смог найти ответ на этот конкретный вопрос: почему perf строго должен быть в той же версии, что и kernel?

    One Solution collect form web for “Почему «perf» должен точно соответствовать версии ядра Linux?”

    perf и kernel ​​тесно связаны друг с другом, фактически perf является частью исходного кода ядра. В глубине души вы должны думать об этом как о специфическом для ядра инструменте; но практика упаковки и требования в дистрибутивах Linux означают, что пользователи думают об этом как о «стандартном» инструменте.

    Специального интерфейса perf -private между perf и kernelм не существует, поэтому части ядра, поддерживающие perf должны следовать обычным правилам, обращенным к пользовательскому пространству – т.е. поддерживать обратную совместимость; поэтому теоретически можно было бы запустить более старую версию perf с более новым kernelм, поскольку предполагается, что более новое kernel ​​будет поддерживать любой интерфейс, который старая версия perf использует для взаимодействия с ним. Однако на практике оказывается, что если вам нужно использовать perf для исследования производительности рабочей нагрузки на конкретном ядре, вам также нужно иметь возможность исследовать все возможности, влияющие на производительность этого конкретного ядра; старая версия perf не поддерживает функции, которые были добавлены после ее выпуска, поэтому вам, как правило, в любом случае понадобится соответствующая версия perf . В результате всего этого, прагматичный вариант – требовать версию perf соответствующую работающему ядру.

    Linux и Unix - лучшая ОС в мире.