以åã®åºçç©ã§ã¯ãã«ãŒãã«ã®ãã¬ãŒã¹ãšãããã¡ã€ãªã³ã°ã®åé¡ã«ãã§ã«åãçµãã§ããŸãã ã«ãŒãã«ã¬ãã«ã§ã€ãã³ããåæããããã®å€ãã®å°çšããŒã«ããããŸãïŒ
SystemTap ã
Ktap ã
Sysdig ã
LTTNGãªã©ã ãããã®ããŒã«ã«é¢ããå€ãã®è©³çްãªèšäºãšãã¬ãŒãã³ã°è³æãå
¬éãããŠããŸãã
ã·ã¹ãã ã€ãã³ãã®è¿œè·¡ããããã°æ
å ±ã®åä¿¡ãšåæãè¡ãããšãã§ããããã€ãã£ãããªLinuxã¡ã«ããºã ã«é¢ããæ
å ±ã¯ã»ãšãã©ãããŸããã 仿¥ã®èšäºã§ãã®ãããã¯ãæ€èšããããšæããŸãã ã«ãŒãã«ã«è¿œå ãããæåã§ãããŸã§å¯äžã®ãã¬ãŒã¹ããŒã«ã§ãã
ftraceã«ç¹ã«æ³šæã
æããŸãã åºæ¬çãªæŠå¿µãå®çŸ©ããããšããå§ããŸãããã
ã«ãŒãã«ã®ãããã¡ã€ãªã³ã°ãšãã¬ãŒã¹
ã«ãŒãã«ãããã¡ã€ãªã³ã°ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããšã§ãã ãããã¡ã€ãªã³ã°ã䜿çšãããšãç¹å®ã®ããã°ã©ã ã§ããã©ãŒãã³ã¹ã®äœäžãçºçããå Žæãæ£ç¢ºã«ç¹å®ã§ããŸãã ç¹å¥ãªããã°ã©ã ã¯ãããã¡ã€ã«-ã€ãã³ãã®èŠçŽãçæããŸããããã«åºã¥ããŠãæãæéã®ããã£ãæ©èœãèŠã€ããããšãã§ããŸãã ãã ãããããã®ããã°ã©ã ã¯ãããã©ãŒãã³ã¹äœäžã®åå ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããã
ãããã¡ã€ãªã³ã°äžã«ç¹å®ã§ããªãç¹å®ã®æ¡ä»¶äžã§ã¯ãããã«ããã¯ãéåžžã«é »ç¹ã«çºçããŸãã ã€ãã³ããçºçããçç±ãçè§£ããã«ã¯ãã³ã³ããã¹ãã埩å
ããå¿
èŠããããŸãã åæ§ã«ãã³ã³ããã¹ãã埩å
ããã«ã¯
ãã¬ãŒã¹ãå¿
èŠã§ãã
ãã¬ãŒã¹ãšã¯ã皌åäžã®ã·ã¹ãã å
ã§äœãèµ·ãã£ãŠãããã«é¢ããæ
å ±ãååŸããããšã§ãã ãã®ããã«ãç¹å¥ãªãœãããŠã§ã¢ããŒã«ã䜿çšãããŸãã ããŒãã¬ã³ãŒããŒãç°å¢ã®ãã¹ãŠã®é³ãèšé²ããããã«ãã·ã¹ãã å
ã®ãã¹ãŠã®ã€ãã³ããèšé²ããŸãã
ãã¬ãŒãµãŒããã°ã©ã ã¯ãåã
ã®ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¬ãã«ã®äž¡æ¹ã§ã€ãã³ããåæã«è¿œè·¡ã§ããŸãã ãã¬ãŒã¹äžã«ååŸããæ
å ±ã¯ãå€ãã®ã·ã¹ãã åé¡ã®èšºæãšè§£æ±ºã«åœ¹ç«ã¡ãŸãã
ãã¬ãŒã¹ã¯ããã®ã³ã°ãšæ¯èŒãããå ŽåããããŸãã 2ã€ã®æé ã«ã¯ç¢ºãã«é¡äŒŒç¹ããããŸãããéãããããŸãã
ãã¬ãŒã¹äžã«ãäœã¬ãã«ã§çºçããã€ãã³ãã«é¢ããæ
å ±ãèšé²ãããŸãã ãã®æ°ã¯æ°çŸãæ°åã§ãã ãã°ã«ã¯ãã·ã¹ãã ã«ãã°ã€ã³ãããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®æäœã®ãšã©ãŒãããŒã¿ããŒã¹ã®ãã©ã³ã¶ã¯ã·ã§ã³ãªã©ãããŸãé »ç¹ã«çºçããªãé«ã¬ãã«ã®ã€ãã³ãã«é¢ããæ
å ±ãå«ãŸããŠããŸãã
ãã°ãšåæ§ã«ããã¬ãŒã¹ããŒã¿ãå«ããã¡ã€ã«ã¯ãã¯ãŒã¯ã·ãŒããããèªã¿åãããšãã§ããŸãã ãã ããç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã®æäœã«é¢é£ããæ
å ±ããããããæœåºããæ¹ãã¯ããã«è峿·±ãæçšã§ãã ãã¹ãŠã®ãã¬ãŒãµããã°ã©ã ã«ã¯ã察å¿ããæ©èœããããŸãã
Linuxã«ãŒãã«ã«ã¯ãã«ãŒãã«ãã¬ãŒã¹ãšãããã¡ã€ãªã³ã°ã®æé ãå®è£
ãã3ã€ã®äž»èŠãªã¡ã«ããºã ããããŸãã
- ãã¬ãŒã¹ãã€ã³ã-ã³ãŒãã®éçã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³ãéããŠæ©èœããã¡ã«ããºã ã
- kprobes-ã«ãŒãã«ã³ãŒãã®å®è¡ãã©ãã§ãäžæããç¬èªã®ãã³ãã©ãŒãåŒã³åºããå¿
èŠãªãã¹ãŠã®æäœãå®äºãããæ»ãããšãã§ããåçãã¬ãŒã¹ã¡ã«ããºã ã
- perf_events-PMUïŒããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°ãŠãããïŒã¢ã¯ã»ã¹ã€ã³ã¿ãŒãã§ã€ã¹ã
ããããã¹ãŠã®ã¡ã«ããºã ã®æ©èœã«ã€ããŠã¯è©³ãã説æããŸããã èå³ã®ããèªè
ã¯ãNTC MetroTech瀟ã®èšäºãš
Brendan Greggã®ããã°ãåç
§ããŠ
ãã ãã ã
ftraceã䜿çšãããšããããã®ã¡ã«ããºã ãšå¯Ÿè©±ãããŠãŒã¶ãŒç©ºéã§ãããã°ããŒã¿ãååŸã§ããŸãã ããã«ã€ããŠã¯ã以äžã§è©³ãã説æããŸãã ãã¹ãŠã®ãµã³ãã«ã³ãã³ãã¯ãã«ãŒãã«ããŒãžã§ã³3.13.0-24ã®Ubuntu 14.04çšã«æäŸãããŠããŸãã
FtraceïŒäžè¬æ
å ±
ftraceãšããååã¯ãFunction Trace-function tracingã®ç¥ã§ãã ãã ãããã®ããŒã«ã®æ©èœã¯ã¯ããã«åºãããã®å©ãã«ãããã³ã³ããã¹ãã¹ã€ããã®è¿œè·¡ãå²ã蟌ã¿ã®åŠçæéã®æž¬å®ãåªå
床ã®é«ãã¿ã¹ã¯ã®ã¢ã¯ãã£ãåæéã®èšç®ãªã©ãã§ããŸãã
Ftraceã¯Stephen Rostedtã«ãã£ãŠéçºããã2008幎ã«ããŒãžã§ã³2.6.27ããã«ãŒãã«ã«è¿œå ãããŸããã ããã¯ãããŒã¿ãæžã蟌ãããã®ãããã°ãªã³ã°ãããã¡ãæäŸãããã¬ãŒã ã¯ãŒã¯ã§ãã ãã®ããŒã¿ã¯ãã«ãŒãã«ã«çµã¿èŸŒãŸããŠãããã¬ãŒãµãŒããã°ã©ã ã«ãã£ãŠåéãããŸãã
Ftraceã¯ãã»ãšãã©ã®ææ°ã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ããã©ã«ãã§ããŠã³ããããŠããdebugfsãã¡ã€ã«ã·ã¹ãã ã«åºã¥ããŠå®è¡ãããŸãã ftraceãéå§ããã«ã¯ãsys / kernel / debug / tracingãã£ã¬ã¯ããªã«ç§»åããã ãã§ãïŒrootãŠãŒã¶ãŒã®ã¿ã䜿çšã§ããŸãïŒã
ãã®äžã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ãšãµããã£ã¬ã¯ããªã«ã€ããŠã¯è©³ãã説æããŸãããããã¯ãã§ã«
å
¬åŒããã¥ã¡ã³ãã§è¡ãããŠã
ãŸã ã æ€èšã®ã³ã³ããã¹ãã§é¢å¿ã®ãããã®ã®ã¿ãç°¡åã«èª¬æããŸãã
- available_tracers-å©çšå¯èœãªãã¬ãŒãµãŒããã°ã©ã ã
current_tracer-çŸåšã¢ã¯ãã£ããªãã¬ãŒãµããã°ã©ã ã - tracing_on-ãªã³ã°ãããã¡ã§ã®ããŒã¿èšé²ãæå¹ãŸãã¯ç¡å¹ã«ãããµãŒãã¹ãã¡ã€ã«ïŒèšé²ãæå¹ã«ããã«ã¯ããã®ãã¡ã€ã«ã«1ãæžã蟌ã¿ãç¡å¹ã«ããã«ã¯0ïŒã
- ãã¬ãŒã¹-ãã¬ãŒã¹ããŒã¿ã人éãèªãã圢åŒã§ä¿åãããŠãããã¡ã€ã«ã
å©çšå¯èœãªãã¬ãŒãµãŒ
ã³ãã³ãã䜿çšããŠãå©çšå¯èœãªãã¬ãŒãµãŒã®ãªã¹ãã衚瀺ã§ããŸã
root@andrei:/sys/kernel/debug/tracing
åãã¬ãŒãµãŒã®ç°¡åãªèª¬æã次ã«ç€ºããŸãã
- function-åŒæ°ãåãåãå¯èœæ§ã®ãªãã«ãŒãã«åŒã³åºã颿°ã®ãã¬ãŒãµãŒã
- function_graph-ãµãã³ãŒã«ã䜿çšããã«ãŒãã«åŒã³åºã颿°ã®ãã¬ãŒãµãŒã
- blk-ãããã¯ããã€ã¹ãžã®å
¥åºåã«é¢é£ããåŒã³åºããšã€ãã³ãã®ãã¬ãŒãµãŒã ãã§ã«æžããã®ã¯blktraceãŠãŒãã£ãªãã£ã§äœ¿çšããã人ã§ãã
- mmiotraceã¯ãã¡ã¢ãªI / Oã®ãã¬ãŒãµãŒã§ãã
- nopã¯æãåçŽãªãã¬ãŒãµãŒã§ããããã®ååã瀺ãããã«ãäœãããŸããïŒãã ããç¶æ³ã«ãã£ãŠã¯ãåŸã§èª¬æããŸãïŒã
ãã¬ãŒãµãŒæ©èœ
颿°tracerããftraceã®ç޹ä»ãå§ããŸãã ãã®ãããªãã¹ãã¹ã¯ãªããã®ææã§æ€èšããŸãã
å°äžå®€ã¯éåžžã«ã·ã³ãã«ã§äžè¬çã«çè§£ã§ããŸãããæ³šæãã䟡å€ãããç¬éããããŸãã
sysctl ftrace.enabled = 1ã³ãã³ãã¯ã颿°ã®ãã¬ãŒã¹ãæå¹ã«ããŸãã æ¬¡ã«ãcurrent_tracerãã¡ã€ã«ã«ååãæžã蟌ãã§ãçŸåšã®ãã¬ãŒãµãŒãã€ã³ã¹ããŒã«ããŸãã
ãã®åŸãtracing_onãã¡ã€ã«ã«1ãæžã蟌ãããšã«ããããªã³ã°ãããã¡ãŒã®æŽæ°ãã¢ã¯ãã£ãã«ããŸãã æ§æã®éèŠãªæ©èœïŒ1ãšsign>ã®éã«ã¯ã¹ããŒã¹ãå¿
èŠã§ãïŒecho1> tracing_onã®åœ¢åŒã®ã³ãã³ãã¯æ©èœããŸããã æåéã1è¡ã§ç¡å¹ã«ããŸãïŒæ³šïŒtracing_onãã¡ã€ã«ã«0ãæžã蟌ãã å Žåããªã³ã°ãããã¡ã¯ã¯ãªã¢ãããŸãã; ftraceã¯ç¡å¹ã«ãªããŸããïŒã
ãªããããè¡ãã®ã§ããïŒ 2ã€ã®ãšã³ãŒã³ãã³ãã®éã«ã¯sleep 1ã³ãã³ããããããããã¡ãŒã®æŽæ°ãæå¹ã«ããŠããã®ã³ãã³ããå®è¡ããããã«ç¡å¹ã«ããŸãã ãã®ããããã¬ãŒã¹ã«ã¯ããã®ã³ãã³ãã®å®è¡äžã«çºçãããã¹ãŠã®ã·ã¹ãã ã³ãŒã«ã«é¢ããæ
å ±ãå«ãŸããŸãã
ã¹ã¯ãªããã®æåŸã®è¡ã§ã¯ãã³ã³ãœãŒã«ã«ãã¬ãŒã¹ããŒã¿ã衚瀺ããã³ãã³ããæå®ããŸãã
ãã®ã¹ã¯ãªãããå®è¡ããçµæãæ¬¡ã®åºåã衚瀺ãããŸãïŒå°ããªãã©ã°ã¡ã³ãã®ã¿ã瀺ããŸãïŒã
åºåã¯ããããã¡å
ã®ã€ãã³ãã¬ã³ãŒãã®æ°ïŒãããã¡å
ã®ãšã³ããªïŒããã³èšé²ãããã€ãã³ãã®ç·æ°ïŒæžã蟌ãŸãããšã³ããªïŒã«é¢ããæ
å ±ããå§ãŸããŸãã ãããã®2æ¡ã®éãã¯ããããã¡ã®å
å¡«äžã«å€±ãããã€ãã³ãã®æ°ã§ãïŒãã®å Žåã倱ãããã€ãã³ãã¯ãããŸããïŒã
次ã¯ãæ¬¡ã®æ
å ±ãå«ã颿°ã®ãªã¹ãã§ãã
- ããã»ã¹èå¥åïŒPIDïŒ;
- ãã¬ãŒã¹ãå®è¡ãããããã»ããµã³ã¢ã®çªå·ïŒCPUïŒïŒã
- ã¿ã€ã ã¹ã¿ã³ãïŒTIMESTAMPã颿°ãå
¥åãããæå»ã瀺ããŸãïŒ;
- ãã¬ãŒã¹ããã颿°ã®ååãšãããåŒã³åºããèŠªé¢æ°ã®ååïŒFUNCTIONïŒ; ããšãã°ãåºåã®æåã®è¡ã§ã¯ãmutex-unlock颿°ãrb_simple_write颿°ã«ãã£ãŠåŒã³åºãããŸãã
Function_graphãã¬ãŒãµãŒ
function_graphãã¬ãŒãµãŒã¯ãfunctionãšãŸã£ããåãããã«æ©èœããŸããã颿°ããã詳现ã«è¿œè·¡ããŸããå颿°ã«ã€ããŠãå
¥å£ç¹ãšåºå£ç¹ã瀺ããŸãã ãã®ãã¬ãŒãµãŒã䜿çšãããšããµãã³ãŒã«ã§é¢æ°ã远跡ããå颿°ã®å®è¡æéãæž¬å®ã§ããŸãã
åã®äŸã§äœ¿çšããã¹ã¯ãªãããç·šéããŸãã
ãã®ã¹ã¯ãªãããå®è¡ããçµæãæ¬¡ã®åºåãåŸãããŸãã
DURATIONåã¯ãæ©èœã®å®äºã«ããã£ãæéã瀺ããŠããŸãã +ããã³ïŒããŒã¯ã®ä»ããã¢ã€ãã ã«ã¯ç¹ã«æ³šæãæã£ãŠãã ããã +èšå·ã¯ã颿°ã10ãã€ã¯ãç§ä»¥äžããããæå笊ã100以äžããã£ãããšãæå³ããŸãã
颿°åŒã³åºãã«é¢ããæ
å ±ãå«ãFUNCTION_CALLSåã
å颿°ã®éå§ãšçµäºã¯ãCã§æ
£äŸãšãªã£ãŠããããã«ããã®äžã«ç€ºãããŠããŸãã颿°ã®å
é ã«äžæ¬åŒ§ãæåŸã«ãã1ã€ããããŸãã ã°ã©ãã®ãªãŒãã§ãããä»ã®é¢æ°ãåŒã³åºããªã颿°ã¯ãã»ãã³ãã³ïŒ;ïŒã§ç€ºãããŸãã
颿°ã®ãã£ã«ã¿ãŒ
ftraceã®åºåã¯éåžžã«å€§ãããªãããšããããå¿
èŠãªæ
å ±ãèŠã€ããã®ã¯éåžžã«å°é£ã§ãã ãã£ã«ã¿ãŒã䜿çšããŠæ€çŽ¢ãç°¡çŽ åã§ããŸããåºåã«ã¯ããã¹ãŠã®æ©èœã«é¢ããæ
å ±ã¯å«ãŸããŸããããæ¬åœã«é¢å¿ã®ããæ©èœã«é¢ããæ
å ±ã®ã¿ãå«ãŸããŸãã ãããè¡ãã«ã¯ãå¿
èŠãªé¢æ°ã®ååãset_ftrace_filterãã¡ã€ã«ã«æžã蟌ãã ãã§ããæ¬¡ã«äŸã瀺ããŸãã
root@andrei:/sys/kernel/debug/tracing
ãã£ã«ã¿ãŒãç¡å¹ã«ããã«ã¯ãåããã¡ã€ã«ã«ç©ºã®è¡ãæžã蟌ãå¿
èŠããããŸãã
root@andrei:/sys/kernel/debug/tracing
ã³ãã³ãã®çµæãšããŠ
root@andrei:/sys/kernel/debug/tracing
æ£å察ã®çµæãåŸãããŸããkfreeïŒïŒãé€ããã¹ãŠã®é¢æ°ã«é¢ããæ
å ±ãåºåãããŸãã
å¥ã®äŸ¿å©ãªãªãã·ã§ã³ã¯set_ftrace_pidã§ãã æå®ãããããã»ã¹ã®å®è¡äžã«åŒã³åºããã颿°ããã¬ãŒã¹ããããšãç®çãšããŠããŸãã
ftraceã®ãã£ã«ã¿ãªã³ã°ãªãã·ã§ã³ã¯ã¯ããã«åºãã§ãã
LWN.netã®Stephen Rostedtã®èšäºã§ããããã«ã€ããŠè©³ããèªãããšãã§ããŸãã
ã€ãã³ããã¬ãŒã¹
ãã¬ãŒã¹ãã€ã³ãã¡ã«ããºã ã«ã€ããŠã¯æ¢ã«èª¬æããŸããã 翻蚳ã®ãã¬ãŒã¹ãã€ã³ããšããèšèã¯ããã¬ãŒã¹ãã€ã³ãããæå³ããŸãã ãã¬ãŒã¹ãã€ã³ãã¯ãç¹å®ã®ã·ã¹ãã ã€ãã³ããèšé²ããã³ãŒããžã®ç¹å¥ãªæ¿å
¥ã§ãã ãã¬ãŒã¹ãã€ã³ãã¯ãã¢ã¯ãã£ãïŒæ€èšŒãå²ãåœãŠãããŠããããšãæå³ããïŒãŸãã¯éã¢ã¯ãã£ãïŒæ€èšŒãå²ãåœãŠãããŠããªãïŒã«ãªããŸãã
éã¢ã¯ãã£ããªãã¬ãŒã¹ãã€ã³ãã¯ãã·ã¹ãã ã®åäœã«åœ±é¿ãäžããŸããã ã€ã³ã¹ãã«ã¡ã³ãåããã颿°ã®æåŸã«ãã¬ãŒã¹é¢æ°ãåŒã³åºãããã«æ°ãã€ãã远å ããã ãã§ãªããããŒã¿æ§é ãå¥ã®ã»ã¯ã·ã§ã³ã«è¿œå ããŸãã
ãã¬ãŒã¹ãã€ã³ããã¢ã¯ãã£ããªå Žåã察å¿ããã³ãŒããã©ã°ã¡ã³ããå®è¡ããããšããã¬ãŒã¹é¢æ°ãåŒã³åºãããŸãã ãã¬ãŒã¹ããŒã¿ã¯ãããã°ãªã³ã°ãããã¡ã«æžã蟌ãŸããŸãã
ãã¬ãŒã¹ãã€ã³ãã¯ãã³ãŒãã®ä»»æã®å Žæã«æ¿å
¥ã§ããŸãã ãããã¯ãã§ã«å€ãã®æ žæ©èœã®ã³ãŒãã«ååšããŠããŸãã ããšãã°ãkmem_cache_alloc颿°ïŒ
ããããååŸïŒãèããŠãã ããïŒ
{ void *ret = slab_alloc(cachep, flags, _RET_IP_); trace_kmem_cache_alloc(_RET_IP_, ret, cachep->object_size, cachep->size, flags); return ret; }
trace_kmem_cache_allocè¡ã«æ³šæããŠ
ãã ãã -ããããŸãã«ãã¬ãŒã¹ãã€ã³ãã§ãã ãã®ãããªäŸã®æ°ã¯ãä»ã®ã«ãŒãã«é¢æ°ã®ãœãŒã¹ã³ãŒããåç
§ããããšã§ä¹ç®ã§ããŸãã
Linuxã«ãŒãã«ã«ã¯ããŠãŒã¶ãŒç©ºéãããã¬ãŒã¹ãã€ã³ããæäœããããã«äœ¿çšã§ããç¹å¥ãªAPIããããŸãã / sys / kernel / debug / tracingãã£ã¬ã¯ããªã«ã¯eventsãµããã£ã¬ã¯ããªãå«ãŸãã远跡ã«äœ¿çšã§ããã·ã¹ãã ã€ãã³ããä¿åãããŸãã ãã®ã³ã³ããã¹ãã§ã®ã·ã¹ãã ã€ãã³ãã¯ãã«ãŒãã«ã«å«ãŸãããã¬ãŒã¹ãã€ã³ãã«ãããŸããã
次ã®ã³ãã³ãã䜿çšããŠããªã¹ãã衚瀺ã§ããŸãã
root@andrei:/sys/kernel/debug/tracing
é·ããªã¹ããã³ã³ãœãŒã«ã«è¡šç€ºãããŸãããããã¯é²èЧããã«ã¯ããªãäžäŸ¿ã§ãã æ¬¡ã®ãããªããæ§é åããã圢åŒã§åããªã¹ãã衚瀺ã§ããŸãã
root@andrei:/sys/kernel/debug/tracing
ã€ãã³ããã©ããã³ã°ã«é²ãåã«ããªã³ã°ãããã¡ã§ã€ãã³ãã®èšé²ãæå¹ã«ãªã£ãŠãããã©ããã確èªããŸãã
root@andrei:/sys/kernel/debug/tracing
ãã®ã³ãã³ããå®è¡ããåŸãæ°å0ãã³ã³ãœãŒã«ã«è¡šç€ºãããå Žåã¯ã次ãå®è¡ããŸãã
root@andrei:/sys/kernel/debug/tracing
ååã®èšäºã§ãchrootïŒïŒã·ã¹ãã ã³ãŒã«ã«ã€ããŠæžããŸãã-ãã®ã·ã¹ãã ã³ãŒã«ãžã®å
¥ãå£ãç£èŠããŸãã ãã¬ãŒãµãŒãšããŠnopãéžæããŸããfunctionãšfunction_graphã¯ãé¢å¿ã®ããã€ãã³ãã«é¢é£ããªãæ
å ±ãå«ãã倧éã®æ
å ±ãæžã蟌ã¿ãŸãã
root@andrei:/sys/kernel/debug/tracing
ã·ã¹ãã ã³ãŒã«ã«é¢é£ãããã¹ãŠã®ã€ãã³ãã¯ãsyscallsãã£ã¬ã¯ããªã«ä¿åãããŸãã æ¬¡ã«ãããŸããŸãªã·ã¹ãã ã³ãŒã«ãéå§ããã³çµäºããããã®ãã£ã¬ã¯ããªãæ ŒçŽããŸãã ã€ããŒãã«ãã¡ã€ã«ã«1ãæžã蟌ãããšã§ãå¿
èŠãªãã¬ãŒã¹ãã€ã³ããã¢ã¯ãã£ãã«ããŸãã
root@andrei:/sys/kernel/debug/tracing
次ã«ãchrootã³ãã³ãã䜿çšããŠåé¢ãã¡ã€ã«ã·ã¹ãã ãäœæããŸãïŒè©³çްã«ã€ããŠã¯ã
åã®æçš¿ãåç
§ããŠãã ããïŒã é¢å¿ã®ããã³ãã³ããå®è¡ããåŸããã¬ãŒã¹ããªãã«ããŠãäžå¿
èŠã§ç¡é¢ä¿ãªã€ãã³ãã«é¢ããæ
å ±ãåºåã«å
¥ããªãããã«ããŸãã
root@andrei:/sys/kernel/debug/tracing
次ã«ããªã³ã°ãããã¡ãŒã®å
容ã衚瀺ããŸãã åºåã®æåŸã«ãé¢å¿ã®ããã·ã¹ãã ã³ãŒã«ã«é¢ããæ
å ±ãå«ãŸããŸãïŒå°ããªãã©ã°ã¡ã³ãã瀺ããŸãïŒã
root@andrei:/sys/kernel/debug/tracing
ã€ãã³ããã©ããã³ã°èšå®ã®è©³çްã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
ãããã«
ãã®èšäºã§ã¯ãftraceæ©èœã®äžè¬çãªæŠèŠãæäŸããŸããã ã³ã¡ã³ãã远å ã¯å€§æè¿ã§ãã ãããã¯ãããã«æ·±ãæãäžãããå Žåã¯ã次ã®ãœãŒã¹ã«ç²Ÿéããããšããå§ãããŸãã
äœããã®çç±ã§ããã«ã³ã¡ã³ããæ®ããªãå Žåã¯ã
ããã°ã«æåŸ
ããŸãã