missing DTrace FBT return probes

Navdeep Parhar np at FreeBSD.org
Thu Nov 13 18:44:19 UTC 2014


On 11/13/14 08:33, Grier, James wrote:
> On Wed, Jun 5, 2013 at 5:50 PM, Navdeep Parhar <np at freebsd.org> wrote: > A large number of kernel functions have an FBT entry probe but no return
>> probe. I believe this is due to tail call optimization by the compiler.
>> Should we disable this optimization for kernel configs that have DTrace
>> support? The missing return probes make it very difficult to write
>> DTrace scripts that want to set flags etc. at function entry and then
>> clean them up on return.
>>
>> A quick sample from a recent HEAD shows ~4000 out of ~27000 functions
>> are missing return probes. See the list of functions in these files
>> (the ones listed in entry-only.txt do not have return probes).
>>
>> http://people.freebsd.org/~np/entry-only.txt
>> http://people.freebsd.org/~np/entry.txt
>> http://people.freebsd.org/~np/return.txt
>>
>> Regards,
>> Navdeep
>
> By trial and error, I discovered that it’s ‘-funit-at-a-time’ that does the dirty work, so
> using ‘-fno-unit-at-a-time’ with -O2 we get all the return fbt probes. I haven’t determined
> the performance impact of this.

Hmm, I thought it was -fno-optimize-sibling-calls that controlled this 
particular optimization.

These days I compile my debug kernels with -O0.  There is a very 
significant performance impact but it makes kgdb and DTrace very happy.

Regards,
Navdeep



More information about the freebsd-arch mailing list