[smokeping-users] Less smoke.
Tobias Oetiker
tobi at oetiker.ch
Fri May 23 20:29:05 CEST 2008
Hi Ged,
cool stuff ... thanks for the patch
tobi
Today G.W. Haywood wrote:
> Hi there,
>
> It's very common for the RTT of the first ping in a series to be much
> greater than those subsequent. This is easily explained because there
> may be much more work for the routers etc. along the way to do for the
> first packet, they have to populate ARP caches for example.
>
> However this can give very misleading statistics in some cases. I've
> modified my copy of FPing.pm to send one more ping than requested, and
> then to discard the first returned RTT value.
>
> 8<----------------------------------------------------------------------
> *** FPing.pm.original 2008-05-23 15:02:39.000000000 +0100
> --- FPing.pm 2008-05-23 15:08:15.000000000 +0100
> ***************
> *** 32,37 ****
> --- 32,40 ----
>
> The (optional) B<packetsize> option lets you configure the packetsize for the pings sent.
>
> + This version of FPing sends one more ping than requested, and discards
> + the first RTT value returned as it's likely to be an outlier.
> +
> The FPing manpage has the following to say on this topic:
>
> Number of bytes of ping data to send. The minimum size (normally 12) allows
> ***************
> *** 121,127 ****
>
> my @cmd = (
> $self->binary,
> ! '-C', $self->pings, '-q','-B1','-r1',
> @params,
> @{$self->addresses});
> $self->do_debug("Executing @cmd");
> --- 124,130 ----
>
> my @cmd = (
> $self->binary,
> ! '-C', ($self->pings)+1, '-q','-B1','-r1', # Add an extra ping
> @params,
> @{$self->addresses});
> $self->do_debug("Executing @cmd");
> ***************
> *** 134,140 ****
> my @times = split /\s+/;
> my $ip = shift @times;
> next unless ':' eq shift @times; #drop the colon
> !
> @times = map {sprintf "%.10e", $_ / $self->{pingfactor}} sort {$a <=> $b} grep /^\d/, @times;
> map { $self->{rtts}{$_} = [@times] } @{$self->{addrlookup}{$ip}} ;
> }
> --- 137,143 ----
> my @times = split /\s+/;
> my $ip = shift @times;
> next unless ':' eq shift @times; #drop the colon
> ! shift @times; # Junk the first result.
> @times = map {sprintf "%.10e", $_ / $self->{pingfactor}} sort {$a <=> $b} grep /^\d/, @times;
> map { $self->{rtts}{$_} = [@times] } @{$self->{addrlookup}{$ip}} ;
> }
>
> 8<----------------------------------------------------------------------
>
> In some circumstances, the results can be striking:
>
> http://www.jubileegroup.co.uk/JOS/misc/less_smoke.png
>
> --
>
> 73,
> Ged.
>
> _______________________________________________
> smokeping-users mailing list
> smokeping-users at lists.oetiker.ch
> https://lists.oetiker.ch/cgi-bin/listinfo/smokeping-users
>
>
--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten
http://it.oetiker.ch tobi at oetiker.ch ++41 62 213 9902
More information about the smokeping-users
mailing list