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.)
cheers,
gja
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-dtrace
To unsubscribe, send any mail to "[email protected]"