Commit 4610ad8a authored by Geoff Simmons's avatar Geoff Simmons

Add VSC stats for the key vector lengths of PH secondary hashes.

Fix rounding for h2strings_avg while we're here.
parent 92cf55a8
......@@ -58,7 +58,7 @@
.. varnish_vsc:: hash_keylen
:type: gauge
:level: debug
:oneliner: Hash key vector length
:oneliner: Primary hash key vector length
Length of the hash key vectors, in blocks of 8 bytes
......@@ -106,6 +106,28 @@
Average number of strings in a secondary hash table, rounded
to the nearest integer
.. varnish_vsc:: hash_h2_klen_min
:type: gauge
:level: debug
:oneliner: Minimum secondary hash key vector length
Minimum key vector length for a secondary hash
.. varnish_vsc:: hash_h2_klen_max
:type: gauge
:level: debug
:oneliner: Maximum secondary hash key vector length
Maximum key vector length for a secondary hash
.. varnish_vsc:: hash_h2_klen_avg
:type: gauge
:level: debug
:oneliner: Average secondary hash strings
Average key vector length for secondary hashes, rounded to the
nearest integer
.. varnish_vsc:: trie_nodes
:type: gauge
:level: debug
......
......@@ -41,6 +41,9 @@ varnish v1 -expect SELECTOR.vcl1.s.hash_h2_buckets_avg >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_max >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_avg >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_max >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_avg >= 0
varnish v1 -vcl {
import ${vmod_selector};
......@@ -95,6 +98,9 @@ varnish v1 -expect SELECTOR.vcl2.p.hash_h2_buckets_avg >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_strings_min >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_strings_max >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_strings_avg >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_klen_min >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_klen_max >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_klen_avg >= 0
varnish v1 -expect SELECTOR.vcl2.e.elements == 0
varnish v1 -expect SELECTOR.vcl2.e.setsz == 0
......@@ -118,6 +124,9 @@ varnish v1 -expect SELECTOR.vcl2.e.hash_h2_buckets_avg == 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_strings_min >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_strings_max >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_strings_avg >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_klen_min >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_klen_max >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_klen_avg >= 0
# When vcl1 is set to cold, stats for vcl2.p but not vcl1.s appear.
varnish v1 -cliok "vcl.state vcl1 cold"
......@@ -148,6 +157,9 @@ varnish v1 -expect SELECTOR.vcl1.s.hash_h2_buckets_avg >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_max >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_avg >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_max >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_klen_avg >= 0
# The same 100 words from /usr/share/dict/words as in match.vtc
varnish v1 -vcl {
......@@ -283,6 +295,9 @@ varnish v1 -expect SELECTOR.vcl3.words.hash_h2_buckets_avg >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_strings_min >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_strings_max >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_strings_avg >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_klen_min >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_klen_max >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_klen_avg >= 0
varnish v1 -cliok "vcl.state vcl1 cold"
varnish v1 -cli "vcl.discard vcl1"
......
......@@ -915,6 +915,9 @@ vmod_set_create_stats(VRT_CTX, struct vmod_selector_set *set,
assert(ph_stats.h2strings_min <= ph_stats.h2strings_max);
assert(ph_stats.h2strings_min <= ph_stats.h2strings_avg);
assert(ph_stats.h2strings_avg <= ph_stats.h2strings_max);
assert(ph_stats.h2klen_min <= ph_stats.h2klen_max);
assert(ph_stats.h2klen_min <= ph_stats.h2klen_avg);
assert(ph_stats.h2klen_avg <= ph_stats.h2klen_max);
}
vsc = VSC_selector_New(NULL, &vsc_seg, "%s.%s", VCL_Name(ctx->vcl),
......@@ -943,7 +946,10 @@ vmod_set_create_stats(VRT_CTX, struct vmod_selector_set *set,
vsc->hash_h2_buckets_avg = (uint64_t)(ph_stats.h2buckets_avg + 0.5);
vsc->hash_h2_strings_min = ph_stats.h2strings_min;
vsc->hash_h2_strings_max = ph_stats.h2strings_max;
vsc->hash_h2_strings_avg = ph_stats.h2strings_avg;
vsc->hash_h2_strings_avg = (uint64_t)(ph_stats.h2strings_avg + 0.5);
vsc->hash_h2_klen_min = ph_stats.h2klen_min;
vsc->hash_h2_klen_max = ph_stats.h2klen_max;
vsc->hash_h2_klen_avg = (uint64_t)(ph_stats.h2klen_avg + 0.5);
ALLOC_OBJ(vsc_entry, VMOD_SELECTOR_VSC_MAGIC);
AN(vsc_entry);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment