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 @@ ...@@ -58,7 +58,7 @@
.. varnish_vsc:: hash_keylen .. varnish_vsc:: hash_keylen
:type: gauge :type: gauge
:level: debug :level: debug
:oneliner: Hash key vector length :oneliner: Primary hash key vector length
Length of the hash key vectors, in blocks of 8 bytes Length of the hash key vectors, in blocks of 8 bytes
...@@ -106,6 +106,28 @@ ...@@ -106,6 +106,28 @@
Average number of strings in a secondary hash table, rounded Average number of strings in a secondary hash table, rounded
to the nearest integer 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 .. varnish_vsc:: trie_nodes
:type: gauge :type: gauge
:level: debug :level: debug
......
...@@ -41,6 +41,9 @@ varnish v1 -expect SELECTOR.vcl1.s.hash_h2_buckets_avg >= 0 ...@@ -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_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_max >= 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_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 { varnish v1 -vcl {
import ${vmod_selector}; import ${vmod_selector};
...@@ -95,6 +98,9 @@ varnish v1 -expect SELECTOR.vcl2.p.hash_h2_buckets_avg >= 0 ...@@ -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_min >= 0
varnish v1 -expect SELECTOR.vcl2.p.hash_h2_strings_max >= 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_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.elements == 0
varnish v1 -expect SELECTOR.vcl2.e.setsz == 0 varnish v1 -expect SELECTOR.vcl2.e.setsz == 0
...@@ -118,6 +124,9 @@ varnish v1 -expect SELECTOR.vcl2.e.hash_h2_buckets_avg == 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_min >= 0
varnish v1 -expect SELECTOR.vcl2.e.hash_h2_strings_max >= 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_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. # When vcl1 is set to cold, stats for vcl2.p but not vcl1.s appear.
varnish v1 -cliok "vcl.state vcl1 cold" varnish v1 -cliok "vcl.state vcl1 cold"
...@@ -148,6 +157,9 @@ varnish v1 -expect SELECTOR.vcl1.s.hash_h2_buckets_avg >= 0 ...@@ -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_min >= 0
varnish v1 -expect SELECTOR.vcl1.s.hash_h2_strings_max >= 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_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 # The same 100 words from /usr/share/dict/words as in match.vtc
varnish v1 -vcl { varnish v1 -vcl {
...@@ -283,6 +295,9 @@ varnish v1 -expect SELECTOR.vcl3.words.hash_h2_buckets_avg >= 0 ...@@ -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_min >= 0
varnish v1 -expect SELECTOR.vcl3.words.hash_h2_strings_max >= 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_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 -cliok "vcl.state vcl1 cold"
varnish v1 -cli "vcl.discard vcl1" varnish v1 -cli "vcl.discard vcl1"
......
...@@ -915,6 +915,9 @@ vmod_set_create_stats(VRT_CTX, struct vmod_selector_set *set, ...@@ -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_max);
assert(ph_stats.h2strings_min <= ph_stats.h2strings_avg); assert(ph_stats.h2strings_min <= ph_stats.h2strings_avg);
assert(ph_stats.h2strings_avg <= ph_stats.h2strings_max); 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), 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, ...@@ -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_buckets_avg = (uint64_t)(ph_stats.h2buckets_avg + 0.5);
vsc->hash_h2_strings_min = ph_stats.h2strings_min; vsc->hash_h2_strings_min = ph_stats.h2strings_min;
vsc->hash_h2_strings_max = ph_stats.h2strings_max; 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); ALLOC_OBJ(vsc_entry, VMOD_SELECTOR_VSC_MAGIC);
AN(vsc_entry); 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