เช“เชฐเซ‡เช•เชฒ eBPF เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Linux เชฎเชพเชŸเซ‡ DTrace เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡

เช“เชฐเซ‡เช•เชฒ เช•เช‚เชชเชจเซ€ เช…เชนเซ‡เชตเชพเชฒ DTrace-เชธเช‚เชฌเช‚เชงเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เช…เชชเชธเซเชŸเซเชฐเซ€เชฎเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเชพ เช•เชพเชฎ เชตเชฟเชถเซ‡ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค Linux เช•เชฐเซเชจเชฒ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ€ เชŸเซ‹เชš เชชเชฐ DTrace เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชกเชฟเชฌเช—เซ€เช‚เช— เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ eBPF เชœเซ‡เชตเซ€ เชธเชฌเชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, Linux เชชเชฐ DTrace เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเซเช–เซเชฏ เชธเชฎเชธเซเชฏเชพ เชฒเชพเช‡เชธเชจเซเชธ-เชธเซเชคเชฐเชจเซ€ เช…เชธเช‚เช—เชคเชคเชพ เชนเชคเซ€, เชชเชฐเช‚เชคเซ 2018 เชฎเชพเช‚ เช“เชฐเซ‡เช•เชฒ เชซเชฐเซ€เชฅเซ€ เชฒเชพเช‡เชธเชจเซเชธ GPLv2 เชนเซ‡เช เชณ DTrace เช•เซ‹เชก.

DTrace เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช˜เชฃเชพ เชธเชฎเชฏ เช“เชฐเซ‡เช•เชฒ เชฒเชฟเชจเช•เซเชธ เชตเชฟเชคเชฐเชฃ เชฎเชพเชŸเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซเชจเชฒเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ เช“เชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชจเซเชฏ เชตเชฟเชคเชฐเชฃเซ‹เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เช•เชฐเซเชจเชฒ เชชเซ‡เชšเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡ เช† เชŸเซ‡เช•เชจเซ‹เชฒเซ‹เชœเซ€เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช“เชฐเซ‡เช•เชฒ เชคเซˆเชฏเชพเชฐ Fedora Linux เชชเชฐ DTrace เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชตเชพเชชเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชธเซ‚เชšเชจเชพเช“. เชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เชฎเชพเช‚เชฅเซ€ เชชเซเชจเชƒเชฌเซ€เชฒเซเชก Linux เช•เชฐเซเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซ‡เชšเซ‹. เช“เชฐเซ‡เช•เชฒ เช…เชจเซ‡ เชซเซ‡เชกเซ‹เชฐเชพ เชชเซ‡เชšเซ‹ เชธเชพเชฅเซ‡ เช•เชฐเซเชจเชฒ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเชพ เช…เชฎเชฒเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡ เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เช›เซ‡. เชธเซเช•เซเชฐเชฟเชชเซเชŸ.

eBPF เช Linux เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชฌเชจเซ‡เชฒ เชฌเชพเชˆเชŸเช•เซ‹เชก เชˆเชจเซเชŸเชฐเชชเซเชฐเซ€เชŸเชฐ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เช“เชชเชฐเซ‡เชถเชจ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฌเชจเชพเชตเชตเชพ, เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เชชเชฐ เชจเชœเชฐ เชฐเชพเช–เชตเชพ, เชˆเชจเซเชŸเชฐเชธเซ‡เชชเซเชŸ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ, เช•เช‚เชŸเซเชฐเซ‹เชฒ เชเช•เซเชธเซ‡เชธ, เชธเชฎเชฏ (perf_event_open) เชจเซ€ เชœเชพเชณเชตเชฃเซ€ เชธเชพเชฅเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เช˜เชŸเชจเชพเช“, เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ€ เช†เชตเชฐเซเชคเชจ เช…เชจเซ‡ เชธเชฎเชฏเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ, เชŸเซเชฐเซ‡เชธเชฟเช‚เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡. kprobes/uprobes/tracepoints เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡. JIT เชธเช‚เช•เชฒเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฌเชฆเชฒ เช†เชญเชพเชฐ, เชฌเชพเชฏเชŸเซ‡เช•เซ‹เชกเชจเซ‡ เชซเซเชฒเชพเชฏ เชชเชฐ เชฎเชถเซ€เชจ เชธเซ‚เชšเชจเชพเช“เชฎเชพเช‚ เช…เชจเซเชตเชพเชฆเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‚เชณ เช•เซ‹เชกเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชพเชฅเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. DTrace เช eBPF เชจเซ€ เชŸเซ‹เชš เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เชฐเซ€เชคเซ‡ เชคเซ‡ eBPF เชจเซ€ เชŸเซ‹เชš เชชเชฐ เช›เซ‡ เช•เชพเชฐเซเชฏเชธเซเชฅเชณเซ‡ เชนเชพเชฒเชจเชพ เชŸเซเชฐเซ‡เชธเซ€เช‚เช— เชธเชพเชงเชจเซ‹.

เชกเซ€เชŸเซ€เชฐเซ‡เชธ เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€ เชธเซ‹เชฒเชพเชฐเชฟเชธ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เชฐเซเชจเชฒ เช…เชจเซ‡ เชเชจเซเชก เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเชพ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชŸเซเชฐเซ‡เชธเชฟเช‚เช—เชจเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชตเชฐเซเชคเชฃเซ‚เช•เชจเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชฏเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฆเชพเชจ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช†เชชเซ‡ เช›เซ‡. เชกเซ€เชฌเช—เซ€เช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชกเซ€เชŸเซ€เชฐเซ‡เชธ เช…เชญเซเชฏเชพเชธ เช•เชฐเซ‡เชฒ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเชพ เชธเช‚เชšเชพเชฒเชจเชจเซ‡ เช…เชธเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡ เชคเซ‡เชฎเชจเชพ เชชเซเชฐเชญเชพเชตเชจเซ‡ เช…เชธเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชœเซ‡ เชซเซเชฒเชพเชฏ เชชเชฐ เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธเชจเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. DTraceเชจเซ€ เชถเช•เซเชคเชฟเช“เชฎเชพเช‚, AWK เชœเซ‡เชตเซ€ เชœ เช‰เชšเซเชš-เชธเซเชคเชฐเชจเซ€ เชกเซ€ เชญเชพเชทเชพ เชจเซ‹เช‚เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชฌเชพเชนเซเชฏ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชธเชพเชฅเซ‡ C, Python เช…เชจเซ‡ Lua เชฎเชพเช‚ eBPF เชฎเชพเชŸเซ‡ เช‘เชซเชฐ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพเช‚ เชŸเซเชฐเซ‡เชธ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฒเช–เชตเซ€ เช˜เชฃเซ€ เชธเชฐเชณ เช›เซ‡. .

เช“เชฐเซ‡เช•เชฒ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ GCC เชฎเชพเชŸเซ‡ eBPF เชฌเซ‡เช•เชเชจเซเชก เชฌเชจเชพเชตเชตเชพ เชชเชฐ เชชเชฃ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชˆ เชšเซ‚เช•เซเชฏเชพ เช›เซ‡ เชชเซ‡เชš เชธเซ‡เชŸ เชœเซ€เชธเซ€เชธเซ€เชฎเชพเช‚ eBPF เชธเชชเซ‹เชฐเซเชŸเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชนเชพเช‚เชธเชฒ เช•เชฐเซเชฏเซเช‚ GNU binutils เชฎเชพเช‚ eBPF เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชธเชนเชฟเชค. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, eBPF เชธเชชเซ‹เชฐเซเชŸ เชฎเชพเชŸเซ‡เชจเซ‹ เชฌเซ‡เช•เชเชจเซเชก LLVM เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เช“เชฐเซ‡เช•เชฒเชจเซ‡ eBPF เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชจเชฟเชฏเชฎเชฟเชค เช•เซเชทเชฎเชคเชพเชจเชพ GCCเชฎเชพเช‚ เชฆเซ‡เช–เชพเชตเชฎเชพเช‚ เชฐเชธ เช›เซ‡, เชœเซ‡ Linux เช•เชฐเซเชจเชฒ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ eBPF เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชฌเชจเชพเชตเชตเชพ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชเช• เชŸเซ‚เชฒเช•เชฟเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.

เชฌเชพเช‡เชŸเช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชฌเซ‡เช•เชเชจเซเชก เช‰เชชเชฐเชพเช‚เชค, GCC เชฎเชพเชŸเซ‡ เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เชชเซ‡เชšเซ‹เชฎเชพเช‚ eBPF เชฎเชพเชŸเซ‡ libgcc เชชเซ‹เชฐเซเชŸ เช…เชจเซ‡ ELF เชซเชพเช‡เชฒเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชงเชจเซ‹เชจเซ‹ เชชเชฃ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เช•เชฐเซเชจเชฒ-เชชเซเชฐเซ‹เชตเชพเช‡เชก เชฒเซ‹เชกเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ eBPF เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡, เชธเซ€ เช•เซ‹เชกเชจเซ‡ เชฌเชพเช‡เชŸเช•เซ‹เชกเชฎเชพเช‚ เช…เชจเซเชตเชพเชฆเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เชฌเชงเซ€ เชญเชพเชทเชพ เชธเซเชตเชฟเชงเชพเช“ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€), เชชเชฐเช‚เชคเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชคเซ‡ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง C เชญเชพเชทเชพ เชธเซเชตเชฟเชงเชพเช“เชจเซ‡ เชตเชฟเชธเซเชคเชพเชฐเชถเซ‡, เช…เชจเซเชฏ เชญเชพเชทเชพเช“ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเชถเซ‡, เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชฌเชจเชพเชตเชถเซ‡ เช…เชจเซ‡ GCC เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเชถเซ‡ เชคเซ‡เชตเซ€ เช…เชชเซ‡เช•เซเชทเชพ เช›เซ‡. เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ eBPF เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เชกเชฟเชฌเช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹