Commit 6d3b5d57 authored by Ömer Sinan Ağacan's avatar Ömer Sinan Ağacan Committed by Marge Bot

testlib: Extend existing *_opts in extra_*_opts

Previously we'd override the existing {run,hc} opts in
extra_{run,hc}_opts, which caused flakiness in T1969, see #17712.

extra_{run,hc}_opts now extends {run,hc} opts, instead of overriding.

Also we shrank the allocation area for T1969 in order to increase
residency sampling frequency.

Fixes #17712
parent c90eca55
Pipeline #15387 failed with stages
in 445 minutes and 28 seconds
......@@ -393,7 +393,7 @@ def extra_run_opts( val ):
return lambda name, opts, v=val: _extra_run_opts(name, opts, v);
def _extra_run_opts( name, opts, v ):
opts.extra_run_opts = v
opts.extra_run_opts += " " + v
# -----
......@@ -401,7 +401,7 @@ def extra_hc_opts( val ):
return lambda name, opts, v=val: _extra_hc_opts(name, opts, v);
def _extra_hc_opts( name, opts, v ):
opts.extra_hc_opts = v
opts.extra_hc_opts += " " + v
# -----
......@@ -567,13 +567,15 @@ def llvm_build ( ) -> bool:
# appears to change (up or down) when the underlying profile hasn't
# really changed. To further minimize this effect we run with a single
# generation (meaning we get a residency sample on every GC) with a small
# allocation area (as suggested in #17387).
# allocation area (as suggested in #17387). That's what +RTS -h -i0 will do.
# If you find that a test is flaky, sampling frequency can be adjusted by
# shrinking the allocation area (+RTS -A64k, for example).
#
# However, please don't just ignore changes in residency. If you see
# a change in one of these figures, please check whether it is real or
# not as follows:
#
# * Run the test with old and new compilers, adding +RTS -h -i0.01
# * Run the test with old and new compilers, adding +RTS -h -i0.001
# (you don't need to compile anything for profiling or enable profiling
# libraries to get a heap profile).
# * view the heap profiles, read off the maximum residency. If it has
......
......@@ -9,9 +9,10 @@ setTestOpts(no_lint)
test('T1969',
[# expect_broken(12437),
# we collect residency for reference only, hence the large acceptance window.
# We have seen >20% variations in this number.
collect_compiler_residency(50),
collect_compiler_residency(20),
extra_run_opts('+RTS -A64k -RTS'),
# The default RESIDENCY_OPTS is 256k and we need higher sampling
# frequency. Incurs a slow-down by about 2.
collect_compiler_stats('bytes allocated', 1),
only_ways(['normal']),
......
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