diff --git a/src/ParallelTestRunner.jl b/src/ParallelTestRunner.jl index fc13cc0..8d1ed7b 100644 --- a/src/ParallelTestRunner.jl +++ b/src/ParallelTestRunner.jl @@ -49,7 +49,7 @@ function get_max_worker_rss() mb = if haskey(ENV, "JULIA_TEST_MAXRSS_MB") parse(Int, ENV["JULIA_TEST_MAXRSS_MB"]) elseif Sys.WORD_SIZE == 64 - Sys.total_memory() > 8*2^30 ? 3800 : 3000 + Sys.total_memory() > 8*Int64(2)^30 ? 3800 : 3000 else # Assume that we only have 3.5GB available to a single process, and that a single # test can take up to 2GB of RSS. This means that we should instruct the test @@ -389,7 +389,7 @@ Determine default number of parallel jobs. """ function default_njobs(; cpu_threads = Sys.CPU_THREADS, free_memory = available_memory()) jobs = cpu_threads - memory_jobs = Int64(free_memory) ÷ (2 * 2^30) + memory_jobs = Int64(free_memory) ÷ (2 * Int64(2)^30) return max(1, min(jobs, memory_jobs)) end diff --git a/test/runtests.jl b/test/runtests.jl index 040db00..213075a 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -24,6 +24,15 @@ cd(@__DIR__) @test isfile(ParallelTestRunner.get_history_file(ParallelTestRunner)) end +@testset "default njobs" begin + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 28) == 1 + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 30) == 1 + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 31) == 1 + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 32) == 2 + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 33) == 4 + @test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 34) == 4 +end + @testset "subdir use" begin d = @__DIR__ testsuite = find_tests(d)