From: Sage Weil Date: Tue, 2 Dec 2014 18:12:25 +0000 (-0800) Subject: crush/CrushTester: add new --show-mappings option X-Git-Tag: v0.80.9~11^2~17 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e4939ed5535cc4678cf1d1ae80906290448e6590;p=ceph.git crush/CrushTester: add new --show-mappings option This makes --show-utilization and --show-statistics usable. Signed-off-by: Sage Weil (cherry picked from commit 3877f00877f53e9f86630c2d89e81ab9cff729ec) --- diff --git a/src/crush/CrushTester.cc b/src/crush/CrushTester.cc index c86e0ef1b8f4..3b45e53a6fe9 100644 --- a/src/crush/CrushTester.cc +++ b/src/crush/CrushTester.cc @@ -487,18 +487,18 @@ int CrushTester::test() vector out; if (use_crush) { - if (output_statistics) - err << "CRUSH"; // prepend CRUSH to placement output + if (output_mappings) + err << "CRUSH"; // prepend CRUSH to placement output crush.do_rule(r, x, out, nr, weight); } else { - if (output_statistics) - err << "RNG"; // prepend RNG to placement output to denote simulation + if (output_mappings) + err << "RNG"; // prepend RNG to placement output to denote simulation // test our new monte carlo placement generator random_placement(r, out, nr, weight); } - if (output_statistics) - err << " rule " << r << " x " << x << " " << out << std::endl; + if (output_mappings) + err << " rule " << r << " x " << x << " " << out << std::endl; if (output_data_file) write_integer_indexed_vector_data_string(tester_data.placement_information, x, out); diff --git a/src/crush/CrushTester.h b/src/crush/CrushTester.h index df5a15788989..8de70f9d41d1 100644 --- a/src/crush/CrushTester.h +++ b/src/crush/CrushTester.h @@ -27,6 +27,7 @@ class CrushTester { bool output_utilization; bool output_utilization_all; bool output_statistics; + bool output_mappings; bool output_bad_mappings; bool output_choose_tries; @@ -176,6 +177,7 @@ public: output_utilization(false), output_utilization_all(false), output_statistics(false), + output_mappings(false), output_bad_mappings(false), output_choose_tries(false), output_data_file(false), @@ -226,6 +228,13 @@ public: return output_statistics; } + void set_output_mappings(bool b) { + output_mappings = b; + } + bool get_output_mappings() const { + return output_mappings; + } + void set_output_bad_mappings(bool b) { output_bad_mappings = b; } diff --git a/src/test/cli/crushtool/help.t b/src/test/cli/crushtool/help.t index 3b489301c48d..a9c6222fd716 100644 --- a/src/test/cli/crushtool/help.t +++ b/src/test/cli/crushtool/help.t @@ -33,6 +33,7 @@ --show utilization-all include zero weight items --show-statistics show chi squared statistics + --show-mappings show mappings --show-bad-mappings show bad mappings --show-choose-tries show choose tries histogram --set-choose-local-tries N diff --git a/src/test/cli/crushtool/set-choose.t b/src/test/cli/crushtool/set-choose.t index e160ad7814d5..b7ef59af2bdc 100644 --- a/src/test/cli/crushtool/set-choose.t +++ b/src/test/cli/crushtool/set-choose.t @@ -1,5 +1,5 @@ $ crushtool -c "$TESTDIR/set-choose.crushmap.txt" -o set-choose.crushmap - $ crushtool -i set-choose.crushmap --test --show-statistics + $ crushtool -i set-choose.crushmap --test --show-mappings --show-statistics rule 0 (choose), x = 0..1023, numrep = 2..3 CRUSH rule 0 x 0 [0,3] CRUSH rule 0 x 1 [0,8] @@ -12306,7 +12306,7 @@ CRUSH rule 5 x 1022 [1,6,4] CRUSH rule 5 x 1023 [3,2,8] rule 5 (chooseleaf-set) num_rep 3 result size == 3:\t1024/1024 (esc) - $ crushtool -i set-choose.crushmap --test --show-statistics --weight 0 0 --weight 1 0 --weight 3 0 --weight 4 0 + $ crushtool -i set-choose.crushmap --test --show-mappings --show-statistics --weight 0 0 --weight 1 0 --weight 3 0 --weight 4 0 rule 0 (choose), x = 0..1023, numrep = 2..3 CRUSH rule 0 x 0 [2,5] CRUSH rule 0 x 1 [2,8] @@ -24618,7 +24618,7 @@ CRUSH rule 5 x 1022 [2,6,5] CRUSH rule 5 x 1023 [5,2,8] rule 5 (chooseleaf-set) num_rep 3 result size == 3:\t1024/1024 (esc) - $ crushtool -i set-choose.crushmap --test --show-statistics --weight 0 0 --weight 3 0 --weight 4 .5 --weight 5 0 --weight 6 .1 --weight 7 0 + $ crushtool -i set-choose.crushmap --test --show-mappings --show-statistics --weight 0 0 --weight 3 0 --weight 4 .5 --weight 5 0 --weight 6 .1 --weight 7 0 rule 0 (choose), x = 0..1023, numrep = 2..3 CRUSH rule 0 x 0 [2,4] CRUSH rule 0 x 1 [2,8] diff --git a/src/test/cli/crushtool/test-map-bobtail-tunables.t b/src/test/cli/crushtool/test-map-bobtail-tunables.t index 7c38260fec35..77f2ce86243e 100644 --- a/src/test/cli/crushtool/test-map-bobtail-tunables.t +++ b/src/test/cli/crushtool/test-map-bobtail-tunables.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-a.crushmap" --test --show-statistics --rule 0 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 1 + $ crushtool -i "$TESTDIR/test-map-a.crushmap" --test --show-mappings --show-statistics --rule 0 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 1 crushtool successfully built or modified map. Use '-o ' to write it out. rule 0 (data), x = 0..1023, numrep = 1..10 CRUSH rule 0 x 0 [36] diff --git a/src/test/cli/crushtool/test-map-firefly-tunables.t b/src/test/cli/crushtool/test-map-firefly-tunables.t index 481b6fd5785c..a75e89fb1c59 100644 --- a/src/test/cli/crushtool/test-map-firefly-tunables.t +++ b/src/test/cli/crushtool/test-map-firefly-tunables.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 0 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 1 --set-chooseleaf-vary-r 1 --weight 12 0 --weight 20 0 --weight 30 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 0 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 1 --set-chooseleaf-vary-r 1 --weight 12 0 --weight 20 0 --weight 30 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 0 (data), x = 0..1023, numrep = 1..10 CRUSH rule 0 x 0 [101] diff --git a/src/test/cli/crushtool/test-map-indep.t b/src/test/cli/crushtool/test-map-indep.t index 5f6dbb348b79..f4ee371696a3 100644 --- a/src/test/cli/crushtool/test-map-indep.t +++ b/src/test/cli/crushtool/test-map-indep.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-indep.crushmap" --test --show-statistics --rule 1 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 2 + $ crushtool -i "$TESTDIR/test-map-indep.crushmap" --test --show-mappings --show-statistics --rule 1 --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 --set-chooseleaf-descend-once 2 crushtool successfully built or modified map. Use '-o ' to write it out. rule 1 (metadata), x = 0..1023, numrep = 1..10 CRUSH rule 1 x 0 [36] diff --git a/src/test/cli/crushtool/test-map-legacy-tunables.t b/src/test/cli/crushtool/test-map-legacy-tunables.t index 12bf604aff3f..fe28c70ea5ce 100644 --- a/src/test/cli/crushtool/test-map-legacy-tunables.t +++ b/src/test/cli/crushtool/test-map-legacy-tunables.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-a.crushmap" --test --show-statistics --rule 0 + $ crushtool -i "$TESTDIR/test-map-a.crushmap" --test --show-mappings --show-statistics --rule 0 rule 0 (data), x = 0..1023, numrep = 1..10 CRUSH rule 0 x 0 [36] CRUSH rule 0 x 1 [876] diff --git a/src/test/cli/crushtool/test-map-tries-vs-retries.t b/src/test/cli/crushtool/test-map-tries-vs-retries.t index 8eac25563a91..2a49838d6f06 100644 --- a/src/test/cli/crushtool/test-map-tries-vs-retries.t +++ b/src/test/cli/crushtool/test-map-tries-vs-retries.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-tries-vs-retries.crushmap" --test --show-statistics --weight 0 0 --weight 8 0 + $ crushtool -i "$TESTDIR/test-map-tries-vs-retries.crushmap" --test --show-mappings --show-statistics --weight 0 0 --weight 8 0 rule 0 (replicated_ruleset), x = 0..1023, numrep = 1..10 CRUSH rule 0 x 0 [7] CRUSH rule 0 x 1 [10] diff --git a/src/test/cli/crushtool/test-map-vary-r-0.t b/src/test/cli/crushtool/test-map-vary-r-0.t index 663ef650f839..eefd862ddb91 100644 --- a/src/test/cli/crushtool/test-map-vary-r-0.t +++ b/src/test/cli/crushtool/test-map-vary-r-0.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 3 --set-chooseleaf-vary-r 0 --weight 0 0 --weight 4 0 --weight 9 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 3 --set-chooseleaf-vary-r 0 --weight 0 0 --weight 4 0 --weight 9 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 3 (delltestrule), x = 0..1023, numrep = 2..4 CRUSH rule 3 x 0 [94,85] diff --git a/src/test/cli/crushtool/test-map-vary-r-1.t b/src/test/cli/crushtool/test-map-vary-r-1.t index 4ac4c2229203..a21b9d5f43d5 100644 --- a/src/test/cli/crushtool/test-map-vary-r-1.t +++ b/src/test/cli/crushtool/test-map-vary-r-1.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 3 --set-chooseleaf-vary-r 1 --weight 0 0 --weight 4 0 --weight 9 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 3 --set-chooseleaf-vary-r 1 --weight 0 0 --weight 4 0 --weight 9 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 3 (delltestrule), x = 0..1023, numrep = 2..4 CRUSH rule 3 x 0 [94,6] diff --git a/src/test/cli/crushtool/test-map-vary-r-2.t b/src/test/cli/crushtool/test-map-vary-r-2.t index c9e78c68908b..eaf0542916dd 100644 --- a/src/test/cli/crushtool/test-map-vary-r-2.t +++ b/src/test/cli/crushtool/test-map-vary-r-2.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 3 --set-chooseleaf-vary-r 2 --weight 0 0 --weight 4 0 --weight 9 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 3 --set-chooseleaf-vary-r 2 --weight 0 0 --weight 4 0 --weight 9 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 3 (delltestrule), x = 0..1023, numrep = 2..4 CRUSH rule 3 x 0 [94,45] diff --git a/src/test/cli/crushtool/test-map-vary-r-3.t b/src/test/cli/crushtool/test-map-vary-r-3.t index ad02e7373ffe..31943b2fff16 100644 --- a/src/test/cli/crushtool/test-map-vary-r-3.t +++ b/src/test/cli/crushtool/test-map-vary-r-3.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 3 --set-chooseleaf-vary-r 3 --weight 0 0 --weight 4 0 --weight 9 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 3 --set-chooseleaf-vary-r 3 --weight 0 0 --weight 4 0 --weight 9 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 3 (delltestrule), x = 0..1023, numrep = 2..4 CRUSH rule 3 x 0 [94,85] diff --git a/src/test/cli/crushtool/test-map-vary-r-4.t b/src/test/cli/crushtool/test-map-vary-r-4.t index 059da7712810..24cf0ba28921 100644 --- a/src/test/cli/crushtool/test-map-vary-r-4.t +++ b/src/test/cli/crushtool/test-map-vary-r-4.t @@ -1,4 +1,4 @@ - $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-statistics --rule 3 --set-chooseleaf-vary-r 4 --weight 0 0 --weight 4 0 --weight 9 0 + $ crushtool -i "$TESTDIR/test-map-vary-r.crushmap" --test --show-mappings --show-statistics --rule 3 --set-chooseleaf-vary-r 4 --weight 0 0 --weight 4 0 --weight 9 0 crushtool successfully built or modified map. Use '-o ' to write it out. rule 3 (delltestrule), x = 0..1023, numrep = 2..4 CRUSH rule 3 x 0 [94,85] diff --git a/src/tools/crushtool.cc b/src/tools/crushtool.cc index 8dcd79c38736..66ca6e3075df 100644 --- a/src/tools/crushtool.cc +++ b/src/tools/crushtool.cc @@ -118,6 +118,7 @@ void usage() cout << " --show utilization-all\n"; cout << " include zero weight items\n"; cout << " --show-statistics show chi squared statistics\n"; + cout << " --show-mappings show mappings\n"; cout << " --show-bad-mappings show bad mappings\n"; cout << " --show-choose-tries show choose tries histogram\n"; cout << " --set-choose-local-tries N\n"; @@ -233,6 +234,9 @@ int main(int argc, const char **argv) } else if (ceph_argparse_flag(args, i, "--show_statistics", (char*)NULL)) { display = true; tester.set_output_statistics(true); + } else if (ceph_argparse_flag(args, i, "--show_mappings", (char*)NULL)) { + display = true; + tester.set_output_mappings(true); } else if (ceph_argparse_flag(args, i, "--show_bad_mappings", (char*)NULL)) { display = true; tester.set_output_bad_mappings(true);