之前介绍通过命令行配置和使用ftrace功能,但是实际中,我们也会希望抓C/C++程序中某段代码的调度情况。笔者前不久就遇到这种问题,某个函数调用时延概率超过100ms,是为什么?这时候就需要在他们代码中使能ftrace抓执行此函数时候,任务的调度情况。

观察某段代码执行过程中的情况,ftrace提供了trace markers功能,可通过写入trace_marker接口在ftrace中留下记录。如下


[tracing]# echo hello world > trace_marker [tracing]# cat trace # tracer: nop # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | <...>-3718 [001] 5546.183420: 0: hello world

利用tracing_on和trace_marker接口,可以很好的trace任务的执行情况(前提是任务源码可见)。


int main() { int fd_mark = open("/sys/kernel/debug/tracing/trace_marker", O_CREAT|O_RDWR, 0666); int fd_trace = open("/sys/kernel/debug/tracing/tracing_on", O_CREAT|O_RDWR, 0666); /* enable trace */ write(fd_trace, "1", 2); /* add trace mark */ write(fd_mark, "start time", 11); /* Run something */ /* add trace mark */ write(fd_mark, "end time", 11); /* disable trace */ write(fd_trace, "0", 2); close(fd_mark); close(fd_trace); }

可参考如上代码,在自己程序中动态使能和关闭ftrace,并在希望的位置添加markers。

ftrace在应用上的使用的更多相关文章

  1. 使用 ftrace 调试 Linux 内核,第 1 部分【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace1/index.html ftrace 是 Linux 内核中提供的一种调试工具.使用 ...

  2. 使用 ftrace 调试 Linux 内核,第1部分

    ftrace 是 Linux 内核中提供的一种调试工具.使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.本系列文章对 ftrace 进行了介绍,分为三部分 ...

  3. Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比

    Linux内核suspend状态 Linux内核支持多种类型的睡眠状态,通过设置不同的模块进入低功耗模式来达到省电功能.目前存在四种模式:suspend to idle.power-on standb ...

  4. ftrace的使用【转】

    转自:http://blog.csdn.net/cybertan/article/details/8258394 This article explains how to set up ftrace ...

  5. 利用ftrace跟踪内核static tracepoint——实例writeback event

    摘要:和很多linux内核子系统一样,static tracepoint有很多层次,其中某个层次都展示给不同层次的开发者来满足他们的不同需求.关于linux tracepoint的详细信息,我们可以在 ...

  6. Linux ftrace框架介绍及运用

    目录: 1. ftrace背景 2. 框架介绍 3. 主要代码分析 4. ftrace的配置和使用 5. ftrace相关工具 在日常工作中,经常会需要对内核进行Debug.或者进行优化工作.一些简单 ...

  7. Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比【转】

    转自:https://www.cnblogs.com/arnoldlu/p/6253665.html 测试环境:AOSP 7.1.1+Kernel 4.4.17 HW:HiKey Ubuntu 14. ...

  8. ftrace:跟踪你的内核函数! | Linux 中国

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79161135 ftrace 是一个 L ...

  9. 利用ftrace跟踪内核static tracepoint

    摘要:和很多linux内核子系统一样,static tracepoint有很多层次,其中某个层次都展示给不同层次的开发者来满足他们的不同需求.关于linux tracepoint的详细信息,我们可以在 ...

  10. 【转】ftrace 简介

    ftrace 简介 ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数 ...

随机推荐

  1. SptingBoot同时接收文件和对象数据(接收表单数据)

    emmm...虽然很简单,而且网上全是教程,但是自己做个笔记映像才会更深刻,还请各位前辈多多指教: @RequestMapping(value = "/eventPush", me ...

  2. 【MySQL】LEFT JOIN 踩坑

    一.问题发现: 主查询功能发现两条一样的记录,但是审批状态不一样,一个已通过,一个待审核 主表付款表: CREATE TABLE `pur_or_payment` ( `id` int(11) NOT ...

  3. 【Mybatis】11 注解的使用

    文档引用:http://www.mybatis.cn/archives/678.html 视频参考:https://www.bilibili.com/video/BV1NE411Q7Nx?p=15 注 ...

  4. 【SpringBoot】10 Web开发 Part1 静态资源

    使用SpringBoot创建工程的方式: 1.在IDEA集成的Boot官网选项中点选可能需要的框架环境即可 2.SpringBoot已经设置好了这些场景,只需要配置文件中指定少量配置就可以运行起来 3 ...

  5. 【Java-GUI】10 Swing04

    面板容器: package cn.dzz.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax ...

  6. 带有最小间隔时间的队列读取实现 —— 最小等待时间的队列 —— Python编程(续)

    接前文: 带有最小间隔时间的队列读取实现 -- 最小等待时间的队列 -- Python编程 由于上次的设计多少有些简单,这里对此丰富一下. ============================== ...

  7. 一文带你理解URI 和 URL 有什么区别?

    当我们打开浏览器,要访问一个网站或者一个ftp服务器的时候,一定要输入一串字符串, 比如: https://blog.csdn.net/ 或者: ftp://192.168.0.111/ 这样我们就可 ...

  8. MFC中CString转int,double

    CString str=L"123"; int n=_wtoi(str); //n=123 double d=_wtof(str); //d=123.0000 Vs2012中编译

  9. 旧笔记本安装Win8.1实录

    昨天发现一台尘封已久的Lenovo ideapad Y550,给它装上了Windows 10 然后第二天系统挂掉了 挂的原因是半夜万恶之源Windows更新开始造孽了 刚好没电 文件全坏了 真 解除封 ...

  10. 折腾 Quickwit,Rust 编写的分布式搜索引擎-官方配置详解

    Node configuration(节点配置) 节点配置允许您为集群中的各个节点自定义和优化设置.它被分为几个部分: 常规配置设置:共享的顶级属性 Storage(存储)设置:在storage部分定 ...