zoukankan      html  css  js  c++  java
  • 【转】使用ftrace查找Kernel启动阶段的延时原因

     

    转自   ftrace(三)(实例) : https://blog.csdn.net/rikeyone/article/details/80110843

    查找Kernel启动阶段的延时原因

    1.确保内核配置了如下选项

    CONFIG_FTRACE: "Tracers"
    CONFIG_FUNCTION_TRACER: "Kernel Function Tracer"
    CONFIG_FUNCTION_GRAPH_TRACER: "Kernel Function Graph Tracer"
    

    2.配置function graph trace到commandline

    tracing_thresh=200 ftrace=function_graph

    这将在kernel启动阶段自动使能function graph tracer,并且会跟踪所有延迟超过200us的function

    3.用户关闭trace

    当启动完成后需要用户自行执行关闭操作,trace才会关闭:

    echo 0 > /sys/kernel/debug/tracing/tracing_on    
    

    4.获取trace log

    cat /sys/kernel/debug/tracing/trace > /sdcard/trace.txt


    查找最大的kernel stack

    1.确保内核配置了如下选项

    
    CONFIG_FTRACE: "Tracers"
    
    CONFIG_FUNCTION_TRACER: "Kernel Function Tracer"
    
    CONFIG_STACK_TRACER: "Trace max stack"

    2.配置stack trace到commandline

    stacktrace

    这将在kernel启动阶段自动使能stack trace,并且除非用户执行:

    echo 0 > /proc/sys/kernel/stack_tracer_enabled

    否则,stack trace会一直运行下去。

    3.获取trace log

    cat /debug/tracing/stack_trace > /sdcard/trace.txt
     

    启动阶段使能event trace

     同上,配置commandline:

    trace_event=sched:*,timer:*,irq:* trace_buf_size=40M

    有上面的实例可以知道,ftrace除了能够在运行阶段动态配置使能和关闭,也可以利用命令行来进行配置操作,这主要是针对boot阶段的trace操作。

    trace某个进程

    echo nop > /sys/kernel/debug/tracing/current_tracer
    
    echo function > /sys/kernel/debug/tracing/current_tracer
    
    echo 520 > /sys/kernel/debug/tracing/set_ftrace_pid 
    
    echo 1 > /sys/kernel/debug/tracing/tracing_on
    
    echo 0 > /sys/kernel/debug/tracing/tracing_on 
    
  • 相关阅读:
    C# 操作Excel之旁门左道
    C#数据类型、控件、数据类型、ADO.NET等命名规范
    tab 切换函数
    ASP.NET常用JS脚本整理
    实现MSMQ消息加密的安全实践
    关于jQuery中的offset()和position()
    SQL中使用update inner join和delete inner join
    setTimeout和setInterval
    设计漂亮的样式表是一门艺术(译) (转)
    使用jQuery制作手风琴效果(转)
  • 原文地址:https://www.cnblogs.com/hankfu/p/14442949.html
Copyright © 2011-2022 走看看