Skip to content

Commit b9cb0d5

Browse files
Included extra pipeline 10 and lrange with longs benchmarks
1 parent 5c78099 commit b9cb0d5

8 files changed

+199
-43
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "redis-benchmarks-specification"
3-
version = "0.1.226"
3+
version = "0.1.228"
44
description = "The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute."
55
authors = ["filipecosta90 <[email protected]>","Redis Performance Group <[email protected]>"]
66
readme = "Readme.md"

redis_benchmarks_specification/__compare__/compare.py

Lines changed: 54 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ def compare_command_logic(args, project_name, project_version):
284284
(
285285
detected_regressions,
286286
table_output,
287-
total_improvements,
287+
improvements_list,
288288
regressions_list,
289289
total_stable,
290290
total_unstable,
@@ -332,6 +332,7 @@ def compare_command_logic(args, project_name, project_version):
332332
args.improvement_str,
333333
)
334334
total_regressions = len(regressions_list)
335+
total_improvements = len(improvements_list)
335336
prepare_regression_comment(
336337
auto_approve,
337338
baseline_branch,
@@ -359,6 +360,7 @@ def compare_command_logic(args, project_name, project_version):
359360
verbose,
360361
args.regressions_percent_lower_limit,
361362
regressions_list,
363+
improvements_list,
362364
)
363365
return (
364366
detected_regressions,
@@ -398,6 +400,7 @@ def prepare_regression_comment(
398400
verbose,
399401
regressions_percent_lower_limit,
400402
regressions_list=[],
403+
improvements_list=[],
401404
):
402405
if total_comparison_points > 0:
403406
comment_body = "### Automated performance analysis summary\n\n"
@@ -424,18 +427,27 @@ def prepare_regression_comment(
424427
comparison_summary += "- Detected a total of {} improvements above the improvement water line.\n".format(
425428
total_improvements
426429
)
430+
if len(improvements_list) > 0:
431+
regression_values = [l[1] for l in improvements_list]
432+
regression_df = pd.DataFrame(regression_values)
433+
median_regression = round(float(regression_df.median().iloc[0]), 1)
434+
max_regression = round(float(regression_df.max().iloc[0]), 1)
435+
min_regression = round(float(regression_df.min().iloc[0]), 1)
436+
437+
comparison_summary += f" - Median/Common-Case improvement was {median_regression}% and ranged from [{min_regression}%,{max_regression}%].\n"
438+
427439
if total_regressions > 0:
428440
comparison_summary += "- Detected a total of {} regressions bellow the regression water line {}.\n".format(
429441
total_regressions, regressions_percent_lower_limit
430442
)
431443
if len(regressions_list) > 0:
432444
regression_values = [l[1] for l in regressions_list]
433445
regression_df = pd.DataFrame(regression_values)
434-
median_regression = round(float(regression_df.median().iloc[0]), 2)
435-
max_regression = round(float(regression_df.max().iloc[0]), 2)
436-
min_regression = round(float(regression_df.min().iloc[0]), 2)
446+
median_regression = round(float(regression_df.median().iloc[0]), 1)
447+
max_regression = round(float(regression_df.max().iloc[0]), 1)
448+
min_regression = round(float(regression_df.min().iloc[0]), 1)
437449

438-
comparison_summary += f" - Median/Common-Case regression was {median_regression}%% and ranged from [{min_regression},{max_regression}] %%.\n"
450+
comparison_summary += f" - Median/Common-Case regression was {median_regression}% and ranged from [{min_regression}%,{max_regression}%].\n"
439451

440452
comment_body += comparison_summary
441453
comment_body += "\n"
@@ -704,8 +716,8 @@ def compute_regression_table(
704716
table_name="",
705717
headers=[
706718
"Test Case",
707-
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
708-
"Comparison {} (median obs. +- std.dev)".format(comparison_str),
719+
f"Baseline {baseline_github_org}/{baseline_github_repo} {baseline_str} (median obs. +- std.dev)",
720+
f"Comparison {comparison_github_org}/{comparison_github_repo} {comparison_str} (median obs. +- std.dev)",
709721
"% change ({})".format(metric_mode),
710722
"Note",
711723
],
@@ -727,8 +739,8 @@ def compute_regression_table(
727739
table_name="",
728740
headers=[
729741
"Test Case",
730-
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
731-
"Comparison {} (median obs. +- std.dev)".format(comparison_str),
742+
f"Baseline {baseline_github_org}/{baseline_github_repo} {baseline_str} (median obs. +- std.dev)",
743+
f"Comparison {comparison_github_org}/{comparison_github_repo} {comparison_str} (median obs. +- std.dev)",
732744
"% change ({})".format(metric_mode),
733745
"Note",
734746
],
@@ -737,7 +749,7 @@ def compute_regression_table(
737749
writer_regressions.dump(mystdout, False)
738750
table_output += mystdout.getvalue()
739751
table_output += "\n\n"
740-
test_names_str = "|".join(improvements_list)
752+
test_names_str = "|".join([l[0] for l in improvements_list])
741753
table_output += f"Improvements test regexp names: {test_names_str}\n\n"
742754
mystdout.close()
743755
sys.stdout = old_stdout
@@ -748,8 +760,8 @@ def compute_regression_table(
748760
table_name="",
749761
headers=[
750762
"Test Case",
751-
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
752-
"Comparison {} (median obs. +- std.dev)".format(comparison_str),
763+
f"Baseline {baseline_github_org}/{baseline_github_repo} {baseline_str} (median obs. +- std.dev)",
764+
f"Comparison {comparison_github_org}/{comparison_github_repo} {comparison_str} (median obs. +- std.dev)",
753765
"% change ({})".format(metric_mode),
754766
"Note",
755767
],
@@ -766,7 +778,7 @@ def compute_regression_table(
766778
return (
767779
detected_regressions,
768780
table_output,
769-
total_improvements,
781+
improvements_list,
770782
regressions_list,
771783
total_stable,
772784
total_unstable,
@@ -1098,7 +1110,12 @@ def from_rts_to_regression_table(
10981110
logging.error("Detected a ZeroDivisionError. {}".format(e.__str__()))
10991111
pass
11001112
unstable = False
1101-
if baseline_v != "N/A" and comparison_v != "N/A":
1113+
if (
1114+
baseline_v != "N/A"
1115+
and comparison_pct_change != "N/A"
1116+
and comparison_v != "N/A"
1117+
and baseline_pct_change != "N/A"
1118+
):
11021119
if comparison_pct_change > 10.0 or baseline_pct_change > 10.0:
11031120
note = "UNSTABLE (very high variance)"
11041121
unstable = True
@@ -1119,6 +1136,10 @@ def from_rts_to_regression_table(
11191136
percentage_change = (
11201137
float(baseline_v) / float(comparison_v) - 1
11211138
) * 100.0
1139+
else:
1140+
logging.warn(
1141+
f"Missing data for test {test_name}. baseline_v={baseline_v} (pct_change={baseline_pct_change}), comparison_v={comparison_v} (pct_change={comparison_pct_change}) "
1142+
)
11221143
if baseline_v != "N/A" or comparison_v != "N/A":
11231144
detected_regression = False
11241145
detected_improvement = False
@@ -1170,7 +1191,7 @@ def from_rts_to_regression_table(
11701191
table_regressions.append(line)
11711192

11721193
if detected_improvement:
1173-
improvements_list.append(test_name)
1194+
improvements_list.append([test_name, percentage_change])
11741195
table_improvements.append(line)
11751196

11761197
if unstable:
@@ -1325,23 +1346,25 @@ def get_v_pct_change_and_largest_var(
13251346
_, comparison_v = comparison_datapoints[0]
13261347
for tuple in comparison_datapoints:
13271348
if last_n < 0 or (last_n > 0 and len(comparison_values) < last_n):
1328-
comparison_values.append(tuple[1])
1329-
comparison_df = pd.DataFrame(comparison_values)
1330-
comparison_median = float(comparison_df.median().iloc[0])
1331-
comparison_v = comparison_median
1332-
comparison_std = float(comparison_df.std().iloc[0])
1333-
if verbose:
1334-
logging.info(
1335-
"comparison_datapoints: {} value: {}; std-dev: {}; median: {}".format(
1336-
comparison_datapoints,
1337-
comparison_v,
1338-
comparison_std,
1339-
comparison_median,
1349+
if tuple[1] > 0.0:
1350+
comparison_values.append(tuple[1])
1351+
if len(comparison_values) > 0:
1352+
comparison_df = pd.DataFrame(comparison_values)
1353+
comparison_median = float(comparison_df.median().iloc[0])
1354+
comparison_v = comparison_median
1355+
comparison_std = float(comparison_df.std().iloc[0])
1356+
if verbose:
1357+
logging.info(
1358+
"comparison_datapoints: {} value: {}; std-dev: {}; median: {}".format(
1359+
comparison_datapoints,
1360+
comparison_v,
1361+
comparison_std,
1362+
comparison_median,
1363+
)
13401364
)
1341-
)
1342-
comparison_pct_change = (comparison_std / comparison_median) * 100.0
1343-
if comparison_pct_change > largest_variance:
1344-
largest_variance = comparison_pct_change
1365+
comparison_pct_change = (comparison_std / comparison_median) * 100.0
1366+
if comparison_pct_change > largest_variance:
1367+
largest_variance = comparison_pct_change
13451368
return comparison_pct_change, comparison_v, largest_variance
13461369

13471370

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
version: 0.4
2+
name: memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10
3+
description: 'Runs memtier_benchmark, for a keyspace length of 1 LIST key. The LIST contains 10 elements in it and we query it using LRANGE with a range of all elements. '
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1
9+
resources:
10+
requests:
11+
memory: 1g
12+
init_commands:
13+
- '"LPUSH" "list:10" "lysbgqqfqw" "mtccjerdon" "jekkafodvk" "nmgxcctxpn" "vyqqkuszzh" "pytrnqdhvs" "oguwnmniig" "gekntrykfh" "nhfnbxqgol" "cgoeihlnei"'
14+
tested-groups:
15+
- list
16+
tested-commands:
17+
- lrange
18+
redis-topologies:
19+
- oss-standalone
20+
build-variants:
21+
- gcc:8.5.0-amd64-debian-buster-default
22+
- dockerhub
23+
clientconfig:
24+
run_image: redislabs/memtier_benchmark:edge
25+
tool: memtier_benchmark
26+
arguments: --pipeline 10 --command="LRANGE list:10 0 -1" --hide-histogram --test-time 180
27+
resources:
28+
requests:
29+
cpus: '4'
30+
memory: 2g
31+
32+
priority: 34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
version: 0.4
2+
name: memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10
3+
description: 'Runs memtier_benchmark, for a keyspace length of 1 LIST key. The LIST contains 100 elements in it and we query it using LRANGE with a range of all elements. '
4+
dbconfig:
5+
configuration-parameters:
6+
save: '""'
7+
check:
8+
keyspacelen: 1
9+
resources:
10+
requests:
11+
memory: 1g
12+
init_commands:
13+
- '"LPUSH" "list:100" "vyoomgwuzv" "xamjodnbpf" "ewomnmugfa" "ljcgdooafo" "pcxdhdjwnf" "djetcyfxuc" "licotqplim" "alqlzsvuuz" "ijsmoyesvd" "whmotknaff" "rkaznetutk" "ksqpdywgdd" "gorgpnnqwr" "gekntrykfh" "rjkknoigmu" "luemuetmia" "gxephxbdru" "ncjfckgkcl" "hhjclfbbka" "cgoeihlnei" "zwnitejtpg" "upodnpqenn" "mibvtmqxcy" "htvbwmfyic" "rqvryfvlie" "nxcdcaqgit" "gfdqdrondm" "lysbgqqfqw" "nxzsnkmxvi" "nsxaigrnje" "cwaveajmcz" "xsepfhdizi" "owtkxlzaci" "agsdggdghc" "tcjvjofxtd" "kgqrovsxce" "ouuybhtvyb" "ueyrvldzwl" "vpbkvwgxsf" "pytrnqdhvs" "qbiwbqiubb" "ssjqrsluod" "urvgxwbiiz" "ujrxcmpvsq" "mtccjerdon" "xczfmrxrja" "imyizmhzjk" "oguwnmniig" "mxwgdcutnb" "pqyurbvifk" "ccagtnjilc" "mbxohpancs" "lgrkndhekf" "eqlgkwosie" "jxoxtnzujs" "lbtpbknelm" "ichqzmiyot" "mbgehjiauu" "aovfsvbwjg" "nmgxcctxpn" "vyqqkuszzh" "rojeolnopp" "ibhohmfxzt" "qbyhorvill" "nhfnbxqgol" "wkbasfyzqz" "mjjuylgssm" "imdqxmkzdj" "oapbvnisyq" "bqntlsaqjb" "ocrcszcznp" "hhniikmtsx" "hlpdstpvzw" "wqiwdbncmt" "vymjzlzqcn" "hhjchwjlmc" "ypfeltycpy" "qjyeqcfhjj" "uapsgmizgh" "owbbdezgxn" "qrosceblyo" "sahqeskveq" "dapacykoah" "wvcnqbvlnf" "perfwnpvkl" "ulbrotlhze" "fhuvzpxjbc" "holjcdpijr" "onzjrteqmu" "pquewclxuy" "vpmpffdoqz" "eouliovvra" "vxcbagyymm" "jekkafodvk" "ypekeuutef" "dlbqcynhrn" "erxulvebrj" "qwxrsgafzy" "dlsjwmqzhx" "exvhmqxvvp"'
14+
tested-groups:
15+
- list
16+
tested-commands:
17+
- lrange
18+
redis-topologies:
19+
- oss-standalone
20+
build-variants:
21+
- gcc:8.5.0-amd64-debian-buster-default
22+
- dockerhub
23+
clientconfig:
24+
run_image: redislabs/memtier_benchmark:edge
25+
tool: memtier_benchmark
26+
arguments: --pipeline 10 --command="LRANGE list:100 0 -1" --hide-histogram --test-time 180
27+
resources:
28+
requests:
29+
cpus: '4'
30+
memory: 2g
31+
32+
priority: 34

0 commit comments

Comments
 (0)