oprofile(oprofile 内核)
1、功能是架构无关的,可以用来监视内核的4项功能要想找开功能,除了要在中打开支持选项外,还要在命令行加上=**。**表示上述4种功能之一,##表示一个数字,用来表示监视的颗粒度。当做了这些工作之后还需要用到工具中的来读取结果,结果是从//文件中读取的,此工具做了格式化处理。以下为转载:。
2、首先确认内核支持,然后在内核启动时加入以下参数:=1或者其它参数,新的内核支持=2。内核启动后会创建//文件,这个文件可以通过读取,如-//|->~/_或者--//|-,或者-&&1&&-//|->~/_。
3、读取//可获得哪些内容。根据启动配置=。的不同,获取的内容不同:。
4、如果设置成=可以获得每个函数调用的次数,用来调试很有用。在内核中创建一个//接口,在系统启动时用_()分配好存放信息的内存,每条指令都有一个计数器。
5、如果设置的是=2统计每条指令执行的次数。在时钟中断中调用_(_,),将当前指令->的计数值+1。
oprofile(oprofile 内核)
1、这个统计有点不准,因为一个之间,可能执行很多函数,而统计的只是恰好发生时钟中断时的那个函数。但取样点多了,这些信息还是能说明问题。如果设置的是=统计每个指令调用()的次数,在()中调用_(_,____(0));其实真正调用的指令只有有限的几个,但这些信息可以获得调度点的精确信息。
2、_()的作用是将当前指令的计数值加1。_()是在每个时钟的时候将响应的指令计数值加1。_一般被其它工具,如用来在每次中断发生时,添加自己的处理函数。
3、信息其实包括任务的所有统计信息,所以可以用__()在任务退出或者用户空间内存释放时,挂载自己的回调函数,以统计这些信息。信息的统计在和下不同,即_的实现不同,的实现中有一个,这可避免多个在统计时效率低下问题。具体可以察看源代码/。平台相关工具,请注意自己平台支持的。
4、://。作为一名开发人员,在试图提高代码效率时,您可能发现性能瓶颈是您要面对的最困难的任务之一。代码分析,是一种可以使这项任务变得更容易的方法。代码分析包括对那些表示运行系统上的某些处理器活动的数据样本进行分析。
5、为上的提供了这种解决方案。被包含在最新的。支持的发行版本中:4(4)和9(9)。