- ÇöÀç À§Ä¡
- home > ÄÄÇ»ÅÍ¡¤ICT¡¤¾îÇÐ > ÄÄÇ»ÅÍ¡¤IT µµ¼ > OS(¿î¿µÃ¼Á¦) > BPF¸¦ È°¿ëÇÑ ¸®´ª½º ½Ã½ºÅÛ Æ®·¹À̽Ì[À§Å°ºÏ½º]
¸®´ª½º ½Ã½ºÅÛ¿¡¼ ¹ß»ýÇÏ´Â ¹®Á¦¸¦ ã°í ÇØ°áÇϱâ À§ÇÑ ¹æ¹ýÀ» ¾Ë·Áµå¸³´Ï´Ù!
ÀÌ Ã¥Àº ¸®´ª½º ½Ã½ºÅÛÀ» °üÂûÇϱâ À§ÇÑ µµ±¸·Î BPF¸¦ ¼Ò°³ÇÕ´Ï´Ù. BPF¸¦ È°¿ëÇϸé ÄÚµåÀÇ º¯°æ ¾øÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¿ÀÛ°ú »óŸ¦ ±í°Ô ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. BPF´Â ½Ã½ºÅÛÀÇ ºÎÇϸ¦ ÃÖ¼ÒÈÇÏ¸é¼ ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ À¯¿¬ÇÑ Æ®·¹ÀÌ½Ì È¯°æÀ» Á¦°øÇÔÀ¸·Î½á ¸®´ª½º ȯ°æ¿¡¼ ¼ºñ½º¸¦ °³¹ßÇÏ°í ¿î¿µÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¿¡°Ô Æ®·¯ºí½´Æðú µð¹ö±ë¿¡ ÇÊ¿äÇÑ Ä¿³Î°ú »ç¿ëÀÚ ¿µ¿ªÀ» ¾Æ¿ï·¯ ½Ã½ºÅÛÀ» °üÅëÇÏ´Â ½Ã°¢À» Á¦°øÇÕ´Ï´Ù. ?
ÀÌ Ã¥Àº ¸®´ª½º ½Ã½ºÅÛÀ» °üÂûÇϱâ À§ÇÑ µµ±¸·Î BPF¸¦ ¼Ò°³ÇÕ´Ï´Ù. BPF¸¦ È°¿ëÇϸé ÄÚµåÀÇ º¯°æ ¾øÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¿ÀÛ°ú »óŸ¦ ±í°Ô ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. BPF´Â ½Ã½ºÅÛÀÇ ºÎÇϸ¦ ÃÖ¼ÒÈÇÏ¸é¼ ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ À¯¿¬ÇÑ Æ®·¹ÀÌ½Ì È¯°æÀ» Á¦°øÇÔÀ¸·Î½á ¸®´ª½º ȯ°æ¿¡¼ ¼ºñ½º¸¦ °³¹ßÇÏ°í ¿î¿µÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¿¡°Ô Æ®·¯ºí½´Æðú µð¹ö±ë¿¡ ÇÊ¿äÇÑ Ä¿³Î°ú »ç¿ëÀÚ ¿µ¿ªÀ» ¾Æ¿ï·¯ ½Ã½ºÅÛÀ» °üÅëÇÏ´Â ½Ã°¢À» Á¦°øÇÕ´Ï´Ù. ?
ÀúÀÚ: Á¤ÂùÈÆ (ÁöÀºÀÌ)
¢Ã 01Àå: µé¾î°¡¸ç
¢Ã 02Àå: BPF¶õ?
2.1 cBPF
2.2 eBPF
2.3 BCC, bpftrace, ±×¸®°í IO Visor
2.4 Æ®·¹À̰̽ú »ùÇøµ
¢Ã 03Àå: BPFÀÇ °³³ä
3.1 BPF ¾ÆÅ°ÅØó
3.2 BPF ÇÁ·Î±×·¥ ŸÀÔ
3.3 ¸Ê°ú ¿ÀºêÁ§Æ® ÇÇ´×
__3.3.1 ¸Ê
__3.3.2 ¿ÀºêÁ§Æ® ÇÇ´×
3.4 BTF¿Í CO-RE
3.5 Å×ÀÏ ÄÝ°ú BPF to BPF ÄÝ
3.6 JIT
3.7 XDP¿Í Çϵå¿þ¾î ¿ÀÇÁ·Îµå
3.8 ÇïÆÛ ÇÔ¼ö
3.9 °Ë»ç±â
3.10 Á¦¾à»çÇ×
3.11 ´Ù¸¥ ¹æ¹ý°ú ºñ±³
__3.11.1 Ä¿³Î ¸ðµâ
__3.11.2 ½Ã½ºÅÛ ÅÇ
__3.11.3 LTTng
__3.11.4 Perf
__3.11.5 {f,l,s,uf}trace
¢Ã 04Àå: À̺¥Æ®
4.1 kprobe
4.2 uprobe
4.3 Æ®·¹À̽ºÆ÷ÀÎÆ®
4.4 USDT
4.5 ¼ÒÇÁÆ®¿þ¾î ¹× Çϵå¿þ¾î À̺¥Æ®
¢Ã 05Àå: ½ºÅà Ʈ·¹À̽º
5.1 ½ºÅà Ʈ·¹À̽º Á¾·ù
__5.1.1 ÇÁ·¹ÀÓÆ÷ÀÎÅÍ
__5.1.2 DWARF
__5.1.3 LBR
__5.1.4 ORC
5.2 ½ºÅà Á¤º¸ ¼öÁý
5.3 °¡½ÃÈ
__5.3.1 Ç÷¹ÀÓ±×·¡ÇÁ
__5.3.2 Ç÷¹ÀÓ½ºÄÚÇÁ
¢Ã 06Àå: BPF ´Ù·ç±â
6.1 ȯ°æ ¼³Á¤
__6.1.1 ¸®´ª½º ¸Ó½Å
__6.1.2 Ä¿³Î°ú Ä¿³Î Çì´õ
__6.1.3 ¹èÆ÷ÆǺ° ÆÐÅ°Áö
__6.1.4 µµÄ¿
6.2 BCC tools
6.3 bpftrace
__6.3.1 ¿¹Á¦·Î »ìÆ캸±â
__6.3.2 ±âº» ¹®¹ý
__6.3.3 ÇÁ·çºê
__6.3.4 ÇÊÅÍ
__6.3.5 ¾×¼Ç
__6.3.6 º¯¼ö
__6.3.7 ÇÔ¼ö
__6.3.8 º¹ÀâÇÑ ±¸Á¶Ã¼ È®ÀÎ
__6.3.9 Ç÷¹ÀÓ½ºÄÚÇÁ
¢Ã 07Àå: BCC ÇÁ·Î±×·¡¹Ö
7.1 ¿¹Á¦·Î »ìÆ캸±â
7.2 BPF ÃʱâÈ
7.3 À̺¥Æ®
__7.3.1 kprobe¿Í kretprobe
__7.3.2 Æ®·¹À̽ºÆ÷ÀÎÆ®
__7.3.3 kfunc¿Í kretfunc
__7.3.4 uprobe¿Í uretprobe
__7.3.5 USDT
7.4 ¸Ê
__7.4.1 ÆÄÀ̽㿡¼ ¸Ê ´Ù·ç±â
7.5 Ä¿³Î ¹× »ç¿ëÀÚ ¿µ¿ªÀÇ µ¥ÀÌÅÍ
7.6 Ãâ·Â ä³Î
7.7 ½É¹ú ó¸®
7.8 ½ºÅà Ʈ·¹À̽º
7.9 TC¿Í XDP
7.10 ¿ÀºêÁ§Æ® ÇÇ´×
7.11 Å×ÀÏ ÄÝ
¢Ã 08Àå: BPF tool°ú BTF
8.1 BPF tool
8.2 BTF
¢Ã 09Àå: ½Ã½ºÅÛ°ú ¾ÖÇø®ÄÉÀ̼Ç
9.1 ½Ã½ºÅÛ
__9.1.1 CPU
__9.1.2 ¸Þ¸ð¸®
__9.1.3 ÆÄÀÏ ½Ã½ºÅÛ
__9.1.4 ºí·Ï I/O
__9.1.5 ³×Æ®¿öÅ©
9.2 ¾ÖÇø®ÄÉÀ̼Ç
__9.2.1 C/C
__9.2.2 °í·©
__9.2.3 ·¯½ºÆ®
__9.2.4 ÀÚ¹Ù
__9.2.5 ÆÄÀ̽ã
__9.2.6 ³ëµå
__9.2.7 ·çºñ
__9.2.8 ÆÞ
__9.2.9 PHP
__9.2.10 Bash
¢Ã 10Àå: ÄÁÅ×ÀÌ³Ê ¹× Ŭ·¯½ºÅÍ È¯°æ
10.1 ÄÁÅ×À̳Ê
__10.1.1 cgroup
__10.1.2 ³×ÀÓ½ºÆäÀ̽º
__10.1.3 ÄÁÅ×ÀÌ³Ê ÇÊÅ͸µ
__10.1.4 USDT, UPROBE
10.2 Äí¹ö³×Ƽ½º
__10.2.1 kubectl Trace
__10.2.2 Inspektor Gadget
¢Ã 11Àå: ¸ð´ÏÅ͸µ
11.1 ebpf exporter
11.2 tracee
¢Ã ºÎ·ÏA: Æ®·¯ºí½´ÆÃ
¢Ã ºÎ·ÏB: Àú¼öÁØ BPF ÇÁ·Î±×·¡¹Ö
B.1 libbpf ÇÁ·Î±×·¡¹Ö
B.2 Ä¿³ÎÀÇ BPF ¿¹Á¦
¢Ã ºÎ·ÏC: °áÇÔ ÁÖÀÔ
¢Ã ºÎ·ÏD: ½Ç½À ȯ°æ ±¸Ãà
¢Ã 02Àå: BPF¶õ?
2.1 cBPF
2.2 eBPF
2.3 BCC, bpftrace, ±×¸®°í IO Visor
2.4 Æ®·¹À̰̽ú »ùÇøµ
¢Ã 03Àå: BPFÀÇ °³³ä
3.1 BPF ¾ÆÅ°ÅØó
3.2 BPF ÇÁ·Î±×·¥ ŸÀÔ
3.3 ¸Ê°ú ¿ÀºêÁ§Æ® ÇÇ´×
__3.3.1 ¸Ê
__3.3.2 ¿ÀºêÁ§Æ® ÇÇ´×
3.4 BTF¿Í CO-RE
3.5 Å×ÀÏ ÄÝ°ú BPF to BPF ÄÝ
3.6 JIT
3.7 XDP¿Í Çϵå¿þ¾î ¿ÀÇÁ·Îµå
3.8 ÇïÆÛ ÇÔ¼ö
3.9 °Ë»ç±â
3.10 Á¦¾à»çÇ×
3.11 ´Ù¸¥ ¹æ¹ý°ú ºñ±³
__3.11.1 Ä¿³Î ¸ðµâ
__3.11.2 ½Ã½ºÅÛ ÅÇ
__3.11.3 LTTng
__3.11.4 Perf
__3.11.5 {f,l,s,uf}trace
¢Ã 04Àå: À̺¥Æ®
4.1 kprobe
4.2 uprobe
4.3 Æ®·¹À̽ºÆ÷ÀÎÆ®
4.4 USDT
4.5 ¼ÒÇÁÆ®¿þ¾î ¹× Çϵå¿þ¾î À̺¥Æ®
¢Ã 05Àå: ½ºÅà Ʈ·¹À̽º
5.1 ½ºÅà Ʈ·¹À̽º Á¾·ù
__5.1.1 ÇÁ·¹ÀÓÆ÷ÀÎÅÍ
__5.1.2 DWARF
__5.1.3 LBR
__5.1.4 ORC
5.2 ½ºÅà Á¤º¸ ¼öÁý
5.3 °¡½ÃÈ
__5.3.1 Ç÷¹ÀÓ±×·¡ÇÁ
__5.3.2 Ç÷¹ÀÓ½ºÄÚÇÁ
¢Ã 06Àå: BPF ´Ù·ç±â
6.1 ȯ°æ ¼³Á¤
__6.1.1 ¸®´ª½º ¸Ó½Å
__6.1.2 Ä¿³Î°ú Ä¿³Î Çì´õ
__6.1.3 ¹èÆ÷ÆǺ° ÆÐÅ°Áö
__6.1.4 µµÄ¿
6.2 BCC tools
6.3 bpftrace
__6.3.1 ¿¹Á¦·Î »ìÆ캸±â
__6.3.2 ±âº» ¹®¹ý
__6.3.3 ÇÁ·çºê
__6.3.4 ÇÊÅÍ
__6.3.5 ¾×¼Ç
__6.3.6 º¯¼ö
__6.3.7 ÇÔ¼ö
__6.3.8 º¹ÀâÇÑ ±¸Á¶Ã¼ È®ÀÎ
__6.3.9 Ç÷¹ÀÓ½ºÄÚÇÁ
¢Ã 07Àå: BCC ÇÁ·Î±×·¡¹Ö
7.1 ¿¹Á¦·Î »ìÆ캸±â
7.2 BPF ÃʱâÈ
7.3 À̺¥Æ®
__7.3.1 kprobe¿Í kretprobe
__7.3.2 Æ®·¹À̽ºÆ÷ÀÎÆ®
__7.3.3 kfunc¿Í kretfunc
__7.3.4 uprobe¿Í uretprobe
__7.3.5 USDT
7.4 ¸Ê
__7.4.1 ÆÄÀ̽㿡¼ ¸Ê ´Ù·ç±â
7.5 Ä¿³Î ¹× »ç¿ëÀÚ ¿µ¿ªÀÇ µ¥ÀÌÅÍ
7.6 Ãâ·Â ä³Î
7.7 ½É¹ú ó¸®
7.8 ½ºÅà Ʈ·¹À̽º
7.9 TC¿Í XDP
7.10 ¿ÀºêÁ§Æ® ÇÇ´×
7.11 Å×ÀÏ ÄÝ
¢Ã 08Àå: BPF tool°ú BTF
8.1 BPF tool
8.2 BTF
¢Ã 09Àå: ½Ã½ºÅÛ°ú ¾ÖÇø®ÄÉÀ̼Ç
9.1 ½Ã½ºÅÛ
__9.1.1 CPU
__9.1.2 ¸Þ¸ð¸®
__9.1.3 ÆÄÀÏ ½Ã½ºÅÛ
__9.1.4 ºí·Ï I/O
__9.1.5 ³×Æ®¿öÅ©
9.2 ¾ÖÇø®ÄÉÀ̼Ç
__9.2.1 C/C
__9.2.2 °í·©
__9.2.3 ·¯½ºÆ®
__9.2.4 ÀÚ¹Ù
__9.2.5 ÆÄÀ̽ã
__9.2.6 ³ëµå
__9.2.7 ·çºñ
__9.2.8 ÆÞ
__9.2.9 PHP
__9.2.10 Bash
¢Ã 10Àå: ÄÁÅ×ÀÌ³Ê ¹× Ŭ·¯½ºÅÍ È¯°æ
10.1 ÄÁÅ×À̳Ê
__10.1.1 cgroup
__10.1.2 ³×ÀÓ½ºÆäÀ̽º
__10.1.3 ÄÁÅ×ÀÌ³Ê ÇÊÅ͸µ
__10.1.4 USDT, UPROBE
10.2 Äí¹ö³×Ƽ½º
__10.2.1 kubectl Trace
__10.2.2 Inspektor Gadget
¢Ã 11Àå: ¸ð´ÏÅ͸µ
11.1 ebpf exporter
11.2 tracee
¢Ã ºÎ·ÏA: Æ®·¯ºí½´ÆÃ
¢Ã ºÎ·ÏB: Àú¼öÁØ BPF ÇÁ·Î±×·¡¹Ö
B.1 libbpf ÇÁ·Î±×·¡¹Ö
B.2 Ä¿³ÎÀÇ BPF ¿¹Á¦
¢Ã ºÎ·ÏC: °áÇÔ ÁÖÀÔ
¢Ã ºÎ·ÏD: ½Ç½À ȯ°æ ±¸Ãà
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡Ý Æ®·¹ÀÌ½Ì µµ±¸·Î¼ÀÇ BPF ¼Ò°³
¡Ý BCC ¹× bpftrace ÇÁ·Î±×·¡¹Ö
¡Ý BPF ±â¹Ý Æ®·¹ÀÌ½Ì µµ±¸ ¼Ò°³¿Í È°¿ë
¡Ý ½Ã½ºÅÛ ¸®¼Ò½º, ÇÁ·Î±×·¡¹Ö ¾ð¾îº° BPF È°¿ë¹ý
¡Ý ºÐ¼® °á°úÀÇ °¡½ÃÈ
¡Ý ÄÁÅ×ÀÌ³Ê ¹× Äí¹ö³×Ƽ½º ȯ°æ¿¡¼ÀÇ BPF »ç¿ë¹ý
¡Ý Æ®·¹ÀÌ½Ì µµ±¸·Î¼ÀÇ BPF ¼Ò°³
¡Ý BCC ¹× bpftrace ÇÁ·Î±×·¡¹Ö
¡Ý BPF ±â¹Ý Æ®·¹ÀÌ½Ì µµ±¸ ¼Ò°³¿Í È°¿ë
¡Ý ½Ã½ºÅÛ ¸®¼Ò½º, ÇÁ·Î±×·¡¹Ö ¾ð¾îº° BPF È°¿ë¹ý
¡Ý ºÐ¼® °á°úÀÇ °¡½ÃÈ
¡Ý ÄÁÅ×ÀÌ³Ê ¹× Äí¹ö³×Ƽ½º ȯ°æ¿¡¼ÀÇ BPF »ç¿ë¹ý