[PATCH] Decrease number of threads used by goroutines.go test (take 3)
Jakub Jelinek
jakub@redhat.com
Tue Mar 8 19:14:00 GMT 2011
On Tue, Mar 08, 2011 at 08:10:31PM +0100, Rainer Orth wrote:
> Jakub Jelinek <jakub@redhat.com> writes:
>
> > I'm happy to drop the [ ishost "*-linux*" ] && if you are going to look for
> > failures on weirdo OSes. I have no idea what ulimit -u does on anything but
> > Linux, while the tcl code only uses its value if it printed a number,
> > whether it is something similar to limit on number of each user's threads
> > or something completely else is unclear.
>
> In both bash and every non-bash shell I have that implements it at all,
> ulimit -u does exactly the same as on Linux.
Ok then:
2011-03-08 Jakub Jelinek <jakub@redhat.com>
* go.test/go-test.exp: For goroutines.go test if GCCGO_RUN_ALL_TESTS
is not set in the environment, pass 64 as first argument when not
running expensive tests or pass max($[`ulimit -u`/4], 10000) on
native where ulimit -u is supported.
--- gcc/testsuite/go.test/go-test.exp.jj 2011-01-15 11:26:32.000000000 +0100
+++ gcc/testsuite/go.test/go-test.exp 2011-03-08 13:23:36.078402148 +0100
@@ -265,6 +265,27 @@ proc go-gc-tests { } {
verbose -log "$test: go_execute_args is $go_execute_args"
set index [string last " $progargs" $test_line]
set test_line [string replace $test_line $index end]
+ } elseif { [string match "*go.test/test/chan/goroutines.go" $test] \
+ && [getenv GCCGO_RUN_ALL_TESTS] == "" } {
+ # goroutines.go spawns by default 10000 threads, which is too much
+ # for many OSes.
+ if { [getenv GCC_TEST_RUN_EXPENSIVE] == "" } {
+ set go_execute_args 64
+ } elseif { ![is_remote host] && ![is_remote target] } {
+ # When using low ulimit -u limit, use maximum of
+ # a quarter of that limit and 10000 even when running expensive
+ # tests, otherwise parallel tests might fail after fork failures.
+ set nproc [lindex [remote_exec host {sh -c ulimit\ -u}] 1]
+ if { [string is integer -strict $nproc] } {
+ set nproc [expr $nproc / 4]
+ if { $nproc > 10000 } { set nproc 10000 }
+ if { $nproc < 16 } { set nproc 16 }
+ set go_execute_args $nproc
+ }
+ }
+ if { "$go_execute_args" != "" } {
+ verbose -log "$test: go_execute_args is $go_execute_args"
+ }
}
if { $test_line == "// \$G \$D/\$F\.go && \$L \$F\.\$A && \./\$A\.out >tmp.go &&" \
Jakub
More information about the Gcc-patches
mailing list