perf命令文档

文章目录

  • perf
  • 选项
  • 描述
  • perf top
    • 选项
  • perf record
  • perf report
  • perf list
  • perf stat

perf

  • Linux下的性能分析工具
    perf [--version] [--help] [OPTIONS] COMMAND [ARGS]

选项

  • –debug 设置调试变量,值的范围(0,10)
    • 使用实例:
      • --debug verbose #设置verbose为1
      • --debug verbose=2 #设置verbose为2
    • 允许设置的调试变量的列表:
      • verbose 通用调试消息
      • ordered-events 有序事件对象调试消息
      • data-convert 数据转换命令调试消息
  • –buildid-dir 设置buildid缓存目录。 它具有比buildid.dir配置文件选项更高的优先级。
  • -v
  • -h

描述

  • Linux性能计数器是一个新的基于内核的子系统,给所有的性能分析提供一个框架。
  • 覆盖硬件级别特性(CPU/PMU,性能监控单元)以及软件级别特性(软件计数器,tracepoints)

perf top

  • perf-top是系统剖析工具
  • perf top [-e | --event=EVENT] []
  • 这个命令实时地生成并展示性能计数器剖析

选项

长短选项 详解
-a, --all-cpus 系统范围的采集(默认的)
-c , --count= 采样的事件周期
-C , --cpu= 仅仅监控提供的CPU列表。多个CPU可以提供一个逗号分隔的列表,不能有空格,如0,1,可以用-表示多个cpu的一个范围,如0-2。默认是监控所有的CPU
-d , --delay= 刷新之间延迟的秒数
-e , --event= 选择PMU(Performance Monitoring Unit)事件.被选择的可以是一个符号化的事件名称(使用perf list命令可以列出所有的事件),或者是一个原始的PMU事件(eventsel+umask),形式如rNNN其中的NNN是一个十六进制的事件描述符
-E , --entries= 展示Display this many functions
-f , --count-filter= Only display functions with more events than this.
–group 将计数器放到一个计数器组中
-F , --freq= 以这个频率来进行性能剖析
-i, --inherit 子任务不继承计数器
-k , --vmlinux= 到vmlinux这种内核文件的路径,注释功能需要。
-m , --mmap-pages= mmap的数据页数(必须为2的次方),或者尾部带有单位字符(B
-p , --pid= 在已经存在的进程ID上进行剖析,逗号分隔的列表
-t , --tid= 在已经存在的线程ID上进行剖析,逗号分隔的列表
-u, --uid= 记录由uid拥有的线程的事件。名字或者数字都可以
-r , --realtime= 用这个RT SCHED_FIFO优先级来收集数据
–sym-annotate= 注释此符号。
-K, --hide_kernel_symbols 隐藏内核符号
-U, --hide_user_symbols 隐藏用户空间符号
–demangle-kernel 分解内核符号
-D, --dump-symtab 转储用于剖析的符号表
-v, --verbose Be more verbose (show counter open errors, etc).
-z, --zero 显示更新的历史记录为零
-s, --sort 按关键字排序,可以多个key排序。 pid, comm, dso, symbol, parent, srcline, weight, local_weight, abort, in_tx, transaction, overhead, sample, period。参考perf report中的–sort
–fields= 指定输出字段。多个key可以用CSV格式指定。下面的字段是可用的overhead, overhead_sys, overhead_us, overhead_children, sample and period。当然可以包含任何排序key。默认情况下每个没有在这里指定的排序key都会自动加上
-n, --show-nr-samples 展示带有采样数的一列
–show-total-period 展示带有各采样周期和的一列
–dsos 仅仅考虑在这些dsos中的符号。这个选项将影响overhead列的百分比
–comms 仅仅考虑在这些comms中的符号。这个选项将影响overhead列的百分比
–symbols 仅仅考虑这些符号。这个选项将影响overhead列的百分比
-M, --disassembler-style= 给objdump设置反汇编器风格
–source 源代码与汇编代码交织在一起。 默认情况下启用,使用–no-source禁用。
–asm-raw 显示汇编指令的原始指令编码。
-g 启用调用图(stack chain/backtrace)记录。
–call-graph [mode,type,min[,limit],order[,key][,branch]] 设置并启用调用图(stack chain/backtrace)记录,暗含-g
–children 将子级的调用链累积到父项,以便随后可以显示在输出中。输出将有一个新的“ Children”列,并将按数据进行排序。 它要求必须启用-g /-call-graph选项。 有关更多详细信息,请参见“开销计算”部分。 默认情况下启用,使用–no-children禁用。
–max-stack 解析调用链时设置堆栈深度限制,超出指定深度的任何内容都将被忽略。 这是在信息丢失和更快的处理之间做出的权衡,尤其是对于可能具有非常长的调用链堆栈的工作负载而言。默认值:/ proc / sys / kernel / perf_event_max_stack(如果存在),否则为127。
–ignore-callees= 忽略与给定正则表达式匹配的函数的被调用者。 这具有将每个这样的函数的调用者收集到调用图树中的一个位置中的效果。
–percent-limit 不要显示开销低于该百分比的条目。 (默认值:0)
–percentage 确定如何显示已过滤条目的开销百分比。 可以通过–comms,-dsos和/或–symbols选项以及TUI上的Zoom操作(线程,dso等)应用过滤器。相对表示它仅与过滤的条目有关,因此显示的条目之和始终为100%。 绝对表示在应用过滤器之前和之后均保留原始值。
-w, --column-widths= 强制将每列宽度设置为提供的列表,以提高终端可读性。 0表示没有限制(默认行为)。
–proc-map-timeout 在处理预先存在的线程/proc/XXX/mmap时,可能需要很长时间,因为文件可能很大。 在这种情况下,需要超时。 此选项设置超时限制。 默认值为500毫秒。
-b, --branch-any 启用已采取的分支堆栈采样。 可以对任何类型的采用分支进行采样。 这是–branch-filter any的快捷方式。 有关更多信息,请参见–branch-filter。
-j, --branch-filter 启用分支栈采样.每个样本捕获一系列连续的分支。 每个样本捕获的分支数量取决于基础硬件,相关分支的类型以及执行的代码。 通过启用过滤器可以选择捕获的分支类型。 有关修饰符的完整列表,请参见性能记录手册页。该选项要求any,any_call,any_ret,ind_call和cond中至少一种分支类型。 特权级别可以省略,在这种情况下,关联事件的特权级别将应用于分支过滤器。 内核(k)和管理程序(hv)特权级别均受许可权的约束。 在多个事件上采样时,将为所有采样事件启用分支堆栈采样。 所有事件的采样分支类型均相同。 必须将各种过滤器指定为以逗号分隔的列表:–branch-filter any_ret,u,k请注意,此功能可能并非在所有处理器上都可用。
–raw-trace 显示traceevent输出时,不使用print fmt或插件。
–hierarchy 启用层次化的输出
–force 不要进行所有权验证
–num-thread-synthesize 当合成已经存在的进程的事件时要运行的线程数。默认情况下,线程数等于在线CPU数。

perf record

perf report

perf list

perf stat

你可能感兴趣的:(性能调优)