OProfile¸¦ ½ÇÇàÇϱâ À§Çؼ´Â ¸ÕÀú ¼³Á¤ÇÏ¼Å¾ß ÇÕ´Ï´Ù. ÃÖ¼ÒÇÑ Ä¿³ÎÀ» °¨½ÃÇϵµ·Ï (¶Ç´Â Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï) ¼±ÅÃÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ºÎºÐ¿¡¼´Â OProfileÀ» ¼³Á¤Çϱâ À§ÇØ opcontrolÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϰí ÀÖ½À´Ï´Ù. opcontrol ¸í·ÉÀÌ ½ÇÇàµÇ¸é ¼³Á¤ ¿É¼ÇÀº /root/.oprofile/daemonrc ÆÄÀÏ¿¡ ÀúÀåµË´Ï´Ù.
¸ÕÀú OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇØ¾ßÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇØ ÁֽʽÿÀ. ÀÌ ¿É¼Ç¸¸ ¼³Á¤ÇϽøé OProfileÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ´Ù¸¥ ¿É¼ÇÀº ¼±Åà »çÇ×ÀÔ´Ï´Ù.
Ä¿³ÎÀ» °¨½ÃÇÏ·Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽʽÿÀ:
opcontrol --vmlinux=/boot/vmlinux-`uname -r` |
OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇϽ÷Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:
opcontrol --no-vmlinux |
ÀÌ ¸í·ÉÀº ¶ÇÇÑ oprofile Ä¿³Î ¸ðµâÀ» Àоî¿Í¼ (¸¸ÀÏ ÀÌ¹Ì Àоî¿ÀÁö ¾ÊÀº °æ¿ì) /dev/oprofile/ µð·ºÅ丮¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ µð·ºÅ丮¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 43.6 ÀýÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
![]() | ¾Ë¸² |
---|---|
OProfileÀÌ Ä¿³ÎÀ» °¨½ÃÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÏ¿©µµ oprofile ¸ðµâÀÌ ·ÎµùµÉ ¼ö ÀÖµµ·Ï SMP Ä¿³ÎÀº ¿©ÀüÈ÷ ½ÇÇà ÁßÀ̾î¾ß ÇÕ´Ï´Ù. |
Ä¿³Î¿¡¼ »ùÇÃÀ» ¼öÁýÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇÏ½Ã¸é ¾î¶°ÇÑ µ¥ÀÌÅͰ¡ ¼öÁýµÉÁö¸¸ º¯°æµÇ¸ç, ¾î¶»°Ô ¾îµð¼ ¼öÁýµÈ µ¥ÀÌÅͰ¡ ÀúÀåµÉ °ÍÀÎÁö´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. Ä¿³Î°ú ÀÀ¿ë ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ ´Ù¸¥ »ùÇà ÆÄÀÏÀ» »ý¼ºÇϽ÷Á¸é 43.2.3 ÀýÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
´ëºÎºÐÀÇ ÇÁ·Î¼¼¼¿¡´Â Ä«¿îÅÍ (counter)°¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, OProfileÀº ÀÌ Ä«¿îÅ͸¦ »ç¿ëÇÏ¿© ƯÁ¤ »ç°ÇÀ» °¨½ÃÇÕ´Ï´Ù. Ç¥ 43-2¿¡¼ º¸¿©ÁöµíÀÌ »ç¿ë °¡´ÉÇÑ Ä«¿îÅÍÀÇ ¼ö´Â ÇÁ·Î¼¼¼¿¡ µû¶ó¼ ´Þ¶óÁý´Ï´Ù.
ÇÁ·Î¼¼¼ | cpu_type | Ä«¿îÅÍ ¼ö |
---|---|---|
Pentium Pro | i386/ppro | 2 |
Pentium II | i386/pii | 2 |
Pentium III | i386/piii | 2 |
Pentium 4 (non-hyper-threaded) | i386/p4 | 8 |
Pentium 4 (hyper-threaded) | i386/p4-ht | 4 |
Athlon | i386/athlon | 4 |
AMD64 | x86-64/hammer | 4 |
Itanium | ia64/itanium | 4 |
Itanium 2 | ia64/itanium2 | 4 |
TIMER_INT | timer | 1 |
IBM eServer iSeries | timer | 1 |
IBM eServer pSeries | timer | 1 |
IBM eServer S/390 | timer | 1 |
IBM eServer zSeries | timer | 1 |
Ç¥ 43-2. OProfile ÇÁ·Î¼¼¼¿Í Ä«¿îÅÍ
Ç¥ 43-2¸¦ »ç¿ëÇÏ¿© ¿Ã¹Ù¸¥ ÇÁ·Î¼¼¼ À¯ÇüÀÌ °Ë»öµÇ¾ú´ÂÁö ¿©ºÎ¿Í µ¿½Ã¿¡ ¸ð´ÏÅÍµÈ »ç°ÇÀÇ ¼ö¸¦ È®ÀÎÇØ º¸½Ê½Ã¿À. ¸¸ÀÏ ÇÁ·Î¼¼¼¿¡ Áö¿øµÇ´Â ¼º´É °¨½Ã Çϵå¿þ¾î°¡ ¾ø´Â °æ¿ì¿¡´Â timer°¡ ÇÁ·Î¼¼¼ À¯ÇüÀ¸·Î »ç¿ëµË´Ï´Ù.
¸¸ÀÏ timer°¡ »ç¿ëµÈ´Ù¸é Çϵå¿þ¾î°¡ Çϵå¿þ¾î ¼º´É Ä«¿îÅ͸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î ÇÁ·Î¼¼¼¿¡ ±â·ÏÇÒ »ç°ÇÀ» ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ´ë½Å ÇÁ·ÎÆÄÀϸµÀ» À§ÇØ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ »ç¿ëµË´Ï´Ù.
timer°¡ ÇÁ·Î¼¼¼ À¯ÇüÀ¸·Î »ç¿ëµÇÁö ¾ÊÀº °æ¿ì °¨½ÃÇÒ »ç°ÇÀ» º¯°æÇÒ ¼ö ÀÖÀ¸¸ç µðÆúÆ® °ªÀ¸·Î ÇÁ·Î¼¼¼ÀÇ Ä«¿îÅÍ 0ÀÌ ½Ã°£ ±â¹Ý »ç°Ç¿¡ ¼³Á¤µË´Ï´Ù. ÇÁ·Î¼¼¼¿¡ ÇÑ °³ ÀÌ»óÀÇ Ä«¿îÅͰ¡ Á¸ÀçÇÑ´Ù¸é, ±âº»ÀûÀ¸·Î Ä«¿îÅÍ 0 ÀÌ¿ÜÀÇ Ä«¿îÅÍ´Â »ç°Ç¿¡ ¼³Á¤µÇÁö ¾Ê½À´Ï´Ù. ¸ð´ÏÅ͵Ǵ ±âº» »ç°ÇÀº Ç¥ 43-3¿¡¼ º¼ ¼ö ÀÖ½À´Ï´Ù.
ÇÁ·Î¼¼¼ | Ä«¿îÅÍ 0ÀÇ ±âº» »ç°Ç | ¼³¸í |
---|---|---|
Pentium Pro, Pentium II, Pentium III, Athlon, AMD64 | CPU_CLK_UNHALTED | ÇÁ·Î¼¼¼ÀÇ ½Ã°è°¡ Á¤ÁöÇÏÁö ¾ÊÀ½ |
Pentium 4 (HT ¹× non-HT), Intel® EM64T | GLOBAL_POWER_EVENTS | ÇÁ·Î¼¼¼°¡ ¸ØÃßÁö ¾ÊÀº ½Ã°£ |
Itanium 2 | CPU_CYCLES | CPU »çÀÌŬ |
TIMER_INT | (¾øÀ½) | °¢ ŸÀÌ¸Ó ÀÎÅÍ·´Æ®ÀÇ »ùÇà |
Ç¥ 43-3. ±âº» »ç°Ç
Çѹø¿¡ °¨½ÃÇÒ ¼ö ÀÖ´Â »ç°ÇÀÇ ¼ö´Â ÇÁ·Î¼¼¼¿¡¼ »ç¿ëµÇ´Â Ä«¿îÅÍÀÇ ¼ö¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù. ±×·¯³ª ÇѰ³ ´ç ÇѰ³¾¿ »ó°ü °ü°è¸¦ °®´Â °ÍÀÌ ¾Æ´Ï¶ó; ÀϺΠÇÁ·Î¼¼¼¿¡¼ ƯÁ¤ »ç°ÇÀº ƯÁ¤ Ä«¿îÅÍ¿¡ ´ëÀÀÇØ¾ß ÇÕ´Ï´Ù. »ç¿ë °¡´ÉÇÑ Ä«¿îÅÍÀÇ ¼ö¸¦ ¾Ë¾Æº¸½Ã·Á¸é ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇϽñ⠹ٶø´Ï´Ù:
cat /dev/oprofile/cpu_type |
»ç¿ë °¡´ÉÇÑ »ç°ÇÀº ÇÁ·Î¼¼¼ À¯È¿¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ÇÁ·ÎÆÄÀϸµ °¡´ÉÇÑ »ç°ÇÀ» ¾Ë¾Æº¸½Ã·Á¸é ·çÆ®·Î ·Î±×ÀÎÇϽŠÈÄ ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù (¸ñ·ÏÀº ½Ã½ºÅÛÀÇ ÇÁ·Î¼¼¼ À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù):
op_help |
°¢ Ä«¿îÅÍ¿¡ »ç¿ëµÉ »ç°ÇÀº ¸í·ÉÇàÀ̳ª ±×·¡ÇÈ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸ÀÏ Ä«¿îÅ͸¦ ƯÁ¤ »ç°Ç¿¡ ¼³Á¤ÇÒ ¼ö ¾ø´Ù¸é ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.
¸í·ÉÇàÀ» ÅëÇÏ¿© °¢ ¼³Á¤ °¡´ÉÇÑ Ä«¿îÅÍ¿¡ »ç°ÇÀ» ¼³Á¤ÇϽ÷Á¸é opcontrolÀ» »ç¿ëÇϽʽÿÀ:
opcontrol --ctrlN-event=<event-name> |
NÀ» 0¿¡¼ ½ÃÀÛÇÏ´Â Ä«¿îÅÍ ¼ö·Î ´ëüÇϽðí <event-name>À» op_helpÀ¸·Î ¾Ë¾Æ³½ Á¤È®ÇÑ »ç°Ç À̸§À¸·Î º¯°æÇϽʽÿÀ.
±âº»À¸·Î ½Ã°£ ±â¹Ý »ç°Ç ¼³Á¤ÀÌ ¼±ÅõǸç, ÀÌ ¼³Á¤Àº ÇÁ·Î¼¼¼¸¶´Ù ¾à 1 Ãʸ¶´Ù 2000¿©°³ÀÇ »ùÇÃÀ» ¼öÁýÇÕ´Ï´Ù. ¸¸ÀÏ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇϸé ŸÀ̸Ӵ ÀÌ¹Ì Á¤ÇØÁø ¼Óµµ·Î ¼³Á¤µÇ¸ç »ç¿ëÀÚ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ¸¸ÀÏ cpu_typeÀÌ timer°¡ ¾Æ´Ï¶ó¸é, °¢ »ç°Ç¸¶´Ù »ùÇøµ ¼Óµµ(sampling rate)¸¦ ¼³Á¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. »ùÇøµ ¼Óµµ´Â ´Ù½Ã »ùÇøµ ¼öÁýÇϱâ Àü¿¡ ±â´Ù¸± »ç°ÇÀÇ ¼ýÀÚ¸¦ ³ªÅ¸³À´Ï´Ù.
Ä«¿îÅÍ¿¡ »ç°ÇÀ» ¼³Á¤ÇÒ ¶§ »ùÇà ¼Óµµµµ ÁöÁ¤ °¡´ÉÇÕ´Ï´Ù:
opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> |
<sample-rate>¸¦ ´Ù½Ã »ùÇøµÇϱâ Àü¿¡ ±â´Ù¸± »ç°ÇÀÇ ¼ýÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ¼ýÀÚ°¡ ÀÛÀ»¼ö·Ï ´õ¿í ÀÚÁÖ »ùÇøµÇÏ°Ô µË´Ï´Ù. ÀÚÁÖ ¹ß»ýÇÏÁö ¾Ê´Â »ç°ÇÀ» »ùÇøµÇÏ½Ç ¶§¿¡´Â ÀûÀº ¼ýÀÚ¸¦ »ç¿ëÇÏ¿© Ä«¿îÅͰ¡ »ç°Ç ÀνºÅϽº¸¦ ¼öÁýÇϵµ·Ï ¼³Á¤ÇϽʽÿÀ.
![]() | ÁÖÀÇ |
---|---|
»ùÇøµ ¼Óµµ¸¦ ¼³Á¤ÇϽǶ§ ¸Å¿ì ÁÖÀÇÇÏ¼Å¾ß ÇÕ´Ï´Ù. ³Ê¹« ÀÚÁÖ »ùÇøµÇÏ°ÔµÇ¸é ½Ã½ºÅÛÀÇ ÀÛ¾÷ ºÎÇϰ¡ ³ô¾ÆÁ®¼ ½Ã½ºÅÛÀÌ Á¤ÁöÇÑ °Íó·³ ³ªÅ¸³ª°Å³ª ½ÇÁ¦·Î ¸ØÃâ ¼öµµ ÀÖ½À´Ï´Ù. |
¸¸ÀÏ cpu_typeÀÌ timer·Î ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì »ç°ÇÀ» º¸´Ù ÀÚ¼¼ÇÏ°Ô Á¤ÀÇÇϱâ À§ÇÏ¿© À¯´Ö ¸¶½ºÅ©(unit masks)¸¦ »ç¿ëÇϼžßÇÒ °æ¿ìµµ ÀÖ½À´Ï´Ù.
op_help ¸í·ÉÀ» »ç¿ëÇÏ¿© °¢ »ç°Ç¿¡ »ç¿ëµÇ´Â À¯´Ö ¸¶½ºÅ© ¸ñ·ÏÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. °¢ À¯´Ö ¸¶½ºÅ© ¸ñ·Ï °ªÀº 16Áø¼ö ÀÔ´Ï´Ù. ÇÑ °³ ÀÌ»óÀÇ À¯´Ö ¸¶½ºÅ©¸¦ ÁöÁ¤ÇϽ÷Á¸é ºñÆ® ´ÜÀ§ÀÇ or ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© 16Áø¼ö °ªÀ» ÇÔ²² ÁöÁ¤ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> --ctrN-unit-mask=<value> |
±âº»ÀûÀ¸·Î °¢ »ç°Ç¿¡ ´ëÇÑ Ä¿³Î ¸ðµå¿Í »ç¿ëÀÚ ¸ðµå Á¤º¸¸¦ ¼öÁýÇÕ´Ï´Ù. ƯÁ¤ Ä«¿îÅÍ¿¡¼ Ä¿³Î ¸ðµåÀÇ »ç°ÇÀ» °è»êÇÏÁö ¾Êµµ·Ï 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>Àº ´ÙÀ½ Áß ÇѰ¡Áö¸¦ ÀÔ·ÂÇϽʽÿÀ:
none — ÇÁ·ÎÆÄÀÏÀ» ºÐ¸®ÇÏÁö ¾ÊÀ½ (±âº»)
library — ¶óÀ̺귯¸®¿¡ ÀÀ¿ë ÇÁ·Î±×·¥¸¶´Ù º°°³ÀÇ ÇÁ·ÎÆÄÀÏÀ» »ý¼ºÇÔ
kernel — Ä¿³Î°ú Ä¿³Î ¸ðµâ¿¡ ÀÀ¿ë ÇÁ·Î±×·¥¸¶´Ù º°°³ÀÇ ÇÁ·ÎÆÄÀÏÀ» »ý¼ºÇÔ
all — ¶óÀ̺귯¸® ¹× Ä¿³Î°ú Ä¿³Î ¸ðµâ¿¡ ÀÀ¿ë ÇÁ·Î±×·¥¸¶´Ù º°°³ÀÇ ÇÁ·ÎÆÄÀÏÀ» »ý¼ºÇÔ
¸¸ÀÏ --separate=library ¿É¼ÇÀÌ »ç¿ëµÈ´Ù¸é ¶óÀ̺귯¸®ÀÇ À̸§À» ºñ·ÔÇÏ¿© ½ÇÇà ÆÄÀÏÀÇ À̸§À» ÀÔ·ÂÇϽʽÿÀ.