ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>c_cpp_profile
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
article/c_cpp_profile
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<!-- -->
<!-- ¹®¼ Á¤º¸ -->
<!-- -->
<articleinfo>
<title>GProf profiler¸¦ ÀÌ¿ëÇÑ C/C++ ÇÁ·Î±×·¡¹Ö ÃÖÀûÈ</title>
<author>
<surname>Arnout Engelen</surname>
<affiliation>
<address>
<email>arnouten@bzzt.net</email>
</address>
</affiliation>
</author>
<othercredit role="translator">
<surname>À±»ó¹è</surname>
<affiliation>
<address>
<email>dreamyun@yahoo.co.kr</email>
</address>
</affiliation>
</othercredit>
<revhistory>
<revision>
<revnumber>0.8</revnumber>
<date>2005³â 5¿ù 7ÀÏ 23½Ã</date>
<revremark>ÃÖÃÊ ¹®¼ÀÛ¼º</revremark>
</revision>
</revhistory>
</articleinfo>
<!-- -->
<!-- ¼½¼Ç ½ÃÀÛ -->
<!-- -->
<section>
<title></title>
<para>
Áö±ÝÀº Çϵå¿þ¾îÀÇ ¼º´ÉÀÌ ¿ö³«¿¡³ª ÁÁ¾ÆÁøµ¥´Ù°¡ ÄÄÆÄÀÏ·¯ ¿ª½Ã ±×¿¡ ¹ß¸ÂÃß¾î
ÃÖÀûȵǾîÀֱ⠶§¹®¿¡, ¼º´Éº¸´Ù °³¹ß¼Óµµ¿Í À¯Áöº¸¼ö¸¦ Áß¿ä½ÃÇÏ´Â °æ¿ì°¡
¸¹°ÚÁö¸¸ ¿©ÀüÈ÷ ÃÖÀûÀÇ ¼º´ÉÀ» ¿ä±¸ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇÏ´Â Çʿ䰡
»ý±ä´Ù. ÀÌ·² °æ¿ì ÇÁ·Î±×·¥ ÃÖÀûÈ´Â Çʼö ÀûÀÎ ÀÛ¾÷À̵ȴÙ.
</para>
<para>
ÃÖÀûȸ¦ ÅëÇØ¼ ¾î¶² ÇÔ¼ö°¡ 0.04ÃÊ Á¤µµ ¼öÇà½Ã°£À» ´ÜÃà½ÃÄ×´Ù°í °¡Á¤ÇØ º¸ÀÚ.
°íÀÛÇØ¾ß 0.04ÃÊ ¾Æ²¸¼ ¹¹ÇÏ´À³Ä¶ó°í »ý°¢ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ÀÌ ÇÔ¼ö°¡ 1ÃÊ µ¿¾È 100¹ø È£ÃâµÈ´Ù°í ÇÏ¸é ¹«·Á 4Ãʸ¦ ¾Æ³¢°Ô µÈ´Ù. ÄÄÇ»ÅÍ·Î ¾î¶²ÀÏÀ» ó¸®Çϴµ¥
4Ãʶó¸é °ÅÀÇ ¹«ÇÑ¿¡ °¡±î¿î ½Ã°£À̶ó°í º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
</para>
<para>
¹®Á¦´Â ÇϳªÀÇ ÇÁ·Î±×·¥Àº ÀÛ°Ô´Â ¼ö½Ê¿¡¼ ¸¹°Ô´Â ¼ö¹é/¼öõ°³ÀÇ ÇÔ¼ö·Î ÀÌ·ç¾î
Áú°ÍÀε¥, ÀÌÁß ¾î¶² ÇÔ¼ö¸¦ ¼±ÅÃÇØ¼ ÃÖÀûȸ¦ ½ÃÄÑÁà¾ß ÇÏ´ÂÁöÀÌ´Ù.
½Ã°£¸¸ ÃæºÐÇÏ´Ù¸é ¸ðµç ÇÔ¼ö¸¦ ¶óÀδÜÀ§·Î ÇϳªÇϳª ºÐ¼®Çذ¡¸é¼ ÃÖÀûÈ
½Ãų ¼öµµ ÀÖ°ÚÁö¸¸, ½Ã°£µµ ÃæºÐÇÏÁö ¾ÊÀ» »Ó´õ·¯, È¿°ú´ëºñ ³Ê¹«³ª ¸¹Àº ½Ã°£ÀÌ
¼Ò¸ðµÉ ¼öµµ ÀÖ´Ù.
</para>
<para>
¿©±â¿¡¼´Â ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§ÇØ <emphasis>gprop</emphasis>¶ó´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â ¹æ¹ý¿¡
´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ÀÌ ÅøÀ» ÀÌ¿ëÇÏ¸é °³¹ßÀÚ´Â ÇÁ·Î±×·¥ÀÇ °¢ ÇÔ¼öº°·Î
È£Ãâºóµµ¿Í ¼Ò¸ðµÈ ½Ã°£µî¿¡ ´ëÇÑ ¼º´ÉÁ¤º¸¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.
</para>
<para>
¹®¼ÀÇ ¿ø¹®Àº <ulink url="http://www.linuxfocus.org/English/March2005/article371.shtml">linuxfocus</ulink>¸¦ È®ÀÎÇϱ⠹ٶõ´Ù.
</para>
</section>
<section>
<title>grpop¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥ ÃÖÀûÈ</title>
<section>
<title>gpropÀÇ °³³ä</title>
<para>
gropÀÇ ÀÛµ¿¹æ½ÄÀº °£´ÜÇÏ´Ù. ÇÁ·Î±×·¥ ¼öÇà½Ã°£µ¿¾È °¢ ÇÔ¼öÀÇ È£ÃâȽ¼ö¿Í
ÇÔ¼ö È£Ãâ½Ã ÁøÀÔ¿¡¼ Á¾·áÇÒ ¶§ ±îÁöÀÇ ½Ã°£À» ±â·ÏÇØµÎ°í ÀÌ Á¤º¸¿¡ ´ëÇÑ
Åë°è¸¦ Á¦°øÇÏ´Â ¹æ½ÄÀÌ´Ù.
</para>
<para>
Àú·¯ÇÑ ÀÏÀ» Çϱâ À§Çؼ´Â °¢ ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù Ƚ¼ö¸¦ ¼¼°ÔÇϰí, ½Ã°£ÇÔ¼ö¸¦
ÀÏÀÏÀÌ ³Ö¾îÁà¾ß ÇÏÁö ¾Ê°Ú´À³Ä°í »ý°¢ÇÒ ¼ö ÀÖ°ÚÁö¸¸, °ÆÁ¤ÇÒ ÇÊ¿ä ¾ø´Ù.
ÄÄÆÄÀϽà <emphasis>-pg</emphasis>¿É¼Ç¸¸ ÁÖ¸é ¾Ë¾Æ¼ Àú·¯ÇÑ Á¤º¸µéÀÌ »ý¼ºµÈ´Ù.
±× ÈÄ °³¹ßÀÚ´Â gprop¸¦ ½á¼ Åë°èÁ¤º¸¸¦ ¾ò¾î¿À±â¸¸ ÇÏ¸é µÈ´Ù.
</para>
</section>
<section>
<title>Pathalizer¸¦ ÅëÇÑ Å×½ºÆ®</title>
<para>
ÀÌÇØ¸¦ ½±°Ô Çϱâ À§Çؼ <ulink url="http://pathalizer.bzzt.net/">pathalizer</ulink>À̶ó´Â
ÇÁ·Î±×·¥À» ÅëÇØ¼ Å×½ºÆ®¸¦ ÇØº¸µµ·Ï ÇϰڴÙ.
</para>
<para>
ÀÏ´Ü À§ ÇÁ·Î±×·¥À» ¹Þ¾Æ¼ ÄÄÆÄÀÏ Çϵµ·Ï ÇÏÀÚ. ÄÄÆÄÀÏ ¹æ¹ýÀº °£´ÜÇÏ´Ï ¼³¸íÇÏÁö
¾Êµµ·Ï ÇϰڴÙ.
</para>
</section>
<section>
<title>ÇÁ·Î±×·¥ ¼öÇà ½Ã°£</title>
<para>
ÇÁ·Î±×·¥ÀÇ ¼öÇà ½Ã°£À» ÃøÁ¤Çϱâ À§Çؼ ÇÊÀÚ´Â apacheÀÇ ·Î±×ÆÄÀÏÀ» pathalizer¸¦
ÅëÇØ¼ ºÐ¼®Çغ¸µµ·Ï Çß´Ù. ÀÌ apache·Î±×ÆÄÀÏÀº ¾à 500000ÁÙÀÇ Á¤º¸¸¦ Æ÷ÇÔÇϰí
ÀÖ´Ù.
<screen>
[root@ns src]# time ./event2dot logfile
real 3m36.316s
user 0m55.590s
sys 0m1.070s
</screen>
</para>
</section>
<section>
<title>profiling</title>
<para>
±×·³ À§ÀÇ ÇÁ·Î±×·¥À» ºÐ¼®Çϱâ À§Çؼ profile Á¤º¸¸¦ ³²°Üº¸µµ·Ï ÇϰڴÙ. ¾Æ·¡¿Í
°°ÀÌ -pg ¿É¼ÇÀÌ »ç¿ëµÇµµ·Ï MakefileÀ» ¼öÁ¤Çϵµ·Ï ÇÏÀÚ.
<screen>
all: event2dot apache2events
OPTIONS=-O2 -g -pg
apache2events: config.o apache2events.o
...
...
</screen>
´Ù½Ã make¸¦ ½ÃµµÇؼ Àç ÄÄÆÄÀÏÀ» Çϰí <emphasis>./event2dot apache_access_log</emphasis>¸¦ ¼öÇàÇϵµ·Ï ÇÑ´Ù.
ÇÁ·Î±×·¥À» ¼öÇàÇÏ°í ³ª¸é ÇØ´ç µð·ºÅ丮¿¡ <emphasis>gmon.out</emphasis>¶ó´Â
ÆÄÀÏÀÌ »ý¼ºµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ grpof¸¦ ÀÌ¿ëÇØ¼
°¢ ÇÔ¼öº° ¼º´ÉÁ¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
<screen>
# gprof ./event2dot | less
% cumulative self self total
time seconds seconds calls s/call s/call name
43.32 46.03 46.03 339952989 0.00 0.00 CompareNodes(Node *,Node *)
25.06 72.66 26.63 55000 0.00 0.00 getNode(char *,NodeListNode *&)
16.80 90.51 17.85 339433374 0.00 0.00 CompareEdges(Edge *,AnnotatedEdge *)
12.70 104.01 13.50 51987 0.00 0.00 addAnnotatedEdge(AnnotatedGraph *,Edge *)
1.98 106.11 2.10 51987 0.00 0.00 addEdge(Graph *,Node *,Node *)
0.07 106.18 0.07 1 0.07 0.07 FindTreshold(AnnotatedEdge *,int)
0.06 106.24 0.06 1 0.06 28.79 getGraphFromFile(char *,NodeListNode *&,Config *)
0.02 106.26 0.02 1 0.02 77.40 summarize(GraphListNode *,Config *)
0.00 106.26 0.00 55000 0.00 0.00 FixName(char *)
</screen>
¿©±â¿¡¼ °¡Àå Áß¿äÇÑ Çʵå´Â ù¹øÂ° Çʵå·Î, ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¿¾È ÇØ´çÇÔ¼ö°¡ ¼ÒºñÇÑ ½Ã°£ÀÇ
¹éºÐÀ²À» º¸¿©ÁØ´Ù.
</para>
</section>
<section>
<title>gprof °á°ú¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ ÃÖÀûÈ</title>
<para>
±×·³ ÀÌÁ¦ ÇÁ·Î±×·¥À» ÃÖÀûȸ¦ ÇØº¸µµ·Ï ÇÏÀÚ. ¸ðµç ÇÔ¼ö¸¦ ÃÖÀûÈ Çϸé ÁÁ°ÚÁö¸¸ ¿ª½Ã ½Ã°£´ëºñ È¿À²ÀÇ
¹®Á¦°¡ ÀÖÀ½À¸·Î °¡´ÉÇϸé Á¶±×¸¶ÇÑ ¼öÁ¤À¸·Î Å« È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ¼±ÅÃÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù.
±×·¸´Ù¸é ¿©·¯¹ø È£ÃâµÇ´Â ÇÔ¼öÁß¿¡¼ ¼öÇà½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ÇÔ¼ö¸¦ ¼±º°Çؼ ¼öÁ¤Çϴ°Ô
°¡Àå ÁÁÀ» °ÍÀÌ´Ù.
</para>
<para>
¿©±â¿¡¼ ¿ì¸®´Â CompareNodes¶ó´Â ÇÔ¼ö°¡ ¸Å¿ì ¸¹Àº ½Ã°£À» ¼ÒºñÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.
±×·¡¼ CompareNodesÇÔ¼ö¸¦ ºÐ¼®Çؼ ºñÈ¿À²ÀûÀÎ ºÎºÐÀ» °³¼±À» Çϱâ·Î °áÁ¤Çß´Ù.
</para>
<para>
¸î¹øÀÇ ºÐ¼®À» ÅëÇØ¼ ÀڷᱸÁ¶ÀÇ À¯Áö¸¦ À§Çؼ »ç¿ëÇÏ´Â ¸µÅ©µå¸®½ºÆ®°¡ ¸Å¿ì ºñÈ¿À²ÀûÀ¸·Î µÇ¾îÀÖ´Ù´Â
°ÍÀ» ¹ß°ßÇϰí e-edges¸¦ ÀÌÁøÆ®¸®·Î º¯°æÇϱâ·Î °áÁ¤À» Çß´Ù.
</para>
<para>
Äڵ带 º¯°æÇÑ´ÙÀ½ Å×½ºÆ®¸¦ ÇѰá°ú ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©Áá´Ù. 1ÃÊÀÌ»óÀÇ ½Ã°£À» ´ÜÃà½ÃÄ×À½À»
¾Ë ¼ö ÀÖ´Ù.
<screen>
real 2m19.314s
user 0m36.370s
sys 0m0.940s
</screen>
</para>
</section>
<section>
<title>ÃÖÀûÈ ÈÄ gprof °á°ú</title>
<para>
´ÙÀ½Àº ÄÚµå ÃÖÀûÈ ÈÄ ÇÁ·Î±×·¥ÀÇ gprof °á°ú´Ù.
<screen>
% cumulative self self total
time seconds seconds calls s/call s/call name
87.01 25.25 25.25 55000 0.00 0.00 getNode(char *,NodeListNode *&)
10.65 28.34 3.09 51987 0.00 0.00 addEdge(Graph *,Node *,Node *)
</screen>
°¢ ÇÔ¼ö¿¡¼ 2¹è°¡±îÀÌ ½Ã°£À» Àý¾àÇÑ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
</para>
</section>
<section>
<title>´Ù¸¥ profile ÇÁ·Î±×·¥µé</title>
<para>
GUIȸéÀ» ¼±È£ÇÏ´Ù¸é
<ulink url="http://kprof.sf.net/">kProf</ulink>¿Í
<ulink url="http://mvertes.free.fr/">cgprof</ulink>cgprof°°Àº ÇÁ·Î±×·¥µµ ÀÖÀ¸´Ï °ü½ÉÀÖ´Ù¸é »ç¿ëÀ» ÇØº¸±â ¹Ù¶õ´Ù.
</para>
</section>
</section>
</article>
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|