trace-cmd
trace-cmd是ftrace的前端工具,主要为了简化trace的操作。
1 安装 trace-cmd
- yum 安装:
yum install -y trace-cmd
2 trace-cmd 命令
2.1 trace-cmd list
- 功能:显示可用的 tracer、plugins、 events 或 Ftrace options
- 语法:
trace-cmd list [OPTIONS]
-e
: 列出可用事件
-s
:列出可用的 event systems
-t
:列出可用的 tracers
-p
:同 -t
选项
-o
:列出本地系统上配置的可用 Ftrace 选项
-f [regex]
:列出可用的 filter functions
- 示例
➜ trace-cmd list -t
timerlat osnoise hwlat blk function_graph wakeup_dl wakeup_rt wakeup function nop
2.2 trace-cmd record
- 功能:记录命令将设置 Ftrace Linux 内核跟踪器以记录命令执行时发生的指定插件或事件。如果没有给出命令,那么它会记录直到用户按下 Ctrl-C。会生成 trace.dat 文件。
- 语法:
trace-cmd record [OPTIONS] [command]
-p tracer
:指定跟踪器,trace-cmd list -p/-t
显示的,比如 functioon、function_graph
-e event
:指定事件,trace-cmd list -e
显示的,比如,
-v
:不使用某事件,常用在这种场景,比如 :-e sched -v -e "*stat\*"
-P pid
:指定进程号
2.3 trace-cmd report
- 功能:显示 trace-cmd record 产生的数据
- 语法:
trace-cmd report [OPTIONS] [input-file]
2.4 trace-cmd start/stop/show/clear
- 功能:
start
:在记录的情况下启动 Ftrace Linux 内核跟踪程序(与 record 的区别在于,不生成 trace. dat 文件, 直接写入 ring buffer)
show
:显示 Ftrace Linux 内核跟踪缓冲区的内容
stop
:停止 Ftrace Linux 内核跟踪程序写入环形缓冲区
clear
:清除 Ftrace Linux 内核跟踪缓冲区的内容
- 使用方法
- 先
trace-cmd start [OPTIONS]
- 在
trace-cmd show [OPTIONS]
- 最后
trace-cmd stop [OPTIONS]
- 可选
trace-cmd clear [OPTIONS]
- 示例
➜ trace-cmd start -p function
plugin 'function'
➜ trace-cmd show |head -20
# tracer: function
#
# entries-in-buffer/entries-written: 205044/1161319 #P:4
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
bash-4376 [000] ...1 10839.329183: seccomp_filter_release <-release_task
bash-4376 [000] ...1 10839.329183: __seccomp_filter_orphan <-seccomp_filter_release
bash-4376 [000] ...1 10839.329183: __put_seccomp_filter <-release_task
bash-4376 [000] ...1 10839.329183: proc_flush_pid <-release_task
bash-4376 [000] ...1 10839.329183: proc_invalidate_siblings_dcache <-release_task
bash-4376 [000] ...1 10839.329184: __rcu_read_lock <-proc_invalidate_siblings_dcache
bash-4376 [000] ...1 10839.329184: __rcu_read_unlock <-release_task
bash-4376 [000] ...1 10839.329184: put_pid <-release_task
bash-4376 [000] ...1 10839.329184: put_pid.part.0 <-release_task
➜ trace-cmd stop
➜ trace-cmd clear