Assorted fixes found while restarting the Jenkins CI#11037
Assorted fixes found while restarting the Jenkins CI#11037xavierleroy merged 12 commits intoocaml:trunkfrom
Conversation
|
Reg GCC < 4.9 not being supported, this comment ocaml/runtime/caml/camlatomic.h Lines 50 to 51 in 524a567 refers to GCC 4.8. Should this support also be removed? |
|
We probably need at some point a collection of time-consuming tests that are run with a reduced and controlled frequency. |
The motivation for the parallel There is a history of controversy for these tests - usually around time waiting for results and the fact they don't adapt to the machine they run on. However I think that we need to torture some machine(s) somewhere as part of the CI process (preferably within the PR process). The tests are crude and better ways to torture test a smaller number of machines may exist. I agree with the scale down to run on 32bit hardware because of the 16 domain limit. In c9e846c the number of iterations and allocation sizes are changed, is there a strong motivation for those changes? My concern is that we are sweeping bugs under the carpet (and weakening the test protection against future bugs). I feel that these test running longer than 10mins (with current parameters) is surfacing a bug (e.g. #10875 (comment)) that warrants investigation (although that investigation might not lie in the scope of this PR). |
|
Don't panic: I'm looking at ways to run the parallel tests with more demanding parameters on selected machines. Most Jenkins CI machines have only two cores and 2 Gb of RAM, so the big tests cause timeouts, especially when run in bytecode mode. A test that times out is useless. |
|
So, here is my proposal: the tests can get an idea of how many cores and how much memory they can use by looking up the
|
|
By the way, here is the current status of Jenkins CI:
|
What version of OpenBSD/amd64 is installed? The default |
|
I should have written "the OpenBSD virtual machine we have in our CI", which is quite old (OpenBSD 6.7...). We can try a fresh install of OpenBSD 7.0 some time in the future. |
|
Updating the table of results now that ARM64 native-code generation is back:
|
…ctures (This is a temporary workaround until ocaml#10971 is resolved.) On 32-bit architectures, the minor heap reservation has to fit a 32-bit address space. On some 64-bit systems (e.g. OpenBSD, Omnios), there is no over-commit, so the reservation has to fit the RAM + swap space. Take Minor_heap_max to be 1 Mwords (4 times Minor_heap_def) and limit domains to 16 on 32-bit architectures, instead of 128 on 64-bit architectures.
Because of output-complete-obj, PACKLD_FLAGS must be correctly set even for a bytecode-only build, where `$arch = none`. This affects only the 3 Power ports.
…etter - Don't do "make alldepend" if native-code compiler is unsupported - No need to test flambda in bytecode-only builds
We're getting timeouts on some CI machines, and on 32-bit architectures only 16 domains are available. - Reduce number of domains used by join.ml and domain_parallel_spawn_burn.ml. - Reduce data size and duration for domain_parallel_spawn_burn.ml and domain_serial_spawn_burn.ml.
The C side was not flushing explicitly, causing different interleavings with Glibc and with Musl.
So that they can run longer and use more cores on selected CI machines.
30e1669 to
7552691
Compare
|
Hi @ctk21 and @xavierleroy; I'm looking at domain_parallel_spawn_burn.ml and I have two naive questions:
|
|
(I think there is a misunderstand and you are talking about the The code is currently as follows: ocaml/testsuite/tests/parallel/domain_parallel_spawn_burn.ml Lines 25 to 46 in 04ddddd If I understand it, the idea is to run Gc.major and Gc.minor in an infinite loop, while other domains are doing a fixed amount of work, and then we stop the Gc.major and Gc.minor domains when the work is done. So we do need |
|
Oh sorry about the context mixup, |
This PR is best reviewed commit by commit. Here is a summary:
Runtime system
configure tweaks
and Mingw-32ports as not supported currently. (This way, the Jenkins Web interface can show them as "unstable" in tasteful yellow rather than as "failed" in stress-inducing red.) (Edit: Mingw-32 almost works, in bytecode-only mode, so let's keep it supported for the moment.)Jenkins scripts
Fixing the test suite