没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Dynamic Tracing
with DTrace
SystemTap
Sergey Klyaus
Copyright © 2011-2016 Sergey Klyaus
This work is licensed under the Creative Commons Attribution-Noncommercial-ShareAlike
3.0 License. To view a copy of this license, visit
https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559
Nathan Abbott Way, Stanford, California 94305, USA.
Table of contents
7Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Foreword
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Typographic conventions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12TSLoad workload generator
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Operating system Kernel
15Module 1: Dynamic tracing tools. dtrace and stap tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Dynamic tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17DTrace
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19SystemTap
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Safety and errors
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Stability
25Module 2: Dynamic tracing languages
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Probes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Arguments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Context
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Predicates
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Types and Variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Pointers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Strings and Structures
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Exercise 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . 44Associative arrays and aggregations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Time
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Printing and speculations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Tapsets translators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Exercise 2
54Module 3: Principles of dynamic tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Applying tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Dynamic code analysis
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Profiling
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Performance analysis
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Pre- and post-processing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Vizualization
74Module 4: Operating system kernel tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Process management
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Exercise 3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Process scheduler
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Virtual Memory
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Exercise 4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Virtual File System
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Block Input-Output
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Asynchronicity in kernel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Exercise 5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Network Stack
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Synchronization primitives
. . . . . . . . . . . . . . . . . . . . . . . 143Interrupt handling and deferred execution
146Module 5: Application tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Userspace process tracing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Unix C library
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Exercise 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Java Virtual Machine
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Non-native languages
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Web applications
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Exercise 7
173Appendix A. Exercise hints and solutions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Exercise 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175Exercise 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176Exercise 3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Exercise 4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Exercise 5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Exercise 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Exercise 7
193Appendix B. Lab setup
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Setting up Operating Systems
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194iSCSI
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Web application stack
200Appendix C. Cheatsheet
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Cheatsheet
4
SystemTap example scripts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47scripts/stap/wstat.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51scripts/stap/tapset/lstat.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52scripts/stap/lstat.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58scripts/stap/callgraph.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75scripts/stap/dumptask.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84scripts/stap/proc.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100scripts/stap/cfstrace.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113scripts/stap/pagefault.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128scripts/stap/scsitrace.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141scripts/stap/wqtrace.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150scripts/stap/pthread.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155scripts/stap/hotspot.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162scripts/stap/pymalloc.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165scripts/stap/pycode.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169scripts/stap/web.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174scripts/stap/opentrace.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176scripts/stap/openaggr.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176scripts/stap/dumptask-lab3.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182scripts/stap/forktime.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184scripts/stap/pfstat.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187scripts/stap/kmemstat.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187scripts/stap/deblock.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188scripts/stap/readahead.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191scripts/stap/mtxtime.stp
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191scripts/stap/topphp.stp
DTrace example scripts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47scripts/dtrace/wstat.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50scripts/dtrace/stat.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60scripts/dtrace/callgraph.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80scripts/dtrace/dumptask.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85scripts/dtrace/proc.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91scripts/dtrace/tstrace.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110scripts/dtrace/pagefault.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125scripts/dtrace/sdtrace.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143scripts/dtrace/cvtrace.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151scripts/dtrace/pthread.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155scripts/dtrace/hotspot.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162scripts/dtrace/pymalloc.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164scripts/dtrace/pycode.d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171scripts/dtrace/web.d
5
剩余207页未读,继续阅读
资源评论
书香度年华
- 粉丝: 1w+
- 资源: 383
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功