¸®´ª½º Ä¿³Î 5.0 µ¿ÀÛ °úÁ¤ ÀÌÇØ¿Í tracing ½Ç½À
±³À°°úÁ¤ÀÓº£µðµå SW ¾ÆÄ«µ¥¹ÌOS System
Àüü ±³À°ÀÏÁ¤
±³À°ÀÏÁ¤ |
½Åû¸¶°¨ÀÏ |
¼ö°½Åû |
±³À°Àå¼Ò |
±³À°ÀÏÁ¤ Á¶È¸°á°ú°¡ ¾ø½À´Ï´Ù. |
°úÁ¤°³¿ä
Ŭ¶ó¿ìµå, ¼¹ö, ¸ð¹ÙÀÏ, »ç¹°ÀÎÅͳÝ(IoT), ÀΰøÁö´É(AI)½Ã½ºÅÛ ºÐ¾ß¿¡ À̸£±â±îÁö ¸®´ª½º OSÀÇ ½ÃÀåÁ¡À¯À²ÀÌ ±ÞÁõÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ¿¡µû¶ó ¸®´ª½º¸¦ È°¿ëÇÏ´Â ¼ö¸¹Àº ¼ÒÇÁÆ®¿þ¾î ±â¾÷ ¶Ç´Â Çϵå¿þ¾î Á¦Á¶»çµéÀÇ °³¹ßÀÚ,¿£Áö´Ï¾îµé¿¡°Ô ¸®´ª½º Ä¿³Î¿¡ ´ëÇÑ ÀÌÇØ¿Í ºÐ¼®´É·ÂÀÇ Á߿伺ÀÌ Á¡Á¡ ´õ Ä¿Áö°íÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ±âÁ¸ÀÇ ±³À°¸¸À¸·Î´Â ºü¸£°Ô º¯ÇØ°¡°í º¹ÀâÇØÁ®°¡´Â ÃÖ½ÅÄ¿³Î(5.0 ÀÌ»ó)À» È°¿ëÇÏ°í ÀÀ¿ëÇϱ⠾î·Æ½À´Ï´Ù.
µû¶ó¼ º» °úÁ¤Àº °è¼ÓÇؼ º¯ÈÇØ°¡´Â ÃÖ½ÅÄ¿³Î¿¡ ¹ß¸ÂÃç tracing ½Ç½ÀÀ» ÅëÇØ ±³À°À» ÁøÇàÇÕ´Ï´Ù. À̷к¸´Ù ½Ç½À¿¡ ÁßÁ¡À» µÎ¾î ¸®´ª½º tracing ±â¼ú(ftrace, tracepoint, kprobe, BPF µî)À» ÅëÇØ ÃÖ½ÅÄ¿³Î(5.0ÀÌ»ó)ÀÇ µ¿ÀÛ°úÁ¤À» ÀÌÇØÇÏ°í ¼Ò½ºÄڵ带 ºÐ¼®ÇÕ´Ï´Ù. ´õ ³ª¾Æ°¡ Â÷ÈÄ ¹öÀüÀ» ºÐ¼®ÇÏ°í ÀÌÇØÇÏ°íÀÚÇÒ¶§ µ¿ÀÏÇÑ tracing ¹æ¹ýÀ» ÅëÇØ ½º½º·Î ÇнÀÇÒ ¼ö ÀÖµµ·Ï Çϴ°ÍÀ» ¸ñÇ¥·Î ÁøÇàÇÕ´Ï´Ù.´õºÒ¾î Ä¿³Î°ú ¾îÇø®ÄÉÀ̼ǰúÀÇ °ü°è ¹× ¼º´É¿¡ ³¢Ä¡´Â ¿µÇâ¿¡ ´ëÇÑ ºÐ¼®°ú Ä¿³Î°³¹ß Âü¿©(contribution) ¹æ¹ý¿¡ ´ëÇؼµµ ÇÔ²² ½Ç½ÀÀ» ÁøÇàÇÕ´Ï´Ù.
* ¼±¼ö°úÁ¤ - ¿î¿µÃ¼Á¦ ÀÌ·Ð, C¾ð¾î, ¸®´ª½ºÈ°¿ë
ƯÀÌ»çÇ×
±³À°¸ñÀû
- ¸®´ª½º Ä¿³Î(5.0 ÀÌ»ó)ÀÇ µ¿ÀÛ°úÁ¤À» ÀÌÇØÇÏ°í ½Ç½ÀÀ» ÅëÇØ °ËÁõÇÕ´Ï´Ù.
- ¸®´ª½º Ä¿³Î ¼Ò½º¸¦ ºÐ¼®ÇÏ°í ÁÖ¿ä ÇÔ¼ö¿Í ÁÖ¿ä ÀڷᱸÁ¶¸¦ ÇнÀÇÕ´Ï´Ù.
- printk»ðÀÔ, ÀçºÎÆà ¾øÀÌ ½ÇÇà Áß¿¡ Ä¿³Î µ¥ÀÌÅÍ ¹× ÇÔ¼öÈ£Ãâ°úÁ¤À» ÃßÀû(tracing)¹æ¹ýÀ» ÇнÀÇÕ´Ï´Ù.
- ÃֽŠ¸®´ª½º Ä¿³Î ¿ÀǼҽº °³¹ßÂü¿©(contribution)¹æ¹ýÀ» ÇнÀÇÕ´Ï´Ù.
±³À°´ë»ó
- ¸®´ª½º Ä¿³Î µ¿ÀÛ°úÁ¤À» ÀÌÇØÇÏ°í ºÐ¼®ÇÏ°íÀÚ ÇÏ´Â °³¹ßÀÚ/¿£Áö´Ï¾î
- ¸®´ª½º Ä¿³Î°ú ¾îÇø®ÄÉÀ̼ǰúÀÇ °ü°è ¹× ¼º´ÉºÐ¼®À» ÇÏ°íÇÏÀÚ´Â °³¹ßÀÚ/¿£Áö´Ï¾î
- ¸®´ª½º Ä¿³Î °³¹ß¿¡ Âü¿©(contribution)ÇÏ°íÀÚ ÇÏ´Â °³¹ßÀÚ/¿£Áö´Ï¾î
±³À°³»¿ë
±¸ºÐ | ¸ñÂ÷ | ¼¼ºÎ³»¿ë
| 1ÀÏÂ÷ | - ÇÁ·Î±×·¥(user/kernel) ½ÇÇà ¿ø¸® - ¸Þ¸ð¸® ¾×¼¼½º °úÁ¤ - °¡»óÁÖ¼Ò(virtual address) È°¿ë¹ý - ¹°¸® ¸Þ¸ð¸® °ü¸® |
- ¸®´ª½º Ä¿³ÎÀÇ ±¸¼º°ú ÄÄÇ»ÅÍ ±¸Á¶, NUMA - a.out(user) / vmlinux(kernel) ¹ÙÀ̳ʸ® ÀÌÇØ (readelf, objdump) - user / library / kernel ÇÔ¼öÀÇ ½ÇÇàÈ帧 tracing ½Ç½À - pagefault ¹ß»ýÇÏ´Â ÀÌÀ¯¿Í handler µ¿ÀÛ°úÁ¤ tracing ½Ç½À - VMA(virtual memory area) ¿Í pagetable - ¹°¸® ¸Þ¸ð¸®ÇÒ´ç(alloc_pages)°ú ¹öµð½Ã½ºÅÛ tracing ½Ç½À
| 2ÀÏÂ÷ | - ¸Þ¸ð¸® °ü¸® - ÆÄÀÏread / write °úÁ¤ |
- slab / slub / slob µ¿ÀÛ°úÁ¤ tracing½Ç½À - vmalloc µ¿ÀÛ°úÁ¤ tracing ½Ç½À - ÆäÀÌÁö ȸ¼ö µ¿ÀÛ°úÁ¤ tracing½Ç½À - VFS / FS / Block / SCSI layer ÆÄÀÏ I/O tracing ½Ç½À - writeback µ¿ÀÛ°úÁ¤ tracing ½Ç½À - mmap / memory-mapped file I/Oµ¿ÀÛ°úÁ¤ tracing ½Ç½À
| 3ÀÏÂ÷ | - ÀÎÅÍ·´Æ®¿Í BH - ³×Æ®¿öÅ©(TCP/IP) I/O °úÁ¤ |
- do_IRQ() µ¿ÀÛ°úÁ¤ tracing ½Ç½À - ksoftirqd ¿Í kworker µ¿ÀÛ°úÁ¤ tracing½Ç½À - sk_buff¿Í TCP/IP µ¿ÀÛ°úÁ¤(ex.À¥ ºê¶ó¿ìÀú µ¿ÀÛ) - DD / IP / TCP Layer ÆÐŶ ¼Û¼ö½Å µ¿ÀÛ°úÁ¤tracing ½Ç½À - NAPI µ¿ÀÛ°úÁ¤ tracing ½Ç½À - packet forwarding / fragmentation
| 4ÀÏÂ÷ | - ½ºÄÉÁÙ¸µ°ú context switch - ½Ã±×³Î enq / deq °úÁ¤ - µ¿±âÈ À̽´¿Í locking - cgroup(memory, cpu)µ¿ÀÛ°úÁ¤ ºÐ¼® - Ä¿³Î°³¹ßÂü¿©(contribution) ½Ç½À |
- run queue¿Í wait queueÀÇ enq / deq °úÁ¤ tracing ½Ç½À - scheduleÇÔ¼ö ¿Í context switch °úÁ¤ tracing ½Ç½À - ½Ã±×³Î generate(enq) / deliver(deq) °úÁ¤ tracing ½Ç½À - ¼±Á¡(preempt)°ú locking, panic fix commitÀÇ ÀÌÇØ - cgroup(cpu,mem) µ¿ÀÛ°úÁ¤ tracing ½Ç½À - ¿ÀǼҽº °³¹ß¹®È(git, patch mail)
|
|
÷ºÎÆÄÀÏ
[°úÁ¤¼Ò°³¼]_¸®´ª½º Ä¿³Î 5.0 µ¿ÀÛ°úÁ¤ ÀÌÇØ¿Í tracing ½Ç½À.pdf