Oracle рдХрд╛ рдЗрд░рд╛рджрд╛ eBPF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Linux рдХреЗ рд▓рд┐рдП DTrace рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╣реИ

рдУрд░реЗрдХрд▓ рдХрдВрдкрдиреА рд╕реВрдЪрдирд╛ рдбреАрдЯреНрд░реЗрд╕-рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдбреАрдЯреНрд░реЗрд╕ рдбрд╛рдпрдиреЗрдорд┐рдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рддрдХрдиреАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдИрдмреАрдкреАрдПрдл рдЬреИрд╕реЗ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, Linux рдкрд░ DTrace рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реНрддрд░ рдкрд░ рдЕрд╕рдВрдЧрддрд┐ рдереА, рд▓реЗрдХрд┐рди 2018 рдореЗрдВ Oracle рдкреБрдирдГ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд GPLv2 рдХреЗ рдЕрдВрддрд░реНрдЧрдд DTrace рдХреЛрдбред

рдбреАрдЯреНрд░реЗрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдУрд░реЗрдХрд▓ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реНрдиреЗрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд┐рддрд░рдгреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд░реНрдиреЗрд▓ рдкреИрдЪ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рдУрд░реЗрдХрд▓ рддреИрдпрд╛рд░ рдлреЗрдбреЛрд░рд╛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбреАрдЯреНрд░реЗрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрдЬрд╛рд░ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрдирдГ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреИрдЪ. рдУрд░реЗрдХрд▓ рдФрд░ рдлреЗрдбреЛрд░рд╛ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рд▓рд┐рдЦреА рд╣реБрдИ рдХрд╣рд╛рдиреА.

eBPF рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдмрд╛рдЗрдЯрдХреЛрдб рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдСрдкрд░реЗрд╢рди рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ, рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ, рдПрдХреНрд╕реЗрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ, рдЯрд╛рдЗрдордХреАрдкрд┐рдВрдЧ (perf_event_open) рдХреЗ рд╕рд╛рде рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ, рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡реГрддреНрддрд┐ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ, kprobes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред /рдЕрдкрд░реЛрдм/рдЯреНрд░реЗрд╕рдкреНрд╡рд╛рдЗрдВрдЯред рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рддреБрд░рдВрдд рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред DTrace рдХреЛ eBPF рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЗрд╕реЗ eBPF рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ╤А╨░╨▒╨╛╤В╨░╤О╤В рдореМрдЬреВрджрд╛ рдЕрдиреБрд░реЗрдЦрдг рдЙрдкрдХрд░рдг.

рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрдиреЗрд▓ рдФрд░ рдЕрдВрддрд┐рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЛрд▓рд╛рд░рд┐рд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП DTrace рддрдХрдиреАрдХ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓рддреА рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, DTrace рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪрд▓ рд░рд╣реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред DTrace рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ AWK рдХреЗ рд╕рдорд╛рди рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп D рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде C, Python рдФрд░ Lua рдореЗрдВ eBPF рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

Oracle рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░ GCC рдХреЗ рд▓рд┐рдП eBPF рдмреИрдХрдПрдВрдб рдмрдирд╛рдиреЗ рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдкреИрдЪ рд╕реЗрдЯ рдЬреАрд╕реАрд╕реА рдореЗрдВ рдИрдмреАрдкреАрдПрдл рд╕рдорд░реНрдерди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╕рд┐рд▓ рдЬреАрдПрдирдпреВ рдмрд┐рдиреБрдЯрд┐рд▓реНрд╕ рдореЗрдВ рдИрдмреАрдкреАрдПрдл рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕рд╣рд┐рддред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдИрдмреАрдкреАрдПрдл рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рдПрд▓рдПрд▓рд╡реАрдПрдо рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдУрд░реЗрдХрд▓ рдЬреАрд╕реАрд╕реА рдореЗрдВ рдИрдмреАрдкреАрдПрдл рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдПрдХ рдорд╛рдирдХ рдХреНрд╖рдорддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдИрдмреАрдкреАрдПрдл рдХреЗ рд▓рд┐рдП.

рдмрд╛рдЗрдЯрдХреЛрдб рдЬрдирд░реЗрд╢рди рдмреИрдХрдПрдВрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, GCC рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреИрдЪ рдореЗрдВ eBPF рдХреЗ рд▓рд┐рдП рдПрдХ libgcc рдкреЛрд░реНрдЯ рдФрд░ ELF рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХрд░реНрдиреЗрд▓-рдкреНрд░рджрддреНрдд рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ eBPF рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕рднреА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ), рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реА рднрд╛рд╖рд╛ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ, рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдИрдмреАрдкреАрдПрдл рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ