[smokeping-users] continuous pinging revisited
Tobias Oetiker
tobi at oetiker.ch
Fri May 27 17:50:57 CEST 2011
Hi Adam,
send your patches to the mailinglist ...
the subversion repo is on
https://svn.oetiker.ch/smokeping/
debugging the sleep cycle was just no issue until now ...
cheers
tobi
Today Adam Spiers wrote:
> Hi all,
>
> Firstly thanks for this very useful software.
>
> I'm trying to set up smokeping to run pings continuously, or as close
> as possible to continuous. I see this has been attempted or at least
> considered before:
>
> http://thread.gmane.org/gmane.network.smokeping.user/4202
>
> My motivation is the same as the original poster there - I need to
> capture every single second where there might be network issues.
> Therefore I was very surprised to discover that it seems smokeping
> does not support this use case.
>
> I found the --nosleep parameter which is mentioned very briefly in the
> docs as being "for debugging". Looking at the main while loop in
> Smokeping.pm it seems that this option eliminates all sleeps, so it's
> not possible to have certain probes running continuously whilst others
> sleep as normal.
>
> Then I looked at setting the 'step' configuration parameter value to
> the duration of the probe. The docs describe this parameter as
> follows:
>
> Duration of the base operation interval of SmokePing in
> seconds. SmokePing will venture out every step seconds to ping your
> target hosts.
>
> Looking at the source code, I see that the intention is that "every
> step seconds" includes the runtime of the probe. For example, if you
> have step=60 and pings=10, the probes are launched every 60 seconds,
> not every 70 seconds. For continuous pinging, one might think that
> setting step=10 and pings=10 would yield the desired results.
> However, there are two problems with this. Firstly, the code in
> question is:
>
> my $sleeptime = $step - (time-$offset) % $step;
> [...]
> sleep $sleeptime;
>
> so if the probe takes even a fraction over 10 seconds, it ends up
> sleeping for nearly another 10 seconds until the next 10 second
> boundary. This means the pings are only happening roughly 50% of the
> time, not continuously. A hack might be to set pings=9, but then the
> pings are only happening 90% of the time. It's possible to get
> arbitrarily close to 100% by making both values very high,
> e.g. step=1000 and pings=999, but then you lose the granularity of RRD
> results.
>
> The second issue is that there is a hardcoded expectation that the
> probe runtime will be less than 80% of the polling cycle:
>
> elsif ($runtime > $step * 0.8) {
> my $warn = "NOTE: smokeping took $runtime seconds to complete
> 1 round of polling. ".
> "This is over 80% of the max time available for a polling
> cycle ($step seconds).\n";
> if (defined $myprobe) {
> $probes->{$myprobe}->do_log($warn);
> } else {
> do_log($warn);
> }
> }
>
> So if you choose continuous pinging, which seems to me (and presumably
> the original poster) to be a perfectly reasonable use case, your
> logfiles get spammed with messages.
>
> My workaround for now is as follows:
>
> 1. Configure steps=10 and pings=10
> 2. Comment out the lines causing warnings above
> 3. Invoke with --nosleep
>
> I had a couple of other minor questions:
>
> 1. I see mentions of an svn repository on the mailing list, but
> nothing is published. Where is the latest code available, and
> what's the standard procedure for submitting patches?
>
> 2. Why does --debug exit immediately after the first iteration?
> What if you want to debug the sleep cycle?
>
> Many thanks!
> Adam
>
> _______________________________________________
> 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, Switzerland
http://it.oetiker.ch tobi at oetiker.ch ++41 62 775 9902 / sb: -9900
More information about the smokeping-users
mailing list