Recent Posts

Systemtap EXP: PostgreSQL IN-BUILD mark Class 6 - lock

16 minute read

背景 本文要讲的是PostgreSQL内建的锁类别的探针,以及使用stap跟踪的方法. 正文 PostgreSQL锁类别探针分为轻量锁, 重量锁, 以及死锁的探针. 轻量锁探针 : probe lwlock__acquire(LWLockId, LWLockMode); 当得到轻量锁时触发,...

Systemtap EXP: PostgreSQL IN-BUILD mark Class 4 - buffer

7 minute read

背景 本文开始讲PostgreSQL内建探针的另一个分类, buffer. buffer分类探针中包含: 1. buffer读开始, 结束; 2. shared buffer flush开始, 结束(结束点指将数据交付到内核, 并非磁盘, 所以如果要计算flush时间的话, 这个探针不合适)(在F...

Systemtap EXP: PostgreSQL IN-BUILD mark Class 2 - query

3 minute read

背景 本文要讲的是PostgreSQL内建探针的第二个分类 : query. 相比第一个分类transaction, query更加精细. 例如函数调用, 可以精细到函数内部的每个SQL, 以及嵌套函数的最底层的SQL等. 包含SQL查询开始, 结束, 语义解析开始, 结束, 重写开始, 结束, plan开始...

Systemtap EXP: PostgreSQL IN-BUILD mark Class 1 - transaction

6 minute read

背景 本文开始将以PostgreSQL内建的探针为例, 探讨一下围绕这些探针可以实现哪些想要的功能. 使用systemtap时, 需要把postgresql mark name中的-换成两个下划线. 第一个分类是事务相关探针 : Name Paramet...

Systemtap EXP: trace PostgreSQL netflow per session or per sql

4 minute read

背景 前面几篇blog介绍了使用systemtap统计PostgreSQL单挑SQL以及整个会话的io操作. 本文将要介绍一下对数据库单条SQL的网络传输包, 传输字节数的统计. 以及整个会话的统计. 需要用到的探针如下 : tapset/tcp.stp /** * probe tcp.r...

Systemtap EXP: Trace PostgreSQL iostat per SQL statement 2

6 minute read

背景 本例为上一篇blog的扩展, 可输出到块设备, 以及区分os cache的io请求操作. 相当精细. stp文件如下 : global io_stat1%[120000] // 非cache读写字节数(单SQL) global io_stat11%[120000] // 非cache读写耗...