dtrace question -- TCP smoothed RTT ?
George Neville-Neil
gnn at neville-neil.com
Sun Oct 19 20:01:25 UTC 2014
On 10/19/2014 15:22, grenville armitage wrote:
> Hi,
>
> Just started playing with Dtrace two weeks ago, and am curious to see
> how much siftr(4) functionality can be replicated with a dtrace script.
> Apologies in advance if my question/proposal stems from simply having
> too much 'dtrace newbie' flowing in my veins.
>
> I'd like be able to use args[3]->tcps_srtt to extract the current
> smoothed TCP RTT when inside a tcp:::send or tcp:::receive probe.
> Currently this isn't available (as best as I can tell). My solution was
> to patch /usr/src/cddl/lib/libdtrace/tcp.d by adding two lines as follows:
>
>
> *** tcp.d-orig Fri Aug 15 16:35:44 2014
> --- tcp.d Tue Oct 14 14:24:36 2014
> ***************
> *** 116,121 ****
> --- 116,122 ----
> uint32_t tcps_rto; /* round-trip timeout, msec */
> uint32_t tcps_mss; /* max segment size */
> int tcps_retransmit; /* retransmit send event,
> boolean */
> + int tcps_srtt; /* smoothed RTT in units of
> (TCP_RTT_SCALE*hz) */
> } tcpsinfo_t;
> /*
> ***************
> *** 200,205 ****
> --- 201,207 ----
> tcps_rto = p == NULL ? -1 : p->t_rxtcur / 1000; /*
> XXX */
> tcps_mss = p == NULL ? -1 : p->t_maxseg;
> tcps_retransmit = p == NULL ? -1 : p->t_rxtshift > 0 ? 1 : 0;
> + tcps_srtt = p == NULL ? -1 : p->t_srtt; /*
> smoothed RTT in units of (TCP_RTT_SCALE*hz) */
> };
> #pragma D binding "1.0" translator
>
>
> The result is args[3]->tcps_srtt with the same semantics as the smoothed
> RTT output by SIFTR.
>
> Would someone with commit bit like to take this change and run with it?
> Or poke holes? Or suggest an improvement?
>
> (If it matters, the above patch was applied to and tested on FB10-stable
> r269789 source.)
>
I'll take a look at this, possibly today. Do you have any scripts that
use this functionality?
Best,
George
More information about the freebsd-dtrace
mailing list