óÀ½, ÀÌÀü, ´ÙÀ½, ¸¶Áö¸· ¼½¼Ç,  ¸ñÂ÷


gprof Ãâ·ÂÀÇ ºÎÀûÈ®¼º

Åë°èÀû »ùÇøµ ¿¡·¯ (Statistical Sampling Error)

gprof ÀÌ °è»êÇس»´Â ½ÇÇà½Ã°£ ¼öÄ¡°ªµéÀº »ùÇøµ °úÁ¤(sampling process)¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù. µû¶ó¼­ ÀÌµé ¼öÄ¡°ª¿¡´Â Åë°èÀû ºÎÁ¤È®¼ºÀÌ ³»Æ÷µÇ±â ¸¶·ÃÀÌ´Ù. ÇÔ¼ö°¡ ±ØÈ÷ ªÀº ½Ã°£µ¿¾È¿¡¸¸ ½ÇÇàµÇ´Â °æ¿ì, Æò±ÕÀûÀ¸·Î »ùÇøµ°úÁ¤Àº ÇÔ¼ö°¡ ½ÇÇàµÇ°í ÀÖÀ» ¶§ Çѹø¸¸ Àâ¾Æ¾ß ÇÑ´Ù. ±×·¯³ª ½ÇÁ¦ »ùÇøµ °úÁ¤¿¡¼­ ÇÔ¼ö¸¦ 0¹ø ¶Ç´Â 2¹ø »ùÇøµÇÒ °¡´É¼ºµµ ¸¹´Ù.

ÀÌ¿Í ´ëÁ¶ÀûÀ¸·Î È£ÃâÀÇ È½¼ö(number-of-calls)¿Í ±âº» ºí·Ï¿¡ °ü·ÃµÈ ¼öÄ¡µéÀº »ùÇøµ´ë½Å Ä«¿îÆÿ¡ ÀÇÇØ ±¸ÇØÁø´Ù. Ä«¿îÆÃÀ¸·Î ±¸ÇØÁø ¼öÄ¡µéÀº Á¤È®Çϸç ÇÁ·Î±×·¥ÀÌ deterministicÇÏ´Ù¸é ¼­·Î ´Ù¸¥ °¢°¢ÀÇ ½ÇÇà¿¡¼­ ¾òÀº °ªÀÏÁö¶óµµ µ¿ÀÏÇÏ°Ô ³ª¿Â´Ù.

Flat profileÀÇ ¾ÕºÎºÐ¿¡ Ãâ·ÂµÇ´Â »ùÇøµ ÁÖ±â(sampling period)´Â ¾ó¸¶³ª ÀÚÁÖ »ùÇøµÀ» Çߴ°¡¸¦ ³ªÅ¸³½´Ù. °æÇèÀûÀ¸·Î º¼¶§, ½ÇÇà ½Ã°£¿¡ °ü·ÃµÈ ¼öÄ¡°ªµéÀÌ »ùÇøµ Áֱ⺸´Ù »ó´çÈ÷ Å« °æ¿ì¿¡´Â ½ÇÇà ½Ã°£¿¡ °ü·ÃµÈ ¼öÄ¡°ªÀº Á¤È®ÇÑ °ªÀ̶ó°í ºÁµµ ¹«¹æÇÏ´Ù.

½ÇÁ¦ ¿ÀÂ÷·®(actual amount of error)´Â ¿¹Ãø °¡´ÉÇÏ´Ù. n °³ÀÇ »ùÇÿ¡ ´ëÇÏ¿©, ¿¡·¯ÀÇ ±â´ë°ª(expected error)´Â n ÀÇ Á¦°ö±ÙÀÌ´Ù. ¿¹¸¦ µé¾î »ùÇøµ ÁֱⰡ 0.01ÃÊÀ϶§ fooÇÔ¼öÀÇ ½ÇÇà½Ã°£ÀÌ 1ÃÊÀÎ °æ¿ì, »ùÇÃÀÇ °³¼ö n Àº 100(=1ÃÊ/0.01ÃÊ)ÀÌ°í, sqrt(n)Àº 10ÀÌ µÈ´Ù. µû¶ó¼­ foo ÇÔ¼öÀÇ ½ÇÇà ½Ã°£ÀÇ ¿¡·¯ÀÇ ±â´ë°ªÀº 0.1ÃÊ(=10*0.01ÃÊ)°¡ µÈ´Ù. Áï, ½ÇÇèÀ» ÅëÇØ ¾òÀº ½ÇÇà ½Ã°£(=1ÃÊ)ÀÇ 10%Á¤µµÀÌ´Ù. ¶Ç ´Ù¸¥ ¿¹·Î, »ùÇøµ ÁֱⰡ 0.01À϶§ bar ÇÔ¼öÀÇ ½ÇÇà½Ã°£ÀÌ 100ÃÊÀÎ °æ¿ì, »ùÇÃÀÇ °¹¼ö nÀº 10000(=100ÃÊ/0.01ÃÊ)ÀÌ°í, sqrt(n)Àº 100ÀÌ µÈ´Ù. µû¶ó¼­ bar ÇÔ¼öÀÇ ½ÇÇà ½Ã°£ÀÇ ¿¡·¯ÀÇ ±â´ë°ªÀº 1ÃÊ(=100*0.1ÃÊ)°¡ µÈ´Ù. Áï, ½ÇÇèÀ» ÅëÇØ ¾òÀº ½ÇÇà½Ã°£(1000ÃÊ)ÀÇ 1%Á¤µµÀÌ´Ù.  ¿¡·¯ÀÇ ±â´ë°ªÀº ¼­·Î ´Ù¸¥ ÇÁ·ÎÆÄÀϸµ ·±(profiling run)¿¡¼­ Æò±ÕÀûÀ¸·Î À̺¸´Ù Ä¿Áú ¼öµµ ÀÖÀ¸¸é, ¶§¶§·Î ´õ Å« ÆøÀ¸·Î º¯ÀÌ°¡ »ý±æ ¼öµµ ÀÖ´Ù.

±×·¯³ª À§ÀÇ ¼³¸íÀÌ "½ÇÇà ½Ã°£ ¼öÄ¡°ªÀÌ ÀÛ´Ù°í Çؼ­ ¾òÀ» ¼ö ÀÖ´Â Á¤º¸°¡ ¾ø´Ù"´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. ¸¸ÀÏ ÇÁ·Î±×·¥ÀÇ Àüü ½ÇÇà ½Ã°£ÀÌ Å©´Ù¸é, ƯÁ¤ ÇÔ¼öÀÇ ½ÇÇà½Ã°£ÀÌ ÀÛ´Ù´Â °ÍÀº ±× ÇÔ¼ö°¡ Àüü ÇÁ·Î±×·¥ ½ÇÇà½Ã°£¿¡¼­ ¾ÆÁÖ ÀûÀº ºÎºÐÀ» Â÷ÁöÇÏ°í ÀÖ´Ù´Â °ÍÀ» ¸»ÇØ ÁØ´Ù. µû¶ó¼­ ÀÌ·± ÇÔ¼ö´Â ÃÖÀûÈ­¸¦ ÇÑ´ÙÇصµ º°·Î À̵æÀÌ ¾øÀ½À» ¾Ë ¼ö ÀÖ´Ù.

½ÇÇà ½Ã°£°ú °ü·ÃµÈ ¼öÄ¡ °ªÀÇ Á¤È®¼ºÀ» ³ôÀÏ ¼ö ÀÖ´Â ¹æ¹ýÀÇ Çϳª´Â ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ´Â ÀÔ·Â µ¥ÀÌÅÍÀÇ ·®À» ´Ã·Á¼­ ÇÁ·Î±×·¥ ½ÇÇà½Ã°£ÀÌ ±æ¾îÁö°Ô ÇÏ´Â °ÍÀÌ´Ù( ´Ü, ¿©±â¼­ ÀÔ·Â µ¥ÀÌÅÍÀÇ Æ¯¼ºÀ» À¯»çÇÏ°Ô À¯ÁöµÇ¾î¾ß ÇÑ´Ù).  ¶Ç´Ù¸¥ ¹æ¹ýÀ¸·Î´Â ¾Æ·¡¿¡¼­ Á¦½ÃÇÑ °Í°ú °°ÀÌ gprofÀÇ `-s' ¿É¼ÇÀ» »ç¿ëÇÏ¿© ¿©·¯ ¹øÀÇ ·±À» ÅëÇØ ¾ò¾îÁø ´©Àû µ¥ÀÌÅ͸¦ Á¾ÇÕÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.

  1. ÇÁ·Î±×·¥À» 1ȸ ½ÇÇàÇÑ´Ù.
  2. ´ÙÀ½°ú °°Àº ¸í·É¾î¸¦ ÅëÇÏ¿© ÀÌÀü °á°ú¸¦ ``gmon.sum'ÆÄÀÏ¿¡ ÀúÀåÇÑ´Ù.

    `mv gmon.out gmon.sum'.
     
  3. ÀÌÀü°ú µ¿ÀÏÇÏ°Ô ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇÑ´Ù.
  4. ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© `gmon.out' ÆÄÀÏ¿¡ ÀÖ´Â »õ·Î¿î µ¥ÀÌÅÍ¿Í `gmon.sum' ÆÄÀÏ¿¡ ÀÖ´Â ÀÌÀü µ¥ÀÌÅ͸¦ º´ÇÕÇÑ´Ù.
    gprof -s executable-file gmon.out gmon.sum
    
  5. 3°ú 4ÀÇ °úÁ¤À» ÇÊ¿äÇÑ ¸¸Å­ ¹Ýº¹ÇÏ¿© ÁøÇàÇÑ´Ù.
  6. ´ÙÀ½°ú °°Àº ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ´©Àû µ¥ÀÌÅÍ¿¡ ´ëÇÑ ºÐ¼®À» ¼öÇàÇÑ´Ù.
    gprof executable-file gmon.sum > output-file
    

children ÇʵåÀÇ ½Ã°£°ª ÃßÁ¤

Call graph¿¡ ÀÖ´Â ¼öÄ¡Áß ÀϺΠ°ªÀº ÃßÁ¤Ä¡(estimate)ÀÌ´Ù. ¿¹¸¦ µé¾î, children ÇʵåÀÇ ½Ã°£ °ª°ú call-line ¶Ç´Â subroutine-line¿¡ ÀÖ´Â ¸ðµç ½Ã°£ °ü·Ã ¼öÄ¡´Â ÃßÁ¤°ªÀÌ´Ù.

ÇÁ·ÎÆÄÀÏ µ¥ÀÌÅÍ ÀÚü¿¡´Â ÀÌµé °ª¿¡ ´ëÇÑ Á÷Á¢ÀûÀÎ Á¤º¸°¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡, gprof Àº ¾î¶² °¡Á¤ÇÑ »óÅÂÇÏ¿¡¼­ ÃßÁ¤ÇÏ°Ô µÈ´Ù(gprof °¡ ÃßÁ¤¿¡ »ç¿ëÇÑ °¡Á¤µéÀº ¸ÂÀ» ¼öµµ ÀÖ°í Ʋ¸± ¼öµµ ÀÖ´Ù) .

gprof °¡ ÃßÁ¤¿¡ »ç¿ëÇÏ´Â °¡Á¤Áß Çϳª´Â "ÀÓÀÇÀÇ ÇÔ¼ö foo ¿¡ ´ëÇÑ °¢°¢ÀÇ È£Ãâ¿¡ ¼Ò¿äµÈ Æò±Õ½Ã°£°ú foo ÇÔ¼öÀÇ caller¿Í´Â »ó°ü °ü°è(correlation)°¡ ¾ø´Ù"ÀÌ´Ù. ¿¹¸¦ µé¾î foo °¡ ÀüüÀûÀ¸·Î 5 Ãʸ¦ »ç¿ëÇÏ¿´°í, foo ÇÔ¼ö¿¡ ´ëÇÑ ÃÑ È£ÃâȽ¼öÀÇ 2/5°¡ ÇÔ¼ö a¿¡¼­ÀÇ È£ÃâÀ̾ú´Ù¸é, a ÇÔ¼öÀÇ children ÇʵåÀÇ ½Ã°£Áß¿¡¼­ 2ÃÊ´Â foo ÇÔ¼ö°¡ ¸¸µé¾î ³½ °ÍÀÌ´Ù.

gprof ÀÌ ÃßÁ¤Ä¡¸¦ °è»êÇÒ ¶§ »ç¿ëÇÑ À§ÀÇ °¡Á¤Àº ÀϹÝÀûÀ¸·Î ¹«¸®°¡ ¾øÁö¸¸, ¾î¶² ƯÁ¤ ÇÁ·Î±×·¥¿¡¼­´Â ÀÌ·¯ÇÑ °¡Á¤ÀÌ À߸øµÈ °ÍÀÏ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î i) foo ÇÔ¼öÀÇ ÀÎÀÚ°¡ 0ÀÏ ¶§ ¾ÆÁÖ »¡¸® ¸®ÅÏÇÏ°í, ii) a ÇÔ¼ö´Â Ç×»ó ÀÎÀÚ·Î 0À» »ç¿ëÇÏ¿© foo ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¹Ý¸é iii) foo ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ´Ù¸¥ callerµéÀº 0ÀÌ ¾Æ´Ñ ¾Æ±Ô¸ÕÆ®¸¦ Àü´ÞÇÑ´Ù°í °¡Á¤ÇÒ ¶§, foo ÇÔ¼ö¸¦ È£ÃâÇßÀ» ¶§ ¼ÒºñµÈ ½Ã°£ÀÇ ÃÑÇÕÀº a ÇÔ¼ö¸¦ Á¦¿ÜÇÑ ´Ù¸¥ caller ÇÔ¼öµé¿¡¼­ÀÇ È£Ãâ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù. ±×·¯³ª gprof ¿¡¼­´Â ÀÌ·¯ÇÑ »óȲÀ» ¾Ë ¹æ¹ýÀÌ ¾ø±â ¶§¹®¿¡, ¹«Á¶°Ç foo ÇÔ¼ö°¡ ¼ÒºñÇÑ ½Ã°£Áß 2ÃÊ(=5ÃÊ * 2/5)¸¦ a ÇÔ¼öÀÇ children Çʵ忡 ´õÇعö¸°´Ù.

À§¿Í °°Àº »óȲÀ» ÆÇ´ÜÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» °í¾ÈÇس¾ ¼ö ÀÖ´Ù¸é, ÃßÈÄ¿¡ Á»´õ ¿Ïº®ÇÑ µ¥ÀÌŸ¸¦ `gmon.out'¿¡ Ãß°¡ÇÏ¿© ÇöÀç gprof ¿¡¼­ »ç¿ëÇÏ°í ÀÖ´Â °¡Á¤»çÇ×µéÀÌ ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾Ê°Ô µÇ¾úÀ¸¸é ÇÏ´Â ¹Ù¶÷ÀÌ´Ù. ¾î·µç ÇöÀç gprof ¿¡¼­ »ç¿ëµÇ´Â ÃßÁ¤Ä¡´Â ¸¹Àº °æ¿ì À¯¿ëÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù(À߸øµÉ ÃßÁ¤À» ÇÒ ¼öµµ ÀÖÁö¸¸, ´ëºÎºÐÀÇ °æ¿ì¿¡ ÀûÀýÇÑ ÃßÁ¤Ä¡¸¦ Á¦°øÇÑ´Ù).


óÀ½, ÀÌÀü, ´ÙÀ½, ¸¶Áö¸· ¼½¼Ç,  ¸ñÂ÷