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

Сначала разрешите пересылку с помощью

echo 1 > /proc/sys/net/ipv4/ip_forward

Затем установите правила iptable с помощью

IF=eth1
PORT_FROM=8080
PORT_TO=80
DEST=10.32.25.2
iptables -t nat -A PREROUTING -i $IF -p tcp --dport $PORT_FROM -j DNAT --to $DEST:$PORT_TO
iptables -t nat -A POSTROUTING -p tcp -d $DEST --dport $PORT_TO -j MASQUERADE

. Эти строки можно поместить в /etc/rc.local Например. Примечание: поскольку Debian jessie делает его исполняемым и включает службу rc.local через

systemctl enable rc-local.service
1
16.08.2018, 16:42
1 ответ

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

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

В зависимости от выбора пакета вашего дистрибутива, perfможет быть внешним интерфейсом, -который проверяет реализацию perf, соответствующую вашему работающему ядру, и терпит неудачу, если не может ее найти; или это может быть какая-то версия самого perf. Я не тестировал слишком далеко, но текущие версии perfпрекрасно работают на старых ядрах, например perf5.6.14 и 5.7.7 прекрасно работают с ядром 4.19.

1
27.01.2020, 23:42

Теги

Похожие вопросы