summaryrefslogtreecommitdiff
path: root/lib/coverage.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-04-20 13:51:13 -0700
committerBen Pfaff <blp@nicira.com>2012-04-26 14:07:16 -0700
commit275a506cbe10db1e673fa1182582a507ba69418e (patch)
treeb055ad71fe6416345cc02523583b51c91c7edc00 /lib/coverage.c
parentc563de0e389f42164d4f7bf76845dced4590a18c (diff)
downloadopenvswitch-275a506cbe10db1e673fa1182582a507ba69418e.tar.gz
coverage: Rate-limit logging coverage information.
I'd always assumed that the exponentially weighted moving average code in timeval was enough rate-limiting, but I actually encountered a pathological case some time ago that forced this coverage information to print once a second or so, which seems too often. Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/coverage.c')
-rw-r--r--lib/coverage.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/coverage.c b/lib/coverage.c
index 0deb5265a..ff20f5e9c 100644
--- a/lib/coverage.c
+++ b/lib/coverage.c
@@ -158,11 +158,14 @@ coverage_log_counter(enum vlog_level level, const struct coverage_counter *c)
void
coverage_log(enum vlog_level level, bool suppress_dups)
{
+ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 3);
size_t n_never_hit;
uint32_t hash;
size_t i;
- if (!vlog_is_enabled(THIS_MODULE, level)) {
+ if (suppress_dups
+ ? !vlog_is_enabled(THIS_MODULE, level)
+ : vlog_should_drop(THIS_MODULE, level, &rl)) {
return;
}