Skip to content

Latest commit

 

History

History
142 lines (50 loc) · 3.96 KB

20131107_01.md

File metadata and controls

142 lines (50 loc) · 3.96 KB

Systemtap Function thread_indent:string(delta:long)

作者

digoal

日期

2013-11-07

标签

PostgreSQL , Linux , systemtap , stap , dtrace , probe


背景

thread_indent:string(delta:long)是一个非常有用的函数, 通过thread_indent:string(delta:long)可以非常方便的看出函数调用的嵌套以及层次结构.  
输出结构为: time offset(microseconds), 进程名, 进程id, n个空格.  
    这里的time offset指在同一个线程内, thread_indent()函数被调用的时间位移量, 第一次调用时为0.  
    n指每次thread_indent(n)输出时 加(n正) 或 减(n负) 的空格个数.  
  
用法举例 :   
probe kernel.function("*@net/socket.c").call  
{  
  printf ("%s -> %s\n", thread_indent(1), probefunc())  
}  
probe kernel.function("*@net/socket.c").return  
{  
  printf ("%s <- %s\n", thread_indent(-1), probefunc())  
}  
  
输出举例 :   
0 ftp(7223): -> sys_socketcall  
1159 ftp(7223):  -> sys_socket  
2173 ftp(7223):   -> __sock_create  
2286 ftp(7223):    -> sock_alloc_inode  
2737 ftp(7223):    <- sock_alloc_inode  
3349 ftp(7223):    -> sock_alloc  
3389 ftp(7223):    <- sock_alloc  
3417 ftp(7223):   <- __sock_create  
4117 ftp(7223):   -> sock_create  
4160 ftp(7223):   <- sock_create  
4301 ftp(7223):   -> sock_map_fd  
4644 ftp(7223):    -> sock_map_file  
4699 ftp(7223):    <- sock_map_file  
4715 ftp(7223):   <- sock_map_fd  
4732 ftp(7223):  <- sys_socket  
4775 ftp(7223): <- sys_socketcall  

参考

1. https://sourceware.org/systemtap/SystemTap_Beginners_Guide/systemtapscript-handler.html

2. https://sourceware.org/systemtap/tapsets/API-thread-indent.html

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat