Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Oct 2013 14:05:20 -0400
From:      George Neville-Neil <gnn@neville-neil.com>
To:        Mark Johnston <markj@freebsd.org>
Cc:        dtrace@FreeBSD.org, Andriy Gapon <avg@FreeBSD.org>
Subject:   Re: "unstable" sdt probes
Message-ID:  <4B39604C-C678-43A1-9EFD-D1D7DE69CF02@neville-neil.com>
In-Reply-To: <20131025175147.GB1906@charmander>
References:  <5268F461.7080504@FreeBSD.org> <20131024161620.GA1710@charmander> <526A9CB5.2050207@FreeBSD.org> <20131025175147.GB1906@charmander>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]

On Oct 25, 2013, at 13:51 , Mark Johnston <markj@freebsd.org> wrote:

>> 
>> BTW, I've been pondering an idea of reimplementing how the SDT probes get
>> called.  In FreeBSD we have a special hook function pointer that we check for
>> not being NULL and then make a function call.
>> In illumos they compile the code with an unconditional function call.  This way
>> the probe parameters are placed into the proper registers (or stack locations).
>> But during run-time linking the call instructions are replaced with series of
>> 1-byte NOP instructions (5 x 0x90 for amd64).  When a probe gets activated then
>> the first of those NOPs gets replaced with 0xf0 (lock prefix), which results in
>> an invalid instruction (and that happens atomically).  So, that allows for the
>> SDT hook to be invoked via the trap handler.
>> 
>> So, I think that that results in less overhead for inactive probes, but probably
>> in more overhead for active probes.  There is a trade off, but I believe that
>> less overhead for inactive probes is preferred.
> 
> I'd like to find a good way of quantifying the overhead of the current
> approach when probes are disabled. Do you have any suggestions? One
> thing I'd like to try is just doing a TCP bulk transfer to localhost,
> since that'll trip the ip and tcp probes for each packet, and then
> just measure throughput with the current implementation and with the
> approach used in illumos.
> _

Are you wanting to quantify just the workload involved with the probes being on and
off?  If so, you want something simpler, and lower overhead than a TCP
connection.  Perhaps measuring fork() (not exec) with unixbench.

I gather you’re going to do this with hwpmc?

Best,
George



[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org

iEYEARECAAYFAlJqsuAACgkQYdh2wUQKM9IEoACgnaTjSwigUa4G/kJ34kiIaQji
Y/oAoJe6r1LS/Mg92LKy6Im1FQMHBNiH
=QYel
-----END PGP SIGNATURE-----
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B39604C-C678-43A1-9EFD-D1D7DE69CF02>