digoal PostgreSQL Dynamic Trace

digoal PostgreSQL Dynamic Trace

ID:33636471

大小:3.23 MB

页数:128页

时间:2019-02-27

digoal PostgreSQL Dynamic Trace_第1页
digoal PostgreSQL Dynamic Trace_第2页
digoal PostgreSQL Dynamic Trace_第3页
digoal PostgreSQL Dynamic Trace_第4页
digoal PostgreSQL Dynamic Trace_第5页
资源描述:

《digoal PostgreSQL Dynamic Trace》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、PostgreSQLDynamicTraceDigoal.zhouMonday,October14,20132013PostgreSQLChinaConferenceSKYMOBI,Hangzhou,ZhejiangAgenda动态跟踪的由来systemtap简介探针介绍PostgreSQL探针及使用举例PostgreSQL自定义探针PostgreSQL探针结合系统探针使用举例动态跟踪的由来PostgreSQL在Linux下的动态跟踪stap运行的5个步骤:1.输入执行代码(.stp或-e‘’),

2、载入tapset库,-I库,解析执行代码.2.从第一步载入的库文件中匹配执行代码中的所有探针,函数,变量,操作符等,从执行代码的上下文中自动推测变量数据类型3.将执行代码转换成C代码/root/.systemtap/cache/e8/stap_e878009262b7836eb07f0b5a0bf0705e_970.c4.生成Linux内核模块文件/root/.systemtap/cache/e8/stap_e878009262b7836eb07f0b5a0bf0705e_970.ko5.将模块加载到内

3、核并与之通讯,拷贝这个内核对象跟踪到的数据到临时文件中.直到stap运行结束或受到中断请求信号.最后staprun从内核中卸载这个ko模块,并且清除整个stap过程产生的临时文件.使用stap跟踪PostgreSQL内核,不需要中断数据库,不影响(或很小的影响)数据库用户请求.http://blog.163.com/digoal@126/blog/static/163877040201391434530674/动态跟踪的由来systemtap简介

4、数据类型字符串,数字(64bit),数组,统计类型操作符字符串.(字符串连接符)整型(64bit)*/+-%(加减乘除取余数)>><<&^

5、(比特左右移,与,异或,或)&&

6、

7、(逻辑与或)一元操作符(+,-,!,~,++,--)(正,负,逻辑非,比特反转,自增,自减)比较操作符(<,>,<=,>=,==,!=),规则匹配(=~,!~)数组[idx1,…idxn]invar_arr(判断索引是否存在)foreach([idx1,…idxn]+-invar_array[@count

8、…@avg]+

9、-)deletevar_arr(清除所有元素),deletevar_arr[idx1,…idxn](清除指定索引的元素)统计类型<<<(往统计类型变量中添加元素),deletestatic_var(清空)其他,a?b:c表达式的值:a真则取b,否则取c上下文变量->取结构field数据代码注释/**/,#,//systemtap简介语句breakandcontinuetry/catchdeleteEXP(expression)forforeachifnext;(nullstate

10、ment)return{}(statementblock)whilesystemtap简介函数function:ret_type(par1:type1,…)functionthatfn:string(arg1:long,arg2){returnsprintf("%d%s",arg1,arg2)}EmbbedC用法function:(:,...)%{%}IO用法STAP_ARG_foo(forargumentsnamedfoo),

11、STAP_RETVALUE%{#include#include%}/*<--toplevel*//*Readsthecharvaluestoredatagivenaddress:*/function__read_char:long(addr:long)%{/*pure*/STAP_RETVALUE=kderef(sizeof(char),STAP_ARG_addr);CATCH_DEREF_FAULT();%}/*<--functionbody*/

12、/*DetermineswhetheranIPpacketisTCP,basedontheiphdr:*/functionis_tcp_packet:long(iphdr){protocol=@cast(iphdr,"iphdr")->protocolreturn(protocol==%{IPPROTO_TCP%})/*<--expression*/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。