Skip to content

Commit b43872d

Browse files
authored
Avoid overflow in default_njobs on 32-bit systems (#95)
1 parent b148d01 commit b43872d

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

src/ParallelTestRunner.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function get_max_worker_rss()
4949
mb = if haskey(ENV, "JULIA_TEST_MAXRSS_MB")
5050
parse(Int, ENV["JULIA_TEST_MAXRSS_MB"])
5151
elseif Sys.WORD_SIZE == 64
52-
Sys.total_memory() > 8*2^30 ? 3800 : 3000
52+
Sys.total_memory() > 8*Int64(2)^30 ? 3800 : 3000
5353
else
5454
# Assume that we only have 3.5GB available to a single process, and that a single
5555
# 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.
389389
"""
390390
function default_njobs(; cpu_threads = Sys.CPU_THREADS, free_memory = available_memory())
391391
jobs = cpu_threads
392-
memory_jobs = Int64(free_memory) ÷ (2 * 2^30)
392+
memory_jobs = Int64(free_memory) ÷ (2 * Int64(2)^30)
393393
return max(1, min(jobs, memory_jobs))
394394
end
395395

test/runtests.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ cd(@__DIR__)
2424
@test isfile(ParallelTestRunner.get_history_file(ParallelTestRunner))
2525
end
2626

27+
@testset "default njobs" begin
28+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 28) == 1
29+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 30) == 1
30+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 31) == 1
31+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 32) == 2
32+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 33) == 4
33+
@test ParallelTestRunner.default_njobs(; cpu_threads=4, free_memory=UInt64(2) ^ 34) == 4
34+
end
35+
2736
@testset "subdir use" begin
2837
d = @__DIR__
2938
testsuite = find_tests(d)

0 commit comments

Comments
 (0)