ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ftrace(二、关键文件介绍)

2021-05-14 11:01:55  阅读:340  来源: 互联网

标签:文件 ftrace trace buffer cpu tracer 关键 echo CPU


关键的文件介绍(用到再添加用法)

  1. 指定要跟踪的函数

    echo :mod:c1 > set_ftrace_filter #跟踪c1中的函数,前提是c1要在内核中加载
    #也可以指定函数进行跟踪
    echo hello_init > set_ftrace_filter
    

    在这里插入图片描述

    在这里插入图片描述

  2. 显示和配置当前的tracer

    cat available_tracers
    cat current_tracer 
    echo function_graph > current_tracer 
    cat current_tracer 
    

    在这里插入图片描述

  3. 开关trace

    echo 0 > tracing_on #关闭 
    echo 1 > tracing_on #打开
    

    在这里插入图片描述

  4. 查看跟踪的信息

    在这里插入图片描述

  5. 全部的文件介绍

    current_tracer:配置和显示当前使能tracer。可用tracer见available_tracers;
    available_tracers:显示系统支持的tracer。
    tracing_on:使能写trace日志到ring buffer的开关,同时也可cat查看是否使能。echo 0表示关闭,echo 1表示打开。注意这里是总开关的概念,如果current_tracer或event都未使能(配置为空和关闭event开关),那么就算这里写1使能,trace文件也是空的;如果配置了current_tracer和event,这个接口相当于总开关。
    trace:保存trace记录,cat trace查看跟踪记录。注意这里是临时存放buffer,有空间大小限制,如果超了会被覆盖。
    buffer_size_kb:用于设置和显示单个CPU所使用的跟踪缓存的大小。跟踪缓存为RingBuffer形式,如果跟踪太多,旧的信息会被新的跟踪信息覆盖掉。默认size通常是一个页(4K)。每个cpu的buffer size配置在per_cpu/cpu0/buffer_size_kb,percpu配置后,此文件显示"X"。
    buffer_total_size_kb:显示所有的跟踪缓存大小,不同之处在于buffer_size_kb是单个CPU的,buffer_total_size_kb是所有CPU的和。
    trace_pipe:输出和trace一样的内容,输出实时tracing日志,这样就避免了RingBuffer的溢出。cat trace_pipe > trace.txt &保存文件,但是cat时候会带来一些性能损耗。
    trace_options:控制Trace打印内容格式或者设置跟踪器,可以通过trace_options添加很多附加信息。
    options:目录文件,里面是每个trace options的文件,和trace_options对应,可以通过echo 0/1使能options。
    tracing_max_latency:记录某些Tracer的最大延时。比如interrupts的最大延时关闭后,会记录在这里。可以echo值到此文件,然后遇到比设置值更大的延迟才会更新。
    tracing_thresh:延时记录Trace的阈值,当延时超过此值时才开始记录Trace。单位是ms,只有非0才起作用
    free_buffer:此文件用于在一个进程被关闭后,同时释放RingBuffer内存,并将调整大小到最小值。
    tracing_cpumask:可以通过此文件设置跟踪指定CPU,二进制格式。
    set_ftrace_filter:指定要跟踪的函数,可跟踪函数见available_filter_functions
    set_ftrace_notrace:指定不跟踪的函数,缺省为空。
    set_ftrace_pid:tracer将只追踪写入此文件PID的对应的进程。"function-fork" option设置后,pid对应进程创建的子进程也会自动跟踪。
    set_event_pid:tracer将只追踪写入此文件PID的对应进程的event。"event-fork" option设置后,pid对应进程创建的子进程event也会自动跟踪。
    set_graph_function:function_graph tracer将只跟踪此文件配置的函数,缺省对所有函数都追踪。
    set_graph_notrace:function_graph tracer不跟踪特定的函数嵌套调用。
    available_filter_functions:显示可以跟踪的functions。
    dyn_ftrace_total_info:debug使用,显示available_filter_functins中跟中函数的数目,两者一致
    enabled_functions:显示回调函数。
    function_profile_enabled:使能trace_stat/function<cpu> 的统计信息功能,统计包括function/hit/Time/Avg等信息。
    trace_stat:存放不同tracing状态的目录
    kprobe_events:Enable dynamic trace points. See kprobetrace.txt.
    kprobe_profile:Dynamic trace points stats. See kprobetrace.txt.
    max_graph_depth:function graph tracer使用,配置函数嵌套的最大深度。
    printk_formats:提供给工具读取原始格式trace的文件。
    saved_cmdlines:ftrace会存放pid的comms在一个pid mappings,在显示event时候同时显示comm,这里可以配置pid对应的comm,如果配置,显示类似<idle>-0,否则<...>-0。
    saved_cmdlines_size:saved_cmdlines的数目
    saved_tgids:If the option "record-tgid" is set, on each scheduling context switch the Task Group ID of a task is saved in a table mapping the PID of the thread to its TGID. By default, the "record-tgid" option is disabled.
    snapshot:是对trace的snapshot。
                                  echo 0清空缓存,并释放对应内存。
                                  echo 1进行对当前trace进行snapshot,如没有内存则分配。
                                  echo 2清空缓存,不释放也不分配内存。
    stack_max_size:当使用stack跟踪器时,记录产生过的最大stack size
    stack_trace:显示stack的back trace
    stack_trace_filter:设置stack tracer不检查的函数名称
    
    trace_clock:配置trace日志中"timestamp"列的时钟,默认使用local时钟。
    	local:默认时钟,在每CPU中快速且精准,但是可能不会在各个CPU之间同步;
    	global:各CPU间同步,但是比local慢;
    	counter:并不是时钟,而是一个原子计数器。数值一直+1,但是所有cpu是同步的。主要用处是分析不同cpu发生的events;
    	uptime:time stamp和jiffies counter根据boot time;
    	perf:clock跟perf使用一致。
    	x86-tsc:非系统自己时钟。比如x86有TSC cycle clock;
    	ppc-tb:使用powerpc的基础时钟寄存器值;
    	mono:使用fast monotonic clock (CLOCK_MONOTONIC)
    	mono_raw:使用raw monotonic clock (CLOCK_MONOTONIC_RAW)
    	boot:使用boot clock (CLOCK_BOOTTIME)。
    
    trace_marker:从用户态写trace mark到ftrace中,可以做一个标记到trace。
    trace_marker_raw:以二进制格式写入到trace中。
    uprobe_events:Add dynamic tracepoints in programs.See uprobetracer.rst
    uprobe_profile:Uprobe statistics. See uprobetrace.txt
    instances:创建不同的trace buffer实例,可以在不同的trace buffers中分开记录。
    events:系统Trace events目录,在每个events下面都有enable、filter和fotmat。enable是开关;format是events的格式,然后根据格式设置 filter。
    set_event:将Trace events名称直接写入set_event就可以打开。
    available_events:列出系统中所有可用的Trace events,分两个层级,用冒号隔开。
    per_cpu:
    per_cpu/cpu0/buffer_size_kb:配置per_cpu的buffer空间
    per_cpu/cpu0/trace:当前CPU的trace文件。
    per_cpu/cpu0/trace_pipe:当前CPU的trace_pipe文件。
    per_cpu/cpu0/trace_pipe_raw:当前CPU的trace_pipe_raw
    per_cpu/cpu0/snapshot:当前CPU的snapshot
    per_cpu/cpu0/snapshot_raw:当前CPU的snapshot_raw
    per_cpu/cpu0/stats:当前CPU的trace统计信息
    

标签:文件,ftrace,trace,buffer,cpu,tracer,关键,echo,CPU
来源: https://blog.csdn.net/huzai9527/article/details/116782475

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有