[experimental-ims] a2dbc59 Renovate ban related statistics, add long descriptions etc.
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:52:30 CET 2012
commit a2dbc597f6bb7a9bc16345432cdd753caef16986
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Nov 9 10:59:26 2011 +0000
Renovate ban related statistics, add long descriptions etc.
diff --git a/bin/varnishd/cache_ban.c b/bin/varnishd/cache_ban.c
index 648997c..ac45144 100644
--- a/bin/varnishd/cache_ban.c
+++ b/bin/varnishd/cache_ban.c
@@ -376,7 +376,6 @@ void
BAN_Insert(struct ban *b)
{
struct ban *bi, *be;
- unsigned pcount;
ssize_t ln;
double t0;
@@ -402,8 +401,10 @@ BAN_Insert(struct ban *b)
Lck_Lock(&ban_mtx);
VTAILQ_INSERT_HEAD(&ban_head, b, list);
ban_start = b;
- VSC_C_main->n_ban++;
- VSC_C_main->n_ban_add++;
+ VSC_C_main->bans++;
+ VSC_C_main->bans_added++;
+ if (b->flags & BAN_F_REQ)
+ VSC_C_main->bans_req++;
be = VTAILQ_LAST(&ban_head, banhead_s);
if (params->ban_dups && be != b)
@@ -419,7 +420,6 @@ BAN_Insert(struct ban *b)
/* Hunt down duplicates, and mark them as gone */
bi = b;
- pcount = 0;
Lck_Lock(&ban_mtx);
while(bi != be) {
bi = VTAILQ_NEXT(bi, list);
@@ -429,11 +429,10 @@ BAN_Insert(struct ban *b)
if (memcmp(b->spec + 8, bi->spec + 8, ln - 8))
continue;
bi->flags |= BAN_F_GONE;
- VSC_C_main->n_ban_gone++;
- pcount++;
+ VSC_C_main->bans_gone++;
+ VSC_C_main->bans_dups++;
}
be->refcount--;
- VSC_C_main->n_ban_dups += pcount;
Lck_Unlock(&ban_mtx);
}
@@ -520,20 +519,28 @@ BAN_Reload(const uint8_t *ban, unsigned len)
t0 = ban_time(ban);
assert(len == ban_len(ban));
+
+ Lck_Lock(&ban_mtx);
+
VTAILQ_FOREACH(b, &ban_head, list) {
t1 = ban_time(b->spec);
assert (t1 < t2);
t2 = t1;
- if (t1 == t0)
+ if (t1 == t0) {
+ Lck_Unlock(&ban_mtx);
return;
+ }
if (t1 < t0)
break;
- if (!memcmp(b->spec + 8, ban + 8, len - 8))
+ if (!memcmp(b->spec + 8, ban + 8, len - 8)) {
gone |= BAN_F_GONE;
+ VSC_C_main->bans_dups++;
+ VSC_C_main->bans_gone++;
+ }
}
- VSC_C_main->n_ban++;
- VSC_C_main->n_ban_add++;
+ VSC_C_main->bans++;
+ VSC_C_main->bans_added++;
b2 = BAN_New();
AN(b2);
@@ -552,9 +559,13 @@ BAN_Reload(const uint8_t *ban, unsigned len)
for (b = VTAILQ_NEXT(b2, list); b != NULL; b = VTAILQ_NEXT(b, list)) {
if (b->flags & BAN_F_GONE)
continue;
- if (!memcmp(b->spec + 8, ban + 8, len - 8))
+ if (!memcmp(b->spec + 8, ban + 8, len - 8)) {
b->flags |= BAN_F_GONE;
+ VSC_C_main->bans_dups++;
+ VSC_C_main->bans_gone++;
+ }
}
+ Lck_Unlock(&ban_mtx);
}
/*--------------------------------------------------------------------
@@ -705,8 +716,8 @@ ban_check_object(struct object *o, const struct sess *sp, int has_req)
}
Lck_Lock(&ban_mtx);
- VSC_C_main->n_ban_obj_test++;
- VSC_C_main->n_ban_re_test += tests;
+ VSC_C_main->bans_tested++;
+ VSC_C_main->bans_tests_tested += tests;
if (b == oc->ban && skipped > 0) {
AZ(has_req);
@@ -758,9 +769,11 @@ ban_CheckLast(void)
b = VTAILQ_LAST(&ban_head, banhead_s);
if (b != VTAILQ_FIRST(&ban_head) && b->refcount == 0) {
if (b->flags & BAN_F_GONE)
- VSC_C_main->n_ban_gone--;
- VSC_C_main->n_ban--;
- VSC_C_main->n_ban_retire++;
+ VSC_C_main->bans_gone--;
+ if (b->flags & BAN_F_REQ)
+ VSC_C_main->bans_req--;
+ VSC_C_main->bans--;
+ VSC_C_main->bans_deleted++;
VTAILQ_REMOVE(&ban_head, b, list);
} else {
b = NULL;
@@ -888,7 +901,7 @@ ban_lurker_work(const struct sess *sp, unsigned pass)
if (!(b->flags & BAN_F_REQ)) {
if (!(b->flags & BAN_F_GONE)) {
b->flags |= BAN_F_GONE;
- VSC_C_main->n_ban_gone++;
+ VSC_C_main->bans_gone++;
}
if (params->diag_bitmap & 0x80000)
VSL(SLT_Debug, 0, "lurker BAN %f now gone",
@@ -1090,6 +1103,6 @@ BAN_Init(void)
ban_magic = BAN_New();
AN(ban_magic);
ban_magic->flags |= BAN_F_GONE;
- VSC_C_main->n_ban_gone++;
+ VSC_C_main->bans_gone++;
BAN_Insert(ban_magic);
}
diff --git a/bin/varnishtest/tests/c00019.vtc b/bin/varnishtest/tests/c00019.vtc
index a27bb8e..5cc5973 100644
--- a/bin/varnishtest/tests/c00019.vtc
+++ b/bin/varnishtest/tests/c00019.vtc
@@ -16,7 +16,7 @@ varnish v1 -vcl+backend {} -start
varnish v1 -cliok "ban.url FOO"
# There is one "magic" ban from boot
-varnish v1 -expect n_ban_add == 2
+varnish v1 -expect bans_added == 2
varnish v1 -cliok "ban.list"
# Our fetch is not affected by the ban
@@ -31,12 +31,12 @@ client c1 {
} -run
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban_obj_test == 0
-varnish v1 -expect n_ban_re_test == 0
+varnish v1 -expect bans_tested == 0
+varnish v1 -expect bans_tests_tested == 0
# Add another ban
varnish v1 -cliok "ban.url FOO"
-varnish v1 -expect n_ban_add == 3
+varnish v1 -expect bans_added == 3
varnish v1 -cliok "ban.list"
# The cached object will be band, and a new
@@ -47,8 +47,8 @@ client c1 {
expect resp.http.foo == 2
} -run
-varnish v1 -expect n_ban_obj_test == 1
-varnish v1 -expect n_ban_re_test == 1
+varnish v1 -expect bans_tested == 1
+varnish v1 -expect bans_tests_tested == 1
varnish v1 -cliok "ban.list"
# Fetch the cached copy, just for grins
@@ -62,15 +62,15 @@ client c1 {
# Now add another two bans, Kilroy should not be hit
varnish v1 -cliok "ban.url KILROY"
varnish v1 -cliok "ban.url FOO"
-varnish v1 -expect n_ban_add == 5
+varnish v1 -expect bans_added == 5
# Enable dup removal of bans
varnish v1 -cliok "param.set ban_dups on"
# This should incapacitate the two previous FOO bans.
varnish v1 -cliok "ban.url FOO"
-varnish v1 -expect n_ban_add == 6
-varnish v1 -expect n_ban_dups == 3
+varnish v1 -expect bans_added == 6
+varnish v1 -expect bans_dups == 3
varnish v1 -cliok "ban.list"
# And we should get a fresh object from backend
@@ -81,8 +81,8 @@ client c1 {
} -run
# With only two objects having ever been compared
-varnish v1 -expect n_ban_obj_test == 2
-varnish v1 -expect n_ban_re_test == 2
+varnish v1 -expect bans_tested == 2
+varnish v1 -expect bans_tests_tested == 2
varnish v1 -cliok "ban.list"
# Test a bogus regexp
diff --git a/bin/varnishtest/tests/c00049.vtc b/bin/varnishtest/tests/c00049.vtc
index facd979..59e6c14 100644
--- a/bin/varnishtest/tests/c00049.vtc
+++ b/bin/varnishtest/tests/c00049.vtc
@@ -49,8 +49,8 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban req.url == /alpha"
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 2
-varnish v1 -expect n_ban_gone == 1
+varnish v1 -expect bans == 2
+varnish v1 -expect bans_gone == 1
client c1 {
txreq -url "/beta"
@@ -61,7 +61,7 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban obj.http.foo == /beta"
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 3
+varnish v1 -expect bans == 3
client c1 {
txreq -url "/gamma"
@@ -72,7 +72,7 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban obj.http.foo == /gamma"
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 4
+varnish v1 -expect bans == 4
client c1 {
txreq -url "/delta"
@@ -83,22 +83,22 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban req.url == /delta"
-varnish v1 -expect n_ban_gone == 1
+varnish v1 -expect bans_gone == 1
varnish v1 -cliok "ban obj.http.foo == /gamma"
# Dup-check should have added one
-varnish v1 -expect n_ban_gone == 2
+varnish v1 -expect bans_gone == 2
varnish v1 -cliok "ban req.url == /epsilon"
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 7
-varnish v1 -expect n_ban_gone == 2
+varnish v1 -expect bans == 7
+varnish v1 -expect bans_gone == 2
varnish v1 -cliok "param.set ban_lurker_sleep .01"
delay 1
varnish v1 -cliok "param.set ban_lurker_sleep .00"
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 7
-varnish v1 -expect n_ban_gone == 4
+varnish v1 -expect bans == 7
+varnish v1 -expect bans_gone == 4
client c1 {
txreq -url "/alpha"
@@ -108,7 +108,7 @@ client c1 {
delay 1
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 4
+varnish v1 -expect bans == 4
client c1 {
txreq -url "/beta"
@@ -127,5 +127,7 @@ client c1 {
delay 1
varnish v1 -cliok "ban.list"
-varnish v1 -expect n_ban == 1
-varnish v1 -expect n_ban_gone == 0
+varnish v1 -expect bans == 1
+varnish v1 -expect bans_gone == 0
+varnish v1 -expect bans_added == 7
+varnish v1 -expect bans_deleted == 6
diff --git a/bin/varnishtest/tests/p00002.vtc b/bin/varnishtest/tests/p00002.vtc
index cef8f36..e3ea052 100644
--- a/bin/varnishtest/tests/p00002.vtc
+++ b/bin/varnishtest/tests/p00002.vtc
@@ -36,4 +36,4 @@ varnish v1 -start
varnish v1 -cliok ban.list
# Count of 3 here, because two "magic" bans are also there"
-varnish v1 -expect n_ban == 3
+varnish v1 -expect bans == 3
diff --git a/bin/varnishtest/tests/r00917.vtc b/bin/varnishtest/tests/r00917.vtc
index 6591079..9791034 100644
--- a/bin/varnishtest/tests/r00917.vtc
+++ b/bin/varnishtest/tests/r00917.vtc
@@ -21,4 +21,4 @@ foo
varnish v1 -cliok ban.list
-varnish v1 -expect n_ban_add == 2
+varnish v1 -expect bans_added == 2
diff --git a/bin/varnishtest/tests/r01030.vtc b/bin/varnishtest/tests/r01030.vtc
index 97ef3d7..8351d81 100644
--- a/bin/varnishtest/tests/r01030.vtc
+++ b/bin/varnishtest/tests/r01030.vtc
@@ -26,7 +26,7 @@ varnish v1 -vcl+backend {
} -start
varnish v1 -cliok "param.set ban_lurker_sleep 0.01"
-varnish v1 -expect n_ban_obj_test == 0
+varnish v1 -expect bans_tests_tested == 0
delay 0.01
client c1 {
@@ -40,10 +40,10 @@ client c1 {
} -run
delay 0.1
-varnish v1 -expect n_ban_obj_test == 0
+varnish v1 -expect bans_tests_tested == 0
delay 1.0
-varnish v1 -expect n_ban_obj_test == 1
+varnish v1 -expect bans_tests_tested == 1
varnish v1 -cliok "param.set ban_lurker_sleep 5.01"
@@ -58,7 +58,7 @@ client c2 {
} -run
delay 0.1
-varnish v1 -expect n_ban_obj_test == 1
+varnish v1 -expect bans_tests_tested == 1
delay 1.1
-varnish v1 -expect n_ban_obj_test == 2
+varnish v1 -expect bans_tests_tested == 2
diff --git a/include/tbl/vsc_fields.h b/include/tbl/vsc_fields.h
index abc5d18..738703c 100644
--- a/include/tbl/vsc_fields.h
+++ b/include/tbl/vsc_fields.h
@@ -41,6 +41,10 @@
* e - Explantion: Short explanation of field (for screen use)
* d - Description: Long explanation of field (for doc use)
*
+ * Please describe Gauge variables as "Number of..." to indicate that
+ * this is a snapshot, and Counter variables as "Count of" to indicate
+ * accumulative count.
+ *
* -----------------------
* NB: Cleanup in progress
* -----------------------
@@ -297,13 +301,49 @@ VSC_F(n_vcl, uint64_t, 0, 'a', "N vcl total", "")
VSC_F(n_vcl_avail, uint64_t, 0, 'a', "N vcl available", "")
VSC_F(n_vcl_discard, uint64_t, 0, 'a', "N vcl discarded", "")
-VSC_F(n_ban, uint64_t, 0, 'i', "N total active bans", "")
-VSC_F(n_ban_gone, uint64_t, 0, 'i', "N total gone bans", "")
-VSC_F(n_ban_add, uint64_t, 0, 'a', "N new bans added", "")
-VSC_F(n_ban_retire, uint64_t, 0, 'a', "N old bans deleted", "")
-VSC_F(n_ban_obj_test, uint64_t, 0, 'a', "N objects tested", "")
-VSC_F(n_ban_re_test, uint64_t, 0, 'a', "N regexps tested against", "")
-VSC_F(n_ban_dups, uint64_t, 0, 'a', "N duplicate bans removed", "")
+/**********************************************************************/
+
+VSC_F(bans, uint64_t, 0, 'g',
+ "Count of bans",
+ "Number of all bans in system, including bans superseded"
+ " by newer bans and bans already checked by the ban-lurker."
+)
+VSC_F(bans_gone, uint64_t, 0, 'g',
+ "Number of bans marked 'gone'",
+ "Number of bans which are no longer active, either because they"
+ " got checked by the ban-lurker or superseded by newer identical bans."
+)
+VSC_F(bans_req, uint64_t, 0, 'g',
+ "Number of bans using req.*",
+ "Number of bans which use req.* variables. These bans can not"
+ " be washed by the ban-lurker."
+)
+VSC_F(bans_added, uint64_t, 0, 'c',
+ "Bans added",
+ "Counter of bans added to ban list."
+)
+VSC_F(bans_deleted, uint64_t, 0, 'c',
+ "Bans deleted",
+ "Counter of bans deleted from ban list."
+)
+
+VSC_F(bans_tested, uint64_t, 0, 'c',
+ "Bans tested against objects",
+ "Count of how many bans and objects have been tested against"
+ " each other."
+)
+VSC_F(bans_tests_tested, uint64_t, 0, 'c',
+ "Ban tests tested against objects",
+ "Count of how many tests and objects have been tested against"
+ " each other. 'ban req.url == foo && req.http.host == bar'"
+ " counts as one in 'bans_tested' and as two in 'bans_tests_tested'"
+)
+VSC_F(bans_dups, uint64_t, 0, 'c',
+ "Bans superseded by other bans",
+ "Count of bans replaced by later identical bans."
+)
+
+/**********************************************************************/
VSC_F(hcb_nolock, uint64_t, 0, 'a', "HCB Lookups without lock", "")
VSC_F(hcb_lock, uint64_t, 0, 'a', "HCB Lookups with lock", "")
More information about the varnish-commit
mailing list