GCC енді eBPF компиляциясына арналған серверді қамтиды

GCC компиляторлар жиынтығына кіреді қабылданған Linux ядросына енгізілген байт-код интерпретаторына арналған бағдарламаларды құрастыруға арналған код eGMP. JIT компиляциясын қолданудың арқасында ядроның байт коды машиналық нұсқауларға жылдам аударылады және жергілікті кодтың өнімділігімен орындалады. eBPF қолдауы бар патчтар қабылданды GCC 10 шығарылымы әзірленген филиалға.

Байт-кодты генерациялауға арналған серверге қосымша, GCC eBPF үшін libgcc портын және ядромен қамтамасыз етілген жүктеушілер арқылы eBPF виртуалды машинасында кодты орындауға мүмкіндік беретін ELF файлдарын жасауға арналған құралдарды қамтиды. GCC-де eBPF-ді қолдауға арналған патчтарды Oracle инженерлері дайындаған, олар бұрыннан бар қамтамасыз етілген GNU binutils ішіндегі eBPF қолдауы. GDB үшін симулятор мен патчтар да әзірленуде, бұл eBPF бағдарламаларын ядроға жүктемей-ақ жөндеуге мүмкіндік береді.

eBPF бағдарламаларын Си тілінің ішкі жиынында анықтауға, құрастыруға және ядроға жүктеуге болады. Орындау алдында eBPF интерпретаторы рұқсат етілген нұсқауларды пайдалану үшін байт кодты тексереді және кодқа белгілі бір ережелерді жүктейді (мысалы, циклдар жоқ).
Бастапқыда Linux жүйесінде eBPF құрастыру үшін LLVM негізіндегі құралдар пайдаланылды. GCC жүйесіндегі eBPF қолдауы қызықты, себебі ол қосымша тәуелділіктерді орнатпай, Linux ядросы мен eBPF бағдарламаларын құру үшін бір құралдар жинағын пайдалануға мүмкіндік береді.

eBPF бағдарламалары түрінде желі жұмысының өңдеушілерін жасауға, трафикті сүзуге, өткізу қабілеттілігін басқаруға, жүйелерді бақылауға, жүйелік қоңырауларды ұстауға, қол жеткізуді басқаруға, операциялардың жиілігі мен уақытын санауға және kprobes/uprobes/tracepoints көмегімен бақылауды жүзеге асыруға болады.

Ақпарат көзі: opennet.ru

пікір қалдыру