ppc linux 性能,用profile和oprofile监视视linux性能!

profile使用:

profile功能是架构无关的,可以用来监视linux内核的4项功能,即:

11 #define CPU_PROFILING   1

12 #define SCHED_PROFILING 2

13 #define SLEEP_PROFILING 3

14 #define KVM_PROFILING   4

要想找开profile功能,除了要在menuconfig中打开支持选项外,还要在命令行加上profile=**,##.

**表示上述4种功能之一,##表示一个数字,用来表示监视的颗粒度,越小越细。

当做了这些工作之后还需要用到util linux工具中的readprofile来读取结果,结果是从/proc/profile文件中读取的,此工具做了格式化处理。以下为转载:

1. 如何使用profile:

首先确认内核支持profile,然后在内核启动时加入以下参数:profile=1或者其它参数, 新的内核支持profile=schedule,1

2. 内核启动后会创建/proc/profile文件,这个文件可以通过readprofile读取,

如readprofile -m /proc/kallsyms | sort -nr > ~/cur_profile.log,

或者readprofile -r -m /proc/kallsyms |sort -nr,

或者readprofile -r && sleep 1 && readprofile -m /proc/kallsyms |sort -nr >~/cur_profile.log

3. 读取/proc/profile可获得哪些内容?

根据启动配置profile=?的不同,获取的内容不同:

如果设置成profile=schedule可以获得每个函数调用schedule的次数,用来调试schedule很有用

profile的实现:

在内核中创建一个/proc/profile接口,在系统启动时用profile_init()分配好存放profile信息的内存,每条指令都有一个计数器。

如果设置的是profile=2 统计每条指令执行的次数。在时钟中断中调用        profile_tick(CPU_PROFILING,

regs),将当前指令regs->eip的计数值+1。这个统计有点不准,因为一个jiffies之间,可能执行很多函数,而统计的只是恰好发生

时钟中断时的那个函数。但取样点多了,这些信息还是能说明问题。

如果设置的是profile=schedule 统计每个指令调用schedule()的次数,在schedule()中调用profile_hit(SCHED_PROFILING, __builtin_return_address(0));

其实真正调用schedule的指令只有有限的几个,但这些信息可以获得调度点的精确信息。

profile_hit()的作用是将当前指令的计数值加1

profile_tick()是在每个时钟tick的时候将响应的指令计数值加1

time_hook 一般被其它profile工具,如oprofile用来在每次中断发生时,添加自己的处理函数。

profile信息其实包括任务的所有统计信息,所以可以用profile_event_register()在任务退出或者用户空间内存释放时,挂载自己的回调函数,以统计这些信息。

profile信息的统计在smp和up下不同,即profile_hit的实现不同,smp的实现中有一个PerCPU cache,这可避免多个CPU在profile统计时效率低下问题。具体可以察看源代码kernel/profile.c

oprofile使用:

oprofile平台相关工具,请注意自己平台支持的event.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bisect git 使用_Git使用过程中的一些常见场景问题总结

之前在公司内部推Git,写了一份git使用教程,后来又在团队内部做了一次分享,内容是关于Git使用过程中经常会遇到的一些场景,并有了这份总结。git基础基于feature的工作流添加忽略文件 .gitignore (http://gitignore.io/)基于develop…

c 多文件全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?

点击上方蓝字关注我哦~01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是1. 做控制的工程师 2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量都写成全局该有多方便”。我之前面试过一个非常有名的做控制实验室里出来的PhD…

linux耳机插拔检测,Android应用开发之耳机插拔处理两种方式

本文将带你了解Android应用开发[RK3288][Android6.0] 耳机插拔处理两种方式,希望本文对大家学Android有所帮助。[RK3288][Android6.0] 耳机插拔处理两种方式。Platform: RockchipOS: Android 6.0Kernel: 3.10.92系统对耳机插拔处理的方式有两种,一种…

医学图像处理_专刊征稿|医学图像处理中的认知计算

认知科学是20世纪世界科学标志性的新兴研究门类,它作为探究人脑或心智工作机制的前沿性尖端学科,已经引起了全世界科学家们的广泛关注。认知计算代表一种全新的计算模式,它包含信息分析,自然语言处理和机器学习领域的大量技术创新…

python 如何判断一个函数执行完成_Python 函数为什么会默认返回 None?

👆 “Python猫” ,一个值得加星标的公众号Python 有一项默认的做法,很多编程语言都没有——它的所有函数都会有一个返回值,不管你有没有写 return 语句。 本文出自“Python为什么”系列,在正式开始之前,我们…

中美线径对照表_中国线径与英美德线规对照表

德DIN*线径(mm)实际截面(mm2)标准截面(mm2)线号线径(mm)线号线径(mm)线径(mm)7/012.712.56/011.7854/011.68411.298.52001005/010.9733/010.40411.21078.5400804/010.1610963.6200633/09.4492/09.26692/08.839850.27005008.2308.253817.627.139.59004027.0117.3487.16.331.1700…

不在 sudoers 文件中。此事将被报告_快餐包装中检出致癌物质?麦当劳、汉堡王回应!...

薯条汉堡、雪碧可乐已然成为大家的用餐首选之一一周吃了两次以上的人相信也不在少数可最近一则“麦当劳、汉堡王等快餐包装中检出致癌物质”的消息却让许多人吓出了一身冷汗而且迅速登上热搜榜…近日,环保组织的一份报告称,美国当地麦当劳McDonald’s、汉…

lichee linux nfs,SPI Flash 系统编译

在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配。本文介绍SPI Flash镜像的制作过程。这里 使用 MX25L25645G, 32M SPI flash 作为启动介质,规划分区如下:分区序号分区大小分区作用地址空间及分…

tensorflow越跑越慢_tensorflow如何解决越运行越慢的问题

这几天写tensorflow的时候发现随着迭代的次数越来越多,tensorflow跑的速度越来越慢。查找才发现是tensorflow不断的给之前的图里加节点,导致占用的内存越来越大,然后我尝试了网上的各种方法,终于发现了一个靠谱的方法,…

propertysource注解_Java开发必须掌握的 20+ 种 Spring 常用注解

作者:IT_faquir链接:https://blog.csdn.net/IT_faquir注解本身没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。本文主要罗列Spring|SpringMVC相关注解的简介。Spring部分1.…

linux协议栈劫持,Linux系统优化之TCP协议栈优化-基本篇1

因为在做爬虫分布式系统的过程中,涉及到了一些linux系统优化方面的知识,所以来总结一下,我们会对linux的不同模块做相关的基本优化,这篇文章主要讲述的是关于tcp协议栈的参数优化。1.机器环境Linux EOS01 2.6.32-358.el6.x86_64 #…

datapumpdir oracle_oracle_datapump创建外部表案例

一、datapump创建外部表,数据来源于内部实体表 --首先创建 scott.countries实体表,用于做实验 SQLgt; create table scott.cou一、datapump创建外部表,数据来源于内部实体表--首先创建 scott.countries实体表,用于做实验SQL> c…

linux 百度地图离线sdk,Android开放百度地图集成

1、创建应用 获取AK (我理解为Application key)通过百度账号登录百度地图开放平台,进入API控制台 http://lbsyun.baidu.com/apiconsole/key 创建自己的应用,输入应用名称 ,选择Android SDK 应用类型,选择需要的服务(默认全选) 输入…

activiti7流程设计器_基于容器和微服务应用的架构:容器设计原则

微服务提供了巨大的好处,但也带来了巨大的新挑战。在创建基于微服务的应用程序时,微服务体系结构模式是最基本的支柱。在本指南的前面,您学习了关于容器和Docker的基本概念。这是开始使用容器所需的最低信息。尽管,即使容器是微服…

opencv 图像 抠图 算法_图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

一、序言陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的。除了利用和Photoshop中的魔棒一样的技术或者Photoshop中的选区菜单中的色彩范围…

女生做产品经理好吗_女生天生就是产品经理,不服来战!

关注🔝蓝字,获取求职干货信息大家好,姗姗来迟~这个梗会不会被扣工资前两天,小米的资深产品经理Alina老师征集用户需求:关于产品经理的直播课,大家想听什么呀?姗姗一直很好奇:一个对逻…

c语言文件读写r 的作用,C语言 读写二进制文件

查找了比较多的资源, 发现没有办法把text 文件转成binary文件仅作为记录,不过这个例子可以去除换行符。#include #include #define N 255int main(){char a[N];FILE *fp1,*fp2;fp1fopen("test_seq.fa","r");fp2fopen("testSeq.…

verlay虚拟化技术_FPGA虚拟化:突破次元壁的技术

原标题:FPGA虚拟化:突破次元壁的技术来源:内容来自「老石谈芯」,作者 老石,谢谢。1利用FPGA虚拟化突破时空限制在传统的FPGA开发模型中,使用者通常使用硬件描述语言(HDL)对应用场景进行建模,然后…

tcp报文格式_34.TCP取样器

阅读文本大概需要3分钟。1、TCP取样器的作用TCP取样器作用就是通过TCP/IP协议来连接服务器,然后发送数据和接收数据。2、TCP取样器详解TCPClient classname:TCP报文格式类名,默认前缀org.apache.jmeter.protocol.tcp.sampler.① TCPClientImp…

c语言程序设计字符处理周信东,“电子科技大学出版社(周信东主编)”的C语言程序设计实验-整理代码-.doc...

“电子科技大学出版社(周信东主编)”的C语言程序设计实验-整理代码-.doc-前言-/*非常感谢度?娘以及各位?网上C语言?高手的支持?,才能让敝人?完成此文档?的整理。本文档集合?了本人、度娘、众网友的力?量,其中代码的?正确率约为?90%(不正确的有…