KernelScript 0.1.0

Presentado KernelScript — un lenguaje de programación experimental para desarrollar programas eBPF, cargadores personalizados y extensiones del núcleo de Linux a partir de una única base de código. El proyecto está avanzando Multikernel Technologies, una empresa que promueve la arquitectura split-kernel / multikernel para Linux. Cong Wang, fundador de la empresa, habló sobre KernelScript en el Open Source Summit de la Linux Foundation; el código del proyecto se publicó en GitHub bajo la licencia Apache 2.0.


eBPF (Extended Berkeley Packet Filter) es una tecnología que permite ejecutar pequeños programas directamente en el núcleo de Linux, sin modificar su código y sin poner en riesgo la estabilidad del sistema. eBPF ayuda a abordar múltiples tareas, desde la monitorización del rendimiento hasta la seguridad y la optimización de la red. Por ejemplo, con eBPF se puede rastrear las llamadas del sistema, el tráfico de red y otros eventos en tiempo real. Esto permite identificar cuellos de botella en el rendimiento y optimizar el sistema (Habr).

La idea detrás de KernelScript es hacer que el desarrollo de eBPF sea menos doloroso que usando la combinación C + libbpf, y no limitarse solo a la trazabilidad, como bpftrace. Los desarrolladores describen el lenguaje como un DSL seguro en tipos que combina eBPF, desarrollo en espacio de usuario y kernelspace: a partir de un único archivo fuente, el compilador debe generar código para programas eBPF, parte de espacio de usuario e integración con módulos del kernel a través de kfunc.

Las capacidades declaradas de KernelScript son:

  • Compilación para diferentes objetivos a partir de un solo archivo — funciones con atributos como @xdp, @tc, @helper y @kfunc se asocian automáticamente con la parte necesaria: programa XDP/TC, función helper, función del kernel o código de espacio de usuario normal.

  • Automatización de llamadas tail — en lugar de configurar manualmente el array de programas y las llamadas bpf_tail_call(), se propone que el desarrollador escriba una llamada a otra función de manera normal, dejando que el compilador genere el código eBPF de bajo nivel.

  • Trabajo simplificado con dynptr y mapas eBPF — el lenguaje oculta parte del trabajo manual con bpf_ringbuf_reserve_dynptr, bpf_dynptr_write y APIs similares. Los mapas eBPF se pueden utilizar como variables globales accesibles desde diferentes programas.

  • Control del ciclo de vida de los programas — los programas eBPF se presentan como valores tipados, lo que, según los autores, permite evitar errores como intentar ejecutar attach() antes de un load() exitoso durante la compilación.

  • Soporte para kfunc — KernelScript permite declarar funciones con el atributo @kfunc, que se ejecutan en el espacio del núcleo y pueden ser llamadas desde programas eBPF; se promete una generación automática de módulos del núcleo y registros BTF.

  • Soporte para los tipos principales de programas eBPF — el README muestra ejemplos para XDP, TC, programas de probe y perf_event, incluyendo el trabajo con contadores de rendimiento de hardware.

Los autores subrayan que KernelScript no es un reemplazo del núcleo de Linux ni un nuevo runtime eBPF. Se trata más bien de un compilador y un lenguaje de alto nivel, que debe generar los componentes de bajo nivel familiares: código eBPF, cargadores de userspace, Makefile y, cuando sea necesario, módulos del núcleo.

Por ahora, el proyecto debe ser considerado como un experimento temprano. En el repositorio se indica claramente que KernelScript está en estado beta, la sintaxis y la API pueden cambiar sin mantener la compatibilidad hacia atrás, y su uso en producción no se recomienda por el momento.

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster