eBPF程序有解释器阶段吗?



我是eBPF的新手,正如教程所建议的,eBPF是一个带有jit编译器的运行时。就我所知,字节码在eBPF中只是被翻译成本机代码,所以我想知道eBPF中是否有类似JVM的解释阶段?

如果你禁用JIT编译器,那么是的,它将被解释。

你可以使用以下命令禁用JIT编译器:

echo 0 > /proc/sys/net/core/bpf_jit_enable

或在内核配置中。:

CONFIG_BPF_JIT=n

在Linux内核中,eBPF附带了一个解释器和一个jit编译器(适用于所有广泛的体系结构)。

您可以为您的程序使用解释器或jit编译器。这是通过bpf_jit_enable旋钮控制sysctl。它们并不是执行过程的不同阶段:当你使用解释器时,内核解释你的程序并模拟寄存器;而如果启用了jit编译器,则可以将指令编译成本机代码。

也就是说,解释器并不总是可用。出于安全原因(与Spectre有关),一些发行版在编译内核时将通过设置内核配置选项CONFIG_BPF_JIT_ALWAYS_ON=y而忽略它。在这种情况下,不能使用解释器。

相关内容

  • 没有找到相关文章

最新更新