perf命令文档

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=EVENT] [<options>]
  • 这个命令实时地生成并展示性能计数器剖析

选项

长短选项详解
-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, --verboseBe 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=<width[,width…]>强制将每列宽度设置为提供的列表,以提高终端可读性。 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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值