рд▓рд░реНрдирд┐рдВрдЧ рдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП eBPF: рдПрдХ рдЧрд╛рдЗрдб рдФрд░ рдЙрджрд╛рд╣рд░рдг

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП eBPF рдкрд░ рдмреНрд░реЗрдВрдбрди рдЧреНрд░реЗрдЧ рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реВрдВ

рд▓рд┐рдирдХреНрд╕ рдкреНрд▓рдВрдмрд░ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 24 eBPF рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ рдереАрдВред рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рди рдХреЗрд╡рд▓ рдПрдХ рдЕрдореВрд▓реНрдп рддрдХрдиреАрдХ рдмрди рдЧрдпрд╛, рдмрд▓реНрдХрд┐ рдПрдХ рдХреБрд╢рд▓ рдХреМрд╢рд▓ рднреА рдмрди рдЧрдпрд╛ред рд╢рд╛рдпрдж рдЖрдк рдирдП рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдИрдЬрд╝реАрдкреАрдПрдл рд╕реАрдЦреЗрдВ!


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


рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рд╢реБрд░реБрдЖрддреА, рдЙрдиреНрдирдд рдФрд░ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдП рдЧрдП рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП eBPF рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:


  • рд╢реБрд░реБрдЖрдд: рдмреАрд╕реАрд╕реА рдЙрдкрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд░рдирд╛
  • рдЕрдиреБрднрд╡реА: рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ bpftrace рдЙрдкрдХрд░рдг
  • рдЙрдиреНрдирдд: bcc рдЯреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, bcc рдФрд░ bpftrace рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдирд╛

рд╢реБрд░реБрдЖрддреА


1. eBPF, bcc, bpftrace рдФрд░ iovisor рдХреНрдпрд╛ рд╣реИрдВ?


рдИрдПрдХреНрд╕рдкреАрдПрдл рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реИрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ HTML рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕реНрдерд┐рд░ HTML рд╕рд╛рдЗрдЯ рдХреЗ рдмрдЬрд╛рдп, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ рдорд┐рдиреА-рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛рдУрдВ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ - рдЬреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрднрд╛рд╕реА рдорд╢реАрди рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдФрд░ eBPF рдХреЗ рд╕рд╛рде - рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрдЬрд╛рдп, рдЕрдм рдЖрдк рдорд┐рдиреА-рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбрд┐рд╕реНрдХ I / O рдЬреИрд╕реА рдШрдЯрдирд╛рдУрдВ рдкрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, eBPF рдПрдХ v8 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреА рддрд░рд╣ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╣реА рдЪрд▓рд╛рддрд╛ рд╣реИред eBPF рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред


рд╕реАрдзреЗ eBPF рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИ, рдареАрдХ v8 рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА v8 рдореЗрдВ рдХреЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рд╣рд░ рдХреЛрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдпрд╛ рдЕрдХреНрд╕рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (jQuery, рдХреЛрдгреАрдп, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЖрджрд┐) рдХреЗ рдКрдкрд░ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВред EBPF рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдмрд╛рддред рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╣реИрдВ bcc рдФрд░ bpftrace ред рд╡реЗ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЧреЙрдердм рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдИрдУрд╡рд┐рдЬрд╝рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


2. рдХреНрдпрд╛ рдИрдмреАрдкреАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реЗрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?


рдпрд╣ eBPF- рдЖрдзрд╛рд░рд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ ID (PID), рдХрдорд╛рдВрдб рдиреЗрдо (COMM), рднреЗрдЬреЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ (TX_KB, RX_KB), рдФрд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб (MS) рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдЯреАрд╕реАрдкреА рд╕рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред

# tcplife
 PID COMM LADDR LPORT RADDR RPORT TX_KB RX_KB MS
 22597 рд░рд┐рдХреЙрд░реНрдбрд░реЛрдЧ 127.0.0.1 46644 127.0.0.1 28527 0 0 0.23
 3277 рд░реЗрдбрд┐рд╕-рд╕рд░реНрд╡ 127.0.0.1 28527 127.0.0.1 46644 0 0 0.28
 22598 рдХрд░реНрд▓ 100.66.3.172 61620 52.205.89.26 80 0 1 91.79
 22604 рдХрд░реНрд▓ 100.66.3.172 44400 52.204.43.121 80 0 1 121.38
 22624 рд░рд┐рдХреЙрд░реНрдбрдкреНрд░реЛрдк 127.0.0.1 46648 127.0.0.1 28527 0 0 0.22
 3277 рд░реЗрдбрд┐рд╕-рд╕рд░реНрд╡рд┐рд╕ 127.0.0.1 28527 127.0.0.1 46648 0 0 0.27
 22647 рд░рд┐рдХреЙрд░реНрдбрдкреНрд░реЛрдк 127.0.0.1 46650 127.0.0.1 28527 0 0 0.21
 3277 рд░реЗрдбрд┐рд╕-рд╕рд░реНрд╡рд┐рд╕ 127.0.0.1 28527 127.0.0.1 46650 0 0 0.26
 [...] 


рдпрд╣ EBPF рд╕рдВрднрд╡ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ - рдореИрдВ рдкреБрд░рд╛рдиреЗ рдХрд░реНрдиреЗрд▓ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tcplife рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВрдиреЗ рдХрд┐рдпрд╛, рддреЛ рд╣рдо рдХрдо рдкреНрд░рджрд░реНрд╢рди, рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ, рдпрд╛ рджреЛрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдЪрд▓рд╛рдПрдВрдЧреЗред eBPF рдиреЗ рдЗрд╕ рдЯреВрд▓ рдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрдирд╛рдпрд╛ рд╣реИ: рдпрд╣ рдХреБрд╢рд▓ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рд░ рдкреИрдХреЗрдЬ рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рдХрдореА рдЖ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдХреЗрд╡рд▓ рдЯреАрд╕реАрдкреА рд╕рддреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рдХрдо рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдЗрддрдирд╛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЛ 24x7 рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред


3. рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реВрдБ?


рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдмреАрд╕реАрд╕реА рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП bcc рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВред рдЙрдмрдВрдЯреВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


# sudo apt-get update
# sudo apt-get install bpfcc-tools
# sudo / usr / share / bcc / tools / opennoop
 рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЙрдо рдПрдлрдбреА рдИрдЖрд░рдЖрд░ рдкрде
 25548 рд╕реВрдХреНрддрд┐-рд╢реИрд▓ 33 0 / proc / рд╕реНрд╡ / рд╕реНрдЯреЗрдЯ
 10190 рдУрдкрдирдиреЛрдк -1 -1 2/usr/lib/python2.7/encodings/ascii.x86_64-linux-gnu.so
 10190 рдУрдкрдирдиреЛрдк -1 -1 /rr/lib/python2.7/encodings/ascii.so
 10190 рдУрдкрдирдиреЛрдк -1 -1 2/usr/lib/python2.7/encodings/asciimodale.so
 10190 Opennoop 18 0 /usr/lib/python2.7/encodings/ascii.py
 10190 рдУрдкрдирдиреЛрдк 19 19 0/usr/lib/python2.7/encodings/ascii.pyc
 25548 рд╕реВрдХреНрддрд┐-рд╢реИрд▓ 33 0 / proc / рд╕реНрд╡ / рд╕реНрдЯреЗрдЯ
 29588 рдбрд┐рд╡рд╛рдЗрд╕ рдкреЛрд▓ 4 0 / рджреЗрд╡ / рдмрд╕ / рдпреВрдПрд╕рдмреА
 ^ рд╕реА

рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЯреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрдирд┐рдВрдЧрдЯреЙрдк рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдпрд╣ рдмрд╣реБрдд рджреВрд░ рдЖ рдЧрдП рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ eBPF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ!


рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕ рдФрд░ рдлреЗрд╕рдмреБрдХ рдЬреИрд╕реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдмреАрд╕реАрд╕реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╢рд╛рдпрдж рдЖрдк рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


4. рдХреНрдпрд╛ рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЧрд╛рдЗрдб рд╣реИ?


рд╣рд╛рдВ, рдореИрдВрдиреЗ bcc рдХреЛ рдПрдХ рдЧрд╛рдЗрдб рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреЛ рдХрд┐ eBPF рдХреЗ рд╕рд╛рде рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдореЗрдВ newbies рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╣реИ:



рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ eBPF рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред bcc рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 70 рд╕реЗ рдЕрдзрд┐рдХ рдЯреВрд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрдпрд╛рд░рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрджрдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓реЗрдЧреА: рдПрдХреНрдЬрд╝рд╛рдВрд╕реНрдкрдиреЛрдк, рдУрдкрдирдиреЛрдк, рдПрдХреНрд╕рдЯрд░реНрд▓рд╕рд╛рд╡рд░ (рдпрд╛ btrfs *, xfs *, zfs *), рдмрд╛рдпреЛрд▓реИрдЯреЗрдВрд╕реА, рдмрд╛рдпреЛрд╕реЙрдиреНрдк, рдХреИрдХрд╕реИрдЯ, рдЯреИрдХрдХрдиреЗрдХреНрдЯ, рдЯреАрд╕реАрдкреАрд╕реИрдкреНрдЯ, рдЯреИрдХреНрдкреНрд░рд┐рдирд░реЗрдЯрд░, рд░рдирдХреНрд▓реИрдЯ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓ред


рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд╕рд╛рдзрди рд╣реИрдВ:



рд╡реЗ рдореИрди рдкреЗрдЬ рдЯреВрд▓реНрд╕ рдФрд░ рд╕реИрдВрдкрд▓ рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВред рдирдореВрдирд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (* _example.txt in bcc / tools) рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, biolatency_example.txt ред рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ (рджреЛрдиреЛрдВ рдореИрди рдкреЗрдЬ рдФрд░ рдЯреВрд▓) рд▓рд┐рдЦреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд 50 рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмреАрд╕реАрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛рдПрдВрдЧреЗред


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


рдЕрдиреБрднрд╡реА рдХреЗ рд▓рд┐рдП


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреАрд╕реАрд╕реА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ bpftrace рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмреАрд╕реАрд╕реА рдЬрд┐рддрдирд╛ рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмреАрд╕реАрд╕реА рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


Bpftrace рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред рдпрд╣ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдкреИрдХреЗрдЬ рдЕрднреА рддрдХ рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕реНрдерд╛рдкрд┐рдд bpftrace рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ред


1. bpftrace tutorial


рдореИрдВрдиреЗ рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХрд▓-рд▓рд╛рдЗрди рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ bpftrace рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд┐рдЦрд╛рддрд╛ рд╣реИ:



12 рдкрд╛рда рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдХрджрдо рд╕реЗ рдХрджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


# bpftrace -e 'рдЯреНрд░реЗрд╕ рдкреЙрдЗрдВрдЯ: syscalls: sys_enter_open {printf ("% d% s \ n", pid, str (args-> filename)); } '
 1 рдЬрд╛рдВрдЪ рд╕рдВрд▓рдЧреНрди ...
 181 / proc / cpuinfo
 181 / proc / рд╕реНрдЯреЗрдЯ
 1461 / рдЦрд░реАрдж / рдиреЗрдЯ / рджреЗрд╡
 1461 / proc / net / if_inet6
 ^ рд╕реА

рдпрд╣ рдкреАрдЖрдИрдбреА тАЛтАЛрдФрд░ рдЦреБрд▓реЗ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдУрдкрди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


2. bpftrace Reference Guide


Bpftrace рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЧрд╛рдЗрдб рд▓рд┐рдЦрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдорд╛рдВрдбреНрд╕ рд╣реИрдВ:



рдпрд╣ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ: рдореИрдВ рдПрдХ рдкреГрд╖реНрда рдкрд░ рд╢реАрд░реНрд╖рдХ, рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдХреБрдЫ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрдИ рдмрд╛рд░ рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


3. рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ bpftrace


Bpftrace рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ 20 рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


# рдмрд┐рд▓реНрд▓реА рдЙрдкрдХрд░рдг / biolatency.bt
 [...]
 рд╢реБрд░реВ
 {
     рдкреНрд░рд┐рдВрдЯрдл ("рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ I / O ... рдЕрдВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ctrl-C рдорд╛рд░реЛред \ n");
 }

 kprobe: blk_account_io_start
 {
     @start [arg0] = nsecs;
 }

 kprobe: blk_account_io_completion
 / @ рдкреНрд░рд╛рд░рдВрдн [arg0] /

 {
     @usecs = hist ((nsecs - @start [arg0]) / 1000);
     рд╣рдЯрд╛рдирд╛ (@start [arg0]);
 }

Bcc рдХреА рддрд░рд╣, рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рдореИрди рдкреЗрдЬ рдФрд░ рдирдореВрдирд╛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, biolatency_example.txt ред


рдЙрдиреНрдирдд рдХреЗ рд▓рд┐рдП


1. рд╣рдо рдмреАрд╕реАрд╕реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ


рдореИрдВрдиреЗ рдорджрдж рдХреЗ рд▓рд┐рдП рджреЛ рдЧрд╛рдЗрдб рдмрдирд╛рдП:



Bcc / tools / * Py рдореЗрдВ рднреА рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред Bcc рдЯреВрд▓ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: C рдореЗрдВ рд▓рд┐рдЦреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП BPF рдХреЛрдб, рдФрд░ рдкрд╛рдпрдерди (рдпрд╛ рд▓реБрдЖ, рдпрд╛ C ++) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рд╕реНрддрд░ рдХрд╛ рдЙрдкрдХрд░рдгред рдмреАрд╕реАрд╕реА рдЯреВрд▓реНрд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд╛рдлреА рдЙрдиреНрдирдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрддреНрд╡реЛрдВ рдХреЗ рдХреБрдЫ рдЫреЛрдЯреЗ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


2. рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧреАрджрд╛рд░реА


рдорджрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ:



Bpftrace рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ bpftrace рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдЧрд╛рдЗрдб рдмрдирд╛рдпрд╛ ред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬрдм рдЖрдк llvm IR рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪреБрдиреМрддреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ ...


EBPF (рдЙрд░реНрдл BPF) рдХрд╛ рдореВрд▓ рднреА рд╣реИ: рдпрджрд┐ рдЖрдк bcc рдФрд░ bpftrace рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, bpftrace рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдЯреИрдЧ ред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдиреЗрдЯ рдмреАрдкреАрдИ рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдмреАрдкреАрдПрдл рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрджреЗрд╡ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рджреЗрдЦреЗрдВ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдореЗрдирд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдиреЗрдЯ-рдиреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред


рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкрд░реАрдХреНрд╖рдг, рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ, рдмреНрд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рднреА рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред


рдирд┐рд╖реНрдХрд░реНрд╖


eBPF рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП EBPF рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреАред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:


  • рд╢реБрд░реБрдЖрдд: рдмреАрд╕реАрд╕реА рдЙрдкрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд░рдирд╛
  • рдЕрдиреБрднрд╡реА: рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ bpftrace рдЙрдкрдХрд░рдг
  • рдЙрдиреНрдирдд: bcc рдЯреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, bcc рдФрд░ bpftrace рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдирд╛

рдореЗрд░реЗ рдкрд╛рд╕ eBPF Tracing Tools рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреЗрдЬ рднреА рд╣реИ, рдЬреЛ рдЗрд╕ рд╕рдм рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдЕ рдЫрд╛!

Source: https://habr.com/ru/post/hi435142/


All Articles