43.2. OProfile ¼³Á¤

OProfile¸¦ ½ÇÇàÇϱâ À§Çؼ­´Â ¸ÕÀú ¼³Á¤ÇÏ¼Å¾ß ÇÕ´Ï´Ù. ÃÖ¼ÒÇÑ Ä¿³ÎÀ» °¨½ÃÇϵµ·Ï (¶Ç´Â Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï) ¼±ÅÃÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ºÎºÐ¿¡¼­´Â OProfileÀ» ¼³Á¤Çϱâ À§ÇØ opcontrolÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϰí ÀÖ½À´Ï´Ù. opcontrol ¸í·ÉÀÌ ½ÇÇàµÇ¸é ¼³Á¤ ¿É¼ÇÀº /root/.oprofile/daemonrc ÆÄÀÏ¿¡ ÀúÀåµË´Ï´Ù.

43.2.1. Ä¿³Î ÁöÁ¤

¸ÕÀú OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇØ¾ßÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇØ ÁֽʽÿÀ. ÀÌ ¿É¼Ç¸¸ ¼³Á¤ÇϽøé OProfileÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ´Ù¸¥ ¿É¼ÇÀº ¼±Åà »çÇ×ÀÔ´Ï´Ù.

Ä¿³ÎÀ» °¨½ÃÇÏ·Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽʽÿÀ:

opcontrol --vmlinux=/boot/vmlinux-`uname -r`

OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇϽ÷Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:

opcontrol --no-vmlinux

ÀÌ ¸í·ÉÀº ¶ÇÇÑ oprofile Ä¿³Î ¸ðµâÀ» Àоî¿Í¼­ (¸¸ÀÏ ÀÌ¹Ì Àоî¿ÀÁö ¾ÊÀº °æ¿ì) /dev/oprofile/ µð·ºÅ丮¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ µð·ºÅ丮¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 43.6 ÀýÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.

¾Ë¸²¾Ë¸²
 

OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÏ¿©µµ oprofile ¸ðµâÀÌ ·ÎµùµÉ ¼ö ÀÖµµ·Ï SMP Ä¿³ÎÀº ¿©ÀüÈ÷ ½ÇÇà ÁßÀ̾î¾ß ÇÕ´Ï´Ù.

Ä¿³Î¿¡¼­ »ùÇÃÀ» ¼öÁýÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇÏ½Ã¸é ¾î¶°ÇÑ µ¥ÀÌÅͰ¡ ¼öÁýµÉÁö¸¸ º¯°æµÇ¸ç, ¾î¶»°Ô ¾îµð¼­ ¼öÁýµÈ µ¥ÀÌÅͰ¡ ÀúÀåµÉ °ÍÀÎÁö´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. Ä¿³Î°ú ÀÀ¿ë ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ ´Ù¸¥ »ùÇà ÆÄÀÏÀ» »ý¼ºÇϽ÷Á¸é 43.2.3 ÀýÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.

43.2.2. °¨½Ã±â°¡ ±â·ÏÇÒ »ç°Ç ¼³Á¤Çϱâ

´ëºÎºÐÀÇ ÇÁ·Î¼¼¼­¿¡´Â Ä«¿îÅÍ (counter)°¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, OProfileÀº ÀÌ Ä«¿îÅ͸¦ »ç¿ëÇÏ¿© ƯÁ¤ »ç°ÇÀ» °¨½ÃÇÕ´Ï´Ù. Ç¥ 43-2¿¡¼­ º¸¿©ÁöµíÀÌ »ç¿ë °¡´ÉÇÑ Ä«¿îÅÍÀÇ ¼ö´Â ÇÁ·Î¼¼¼­¿¡ µû¶ó¼­ ´Þ¶óÁý´Ï´Ù.

ÇÁ·Î¼¼¼­cpu_typeÄ«¿îÅÍ ¼ö
Pentium Proi386/ppro2
Pentium IIi386/pii2
Pentium IIIi386/piii2
Pentium 4 (non-hyper-threaded)i386/p48
Pentium 4 (hyper-threaded)i386/p4-ht4
Athloni386/athlon4
AMD64x86-64/hammer4
Itaniumia64/itanium4
Itanium 2ia64/itanium24
TIMER_INTtimer1
IBM eServer iSeriestimer1
IBM eServer pSeriestimer1
IBM eServer S/390timer1
IBM eServer zSeriestimer1

Ç¥ 43-2. OProfile ÇÁ·Î¼¼¼­¿Í Ä«¿îÅÍ

Ç¥ 43-2¸¦ »ç¿ëÇÏ¿© ¿Ã¹Ù¸¥ ÇÁ·Î¼¼¼­ À¯ÇüÀÌ °Ë»öµÇ¾ú´ÂÁö ¿©ºÎ¿Í µ¿½Ã¿¡ ¸ð´ÏÅÍµÈ »ç°ÇÀÇ ¼ö¸¦ È®ÀÎÇØ º¸½Ê½Ã¿À. ¸¸ÀÏ ÇÁ·Î¼¼¼­¿¡ Áö¿øµÇ´Â ¼º´É °¨½Ã Çϵå¿þ¾î°¡ ¾ø´Â °æ¿ì¿¡´Â timer°¡ ÇÁ·Î¼¼¼­ À¯ÇüÀ¸·Î »ç¿ëµË´Ï´Ù.

¸¸ÀÏ timer°¡ »ç¿ëµÈ´Ù¸é Çϵå¿þ¾î°¡ Çϵå¿þ¾î ¼º´É Ä«¿îÅ͸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î ÇÁ·Î¼¼¼­¿¡ ±â·ÏÇÒ »ç°ÇÀ» ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ´ë½Å ÇÁ·ÎÆÄÀϸµÀ» À§ÇØ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ »ç¿ëµË´Ï´Ù.

timer°¡ ÇÁ·Î¼¼¼­ À¯ÇüÀ¸·Î »ç¿ëµÇÁö ¾ÊÀº °æ¿ì °¨½ÃÇÒ »ç°ÇÀ» º¯°æÇÒ ¼ö ÀÖÀ¸¸ç µðÆúÆ® °ªÀ¸·Î ÇÁ·Î¼¼¼­ÀÇ Ä«¿îÅÍ 0ÀÌ ½Ã°£ ±â¹Ý »ç°Ç¿¡ ¼³Á¤µË´Ï´Ù. ÇÁ·Î¼¼¼­¿¡ ÇÑ °³ ÀÌ»óÀÇ Ä«¿îÅͰ¡ Á¸ÀçÇÑ´Ù¸é, ±âº»ÀûÀ¸·Î Ä«¿îÅÍ 0 ÀÌ¿ÜÀÇ Ä«¿îÅÍ´Â »ç°Ç¿¡ ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. ¸ð´ÏÅ͵Ǵ ±âº» »ç°ÇÀº Ç¥ 43-3¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù.

ÇÁ·Î¼¼¼­Ä«¿îÅÍ 0ÀÇ ±âº» »ç°Ç¼³¸í
Pentium Pro, Pentium II, Pentium III, Athlon, AMD64CPU_CLK_UNHALTEDÇÁ·Î¼¼¼­ÀÇ ½Ã°è°¡ Á¤ÁöÇÏÁö ¾ÊÀ½
Pentium 4 (HT ¹× non-HT), Intel® EM64TGLOBAL_POWER_EVENTSÇÁ·Î¼¼¼­°¡ ¸ØÃßÁö ¾ÊÀº ½Ã°£
Itanium 2CPU_CYCLESCPU »çÀÌŬ
TIMER_INT(¾øÀ½)°¢ ŸÀÌ¸Ó ÀÎÅÍ·´Æ®ÀÇ »ùÇÃ

Ç¥ 43-3. ±âº» »ç°Ç

Çѹø¿¡ °¨½ÃÇÒ ¼ö ÀÖ´Â »ç°ÇÀÇ ¼ö´Â ÇÁ·Î¼¼¼­¿¡¼­ »ç¿ëµÇ´Â Ä«¿îÅÍÀÇ ¼ö¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù. ±×·¯³ª ÇѰ³ ´ç ÇѰ³¾¿ »ó°ü °ü°è¸¦ °®´Â °ÍÀÌ ¾Æ´Ï¶ó; ÀϺΠÇÁ·Î¼¼¼­¿¡¼­ ƯÁ¤ »ç°ÇÀº ƯÁ¤ Ä«¿îÅÍ¿¡ ´ëÀÀÇØ¾ß ÇÕ´Ï´Ù. »ç¿ë °¡´ÉÇÑ Ä«¿îÅÍÀÇ ¼ö¸¦ ¾Ë¾Æº¸½Ã·Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:

cat /dev/oprofile/cpu_type

»ç¿ë °¡´ÉÇÑ »ç°ÇÀº ÇÁ·Î¼¼¼­ À¯È¿¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ÇÁ·ÎÆÄÀϸµ °¡´ÉÇÑ »ç°ÇÀ» ¾Ë¾Æº¸½Ã·Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù (¸ñ·ÏÀº ½Ã½ºÅÛÀÇ ÇÁ·Î¼¼¼­ À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù):

op_help

°¢ Ä«¿îÅÍ¿¡ »ç¿ëµÉ »ç°ÇÀº ¸í·ÉÇàÀ̳ª ±×·¡ÇÈ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸ÀÏ Ä«¿îÅ͸¦ ƯÁ¤ »ç°Ç¿¡ ¼³Á¤ÇÒ ¼ö ¾ø´Ù¸é ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.

¸í·ÉÇàÀ» ÅëÇÏ¿© °¢ ¼³Á¤ °¡´ÉÇÑ Ä«¿îÅÍ¿¡ »ç°ÇÀ» ¼³Á¤ÇϽ÷Á¸é opcontrolÀ» »ç¿ëÇϽʽÿÀ:

opcontrol --ctrlN-event=<event-name>

NÀ» 0¿¡¼­ ½ÃÀÛÇÏ´Â Ä«¿îÅÍ ¼ö·Î ´ëüÇϽðí <event-name>À» op_helpÀ¸·Î ¾Ë¾Æ³½ Á¤È®ÇÑ »ç°Ç À̸§À¸·Î º¯°æÇϽʽÿÀ.

43.2.2.1. »ùÇÃ ¼öÁý ¼Óµµ

±âº»À¸·Î ½Ã°£ ±â¹Ý »ç°Ç ¼³Á¤ÀÌ ¼±ÅõǸç, ÀÌ ¼³Á¤Àº ÇÁ·Î¼¼¼­¸¶´Ù ¾à 1 Ãʸ¶´Ù 2000¿©°³ÀÇ »ùÇÃÀ» ¼öÁýÇÕ´Ï´Ù. ¸¸ÀÏ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇϸé ŸÀ̸Ӵ ÀÌ¹Ì Á¤ÇØÁø ¼Óµµ·Î ¼³Á¤µÇ¸ç »ç¿ëÀÚ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ¸¸ÀÏ cpu_typeÀÌ timer°¡ ¾Æ´Ï¶ó¸é, °¢ »ç°Ç¸¶´Ù »ùÇøµ ¼Óµµ(sampling rate)¸¦ ¼³Á¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. »ùÇøµ ¼Óµµ´Â ´Ù½Ã »ùÇøµ ¼öÁýÇϱâ Àü¿¡ ±â´Ù¸± »ç°ÇÀÇ ¼ýÀÚ¸¦ ³ªÅ¸³À´Ï´Ù.

Ä«¿îÅÍ¿¡ »ç°ÇÀ» ¼³Á¤ÇÒ ¶§ »ùÇà ¼Óµµµµ ÁöÁ¤ °¡´ÉÇÕ´Ï´Ù:

opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate>

<sample-rate>¸¦ ´Ù½Ã »ùÇøµÇϱâ Àü¿¡ ±â´Ù¸± »ç°ÇÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ¼ýÀÚ°¡ ÀÛÀ»¼ö·Ï ´õ¿í ÀÚÁÖ »ùÇøµÇÏ°Ô µË´Ï´Ù. ÀÚÁÖ ¹ß»ýÇÏÁö ¾Ê´Â »ç°ÇÀ» »ùÇøµÇÏ½Ç ¶§¿¡´Â ÀûÀº ¼ýÀÚ¸¦ »ç¿ëÇÏ¿© Ä«¿îÅͰ¡ »ç°Ç ÀνºÅϽº¸¦ ¼öÁýÇϵµ·Ï ¼³Á¤ÇϽʽÿÀ.

ÁÖÀÇÁÖÀÇ
 

»ùÇøµ ¼Óµµ¸¦ ¼³Á¤ÇϽǶ§ ¸Å¿ì ÁÖÀÇÇÏ¼Å¾ß ÇÕ´Ï´Ù. ³Ê¹« ÀÚÁÖ »ùÇøµÇÏ°ÔµÇ¸é ½Ã½ºÅÛÀÇ ÀÛ¾÷ ºÎÇϰ¡ ³ô¾ÆÁ®¼­ ½Ã½ºÅÛÀÌ Á¤ÁöÇÑ °Íó·³ ³ªÅ¸³ª°Å³ª ½ÇÁ¦·Î ¸ØÃâ ¼öµµ ÀÖ½À´Ï´Ù.

43.2.2.2. À¯´Ö ¸¶½ºÅ© (Unit Masks)

¸¸ÀÏ cpu_typeÀÌ timer·Î ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì »ç°ÇÀ» º¸´Ù ÀÚ¼¼ÇÏ°Ô Á¤ÀÇÇϱâ À§ÇÏ¿© À¯´Ö ¸¶½ºÅ©(unit masks)¸¦ »ç¿ëÇϼžßÇÒ °æ¿ìµµ ÀÖ½À´Ï´Ù.

op_help ¸í·ÉÀ» »ç¿ëÇÏ¿© °¢ »ç°Ç¿¡ »ç¿ëµÇ´Â À¯´Ö ¸¶½ºÅ© ¸ñ·ÏÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. °¢ À¯´Ö ¸¶½ºÅ© ¸ñ·Ï °ªÀº 16Áø¼ö ÀÔ´Ï´Ù. ÇÑ °³ ÀÌ»óÀÇ À¯´Ö ¸¶½ºÅ©¸¦ ÁöÁ¤ÇϽ÷Á¸é ºñÆ® ´ÜÀ§ÀÇ or ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© 16Áø¼ö °ªÀ» ÇÔ²² ÁöÁ¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> --ctrN-unit-mask=<value>

43.2.3. Ä¿³Î°ú »ç¿ëÀÚ ¿µ¿ª ÇÁ·ÎÆÄÀÏ ºÐ¸®Çϱâ

±âº»ÀûÀ¸·Î °¢ »ç°Ç¿¡ ´ëÇÑ Ä¿³Î ¸ðµå¿Í »ç¿ëÀÚ ¸ðµå Á¤º¸¸¦ ¼öÁýÇÕ´Ï´Ù. ƯÁ¤ Ä«¿îÅÍ¿¡¼­ Ä¿³Î ¸ðµåÀÇ »ç°ÇÀ» °è»êÇÏÁö ¾Êµµ·Ï OProfileÀ» ¼³Á¤ÇϽ÷Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù (N¸¦ Ä«¿îÅÍ ¹øÈ£·Î ´ëüÇϽʽÿÀ):

opcontrol --ctrN-kernel=0

ÇØ´ç Ä«¿îÅÍ¿¡¼­ Ä¿³Î ¸ðµå¸¦ ´Ù½Ã ÇÁ·ÎÆÄÀϸµÇϵµ·Ï ¼³Á¤ÇϽ÷Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:

opcontrol --ctrN-kernel=1

ƯÁ¤ Ä«¿îÅÍ¿¡¼­ »ç¿ëÀÚ ¸ðµåÀÇ »ç°ÇÀ» °è»êÇÏÁö ¾Êµµ·Ï OProfileÀ» ¼³Á¤ÇϽ÷Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù (N¸¦ Ä«¿îÅÍ ¹øÈ£·Î ´ëüÇϽʽÿÀ):

opcontrol --ctrN-user=0

ÇØ´ç Ä«¿îÅÍ¿¡¼­ »ç¿ëÀÚ ¸ðµå¸¦ ´Ù½Ã ÇÁ·ÎÆÄÀϸµÇϵµ·Ï ¼³Á¤ÇϽ÷Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:

opcontrol --ctrN-user=1

OProfile µ¥¸óÀÌ ÇÁ·ÎÆÄÀÏ µ¥ÀÌÅ͸¦ »ùÇà ÆÄÀÏ¿¡ ±â·Ï½Ã Ä¿³Î µ¥ÀÌÅÍ¿Í ¶óÀ̺귯¸® ÇÁ·ÎÆÄÀÏ µ¥ÀÌÅ͸¦ º°°³ÀÇ »ùÇà ÆÄÀÏ¿¡ ºÐ¸®ÇÏ¿© ±â·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥¸óÀÌ »ùÇà ÆÄÀÏÀ» ±â·ÏÇÏ´Â ¹æ½ÄÀ» ¼³Á¤ÇϽ÷Á¸é, ·çÆ® »ç¿ëÀÚ·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽʽÿÀ:

opcontrol --separate=<choice>

<choice>Àº ´ÙÀ½ Áß ÇѰ¡Áö¸¦ ÀÔ·ÂÇϽʽÿÀ:

¸¸ÀÏ --separate=library ¿É¼ÇÀÌ »ç¿ëµÈ´Ù¸é ¶óÀ̺귯¸®ÀÇ À̸§À» ºñ·ÔÇÏ¿© ½ÇÇà ÆÄÀÏÀÇ À̸§À» ÀÔ·ÂÇϽʽÿÀ.