Π’ ΡΡŠΡΡ‚Π°Π²Π° Π½Π° GCC Π΅ ΠΏΡ€ΠΈΠ΅Ρ‚ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° компилация Π² eBPF

Част ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ GCC ΠΏΡ€ΠΈΠ΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ Π² ядрото Linux ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ eBPF. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° JIT-компилация, Π² ядрото Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΡŠΡ‚ сС трансформира Π² машинни инструкции Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ сС изпълнява с производитСлността Π½Π° Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄. ΠŸΠ°Ρ‡ΠΎΠ²Π΅ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° eBPF ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ Π² ΠΊΠ»ΠΎΠ½, Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π° вСрсията Π½Π° GCC 10.

ОсвСн Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π² GCC Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠΎΡ€Ρ‚ΡŠΡ‚ libgcc Π·Π° eBPF ΠΈ срСдства Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ELF-Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π°Π²Π°Ρ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина eBPF с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° доставСнитС ΠΎΡ‚ ядрото Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΡ†ΠΈ. ΠŸΠ°Ρ‡ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° eBPF Π² GCC са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ ΠΎΡ‚ компанията Oracle, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ осигуриха ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° eBPF Π² GNU binutils. Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΅ ΡΡŠΡ‰ΠΎ симулатор ΠΈ ΠΏΠ°Ρ‡ΠΎΠ²Π΅ Π·Π° GDB, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ позволят отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² eBPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π±Π΅Π· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² ядрото.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π·Π° eBPF ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π½Π° подмноТСство ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° C, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΈ Π·Π°Ρ€Π΅Π΄Π΅Π½ΠΈ Π² ядрото. ΠŸΡ€Π΅Π΄ΠΈ изпълнСниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ eBPF провСрява Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ инструкции ΠΈ Π½Π°Π»Π°Π³Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅ Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ).
ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π·Π° компилация Π½Π° eBPF Π² Linux сС използвашС инструмСнтариум Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° LLVM. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° eBPF Π² GCC прСдставлява интСрСс, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ позволява Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄ΠΈΠ½ инструмСнтариум Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ядрото Π½Π° Linux ΠΈ eBPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π±Π΅Π· инсталиранС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ зависимости.

Π’ΡŠΠ² Ρ„ΠΎΡ€ΠΌΠ° Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡ΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π΄Π° сС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π΄Π° сС управлява пропускната способност, Π΄Π° сС слСди Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмитС, Π΄Π° сС ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‰Π°Ρ‚ систСмни извиквания, Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, Π΄Π° сС Π±Ρ€ΠΎΠΈ чСстота ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π΄Π° сС изпълнява трасировка с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kprobes/uprobes/tracepoints.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster