GCC ಈಗ eBPF ಗೆ ಸಂಕಲನಕ್ಕಾಗಿ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ

GCC ಕಂಪೈಲರ್ ಸೂಟ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ ಸ್ವೀಕರಿಸಲಾಗಿದೆ Linux ಕರ್ನಲ್‌ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಬೈಟ್‌ಕೋಡ್ ಇಂಟರ್ಪ್ರಿಟರ್‌ಗಾಗಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ಕೋಡ್ ಇಬಿಪಿಎಫ್. JIT ಸಂಕಲನದ ಬಳಕೆಗೆ ಧನ್ಯವಾದಗಳು, ಕರ್ನಲ್ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಫ್ಲೈನಲ್ಲಿ ಯಂತ್ರದ ಸೂಚನೆಗಳಾಗಿ ಅನುವಾದಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸ್ಥಳೀಯ ಕೋಡ್‌ನ ಕಾರ್ಯಕ್ಷಮತೆಯೊಂದಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. eBPF ಬೆಂಬಲದೊಂದಿಗೆ ಪ್ಯಾಚ್‌ಗಳು ಸ್ವೀಕರಿಸಲಾಗಿದೆ GCC 10 ಬಿಡುಗಡೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ ಶಾಖೆಗೆ.

ಬೈಟ್‌ಕೋಡ್ ಉತ್ಪಾದನೆಗೆ ಬ್ಯಾಕೆಂಡ್ ಜೊತೆಗೆ, GCC ಯು eBPF ಗಾಗಿ libgcc ಪೋರ್ಟ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ ಮತ್ತು ELF ಫೈಲ್‌ಗಳನ್ನು ಉತ್ಪಾದಿಸುವ ಸಾಧನಗಳನ್ನು ಕರ್ನಲ್ ಒದಗಿಸಿದ ಲೋಡರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು eBPF ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ. ಜಿಸಿಸಿಯಲ್ಲಿ ಇಬಿಪಿಎಫ್ ಅನ್ನು ಬೆಂಬಲಿಸಲು ಪ್ಯಾಚ್‌ಗಳನ್ನು ಈಗಾಗಲೇ ಒರಾಕಲ್‌ನ ಎಂಜಿನಿಯರ್‌ಗಳು ಸಿದ್ಧಪಡಿಸಿದ್ದಾರೆ ಒದಗಿಸಲಾಗಿದೆ GNU ಬೈನುಟಿಲ್‌ಗಳಲ್ಲಿ eBPF ಬೆಂಬಲ. GDB ಗಾಗಿ ಸಿಮ್ಯುಲೇಟರ್ ಮತ್ತು ಪ್ಯಾಚ್‌ಗಳು ಸಹ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿವೆ, ಇದು ಕರ್ನಲ್‌ಗೆ ಲೋಡ್ ಮಾಡದೆಯೇ eBPF ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಡೀಬಗ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

eBPF ಗಾಗಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು C ಭಾಷೆಯ ಉಪವಿಭಾಗದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಸಂಕಲನ ಮತ್ತು ಕರ್ನಲ್‌ಗೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು, eBPF ಇಂಟರ್ಪ್ರಿಟರ್ ಅನುಮತಿ ಸೂಚನೆಗಳ ಬಳಕೆಗಾಗಿ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕೋಡ್‌ನಲ್ಲಿ ಕೆಲವು ನಿಯಮಗಳನ್ನು ವಿಧಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಯಾವುದೇ ಲೂಪ್‌ಗಳಿಲ್ಲ).
ಆರಂಭದಲ್ಲಿ, Linux ನಲ್ಲಿ eBPF ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು LLVM-ಆಧಾರಿತ ಉಪಕರಣಗಳನ್ನು ಬಳಸಲಾಗುತ್ತಿತ್ತು. GCC ಯಲ್ಲಿ eBPF ಬೆಂಬಲವು ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ ಏಕೆಂದರೆ ಹೆಚ್ಚುವರಿ ಅವಲಂಬನೆಗಳನ್ನು ಸ್ಥಾಪಿಸದೆಯೇ, Linux ಕರ್ನಲ್ ಮತ್ತು eBPF ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ನಿರ್ಮಿಸಲು ಒಂದು ಟೂಲ್ಕಿಟ್ ಅನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

eBPF ಪ್ರೋಗ್ರಾಮ್‌ಗಳ ರೂಪದಲ್ಲಿ, ನೀವು ನೆಟ್‌ವರ್ಕ್ ಆಪರೇಷನ್ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ರಚಿಸಬಹುದು, ಟ್ರಾಫಿಕ್ ಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು, ಬ್ಯಾಂಡ್‌ವಿಡ್ತ್ ಅನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಮಾನಿಟರ್ ಮಾಡಬಹುದು, ಸಿಸ್ಟಮ್ ಕರೆಗಳನ್ನು ಪ್ರತಿಬಂಧಿಸಬಹುದು, ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸಬಹುದು, ಕಾರ್ಯಾಚರಣೆಗಳ ಆವರ್ತನ ಮತ್ತು ಸಮಯವನ್ನು ಎಣಿಸಬಹುದು ಮತ್ತು kprobes/uprobes/tracepoints ಬಳಸಿ ಟ್ರೇಸಿಂಗ್ ಮಾಡಬಹುದು.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ