From c4292fb2beb00ab21c74f846b56ecc99ebe12422 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Wed, 29 Apr 2020 14:40:54 -0700 Subject: [PATCH 1/2] Allow setting the number of filetest threads via the CRANELIFT_FILETESTS_THREADS env var --- cranelift/filetests/src/concurrent.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cranelift/filetests/src/concurrent.rs b/cranelift/filetests/src/concurrent.rs index 30e2c94cfe..67592ed03e 100644 --- a/cranelift/filetests/src/concurrent.rs +++ b/cranelift/filetests/src/concurrent.rs @@ -50,7 +50,16 @@ impl ConcurrentRunner { heartbeat_thread(reply_tx.clone()); - let handles = (0..num_cpus::get()) + let num_threads = std::env::var("CRANELIFT_FILETESTS_THREADS") + .ok() + .map(|s| { + use std::str::FromStr; + let n = usize::from_str(&s).unwrap(); + assert!(n > 0); + n + }) + .unwrap_or_else(|| num_cpus::get()); + let handles = (0..num_threads) .map(|num| worker_thread(num, request_mutex.clone(), reply_tx.clone())) .collect(); From c0503455be43f069ffb6968c9f6cd798dd7f032a Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Fri, 1 May 2020 09:15:46 -0700 Subject: [PATCH 2/2] Add documentation about the `CRANELIFT_FILETESTS_THREADS` environment variable --- cranelift/docs/testing.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cranelift/docs/testing.md b/cranelift/docs/testing.md index b1306a2a9a..5d272c56df 100644 --- a/cranelift/docs/testing.md +++ b/cranelift/docs/testing.md @@ -74,6 +74,15 @@ run will also have the RISC-V specific flag `supports_m` disabled. The filetests are run automatically as part of `cargo test`, and they can also be run manually with the `clif-util test` command. +By default, the test runner will spawn a thread pool with as many threads as +there are logical CPUs. You can explicitly control how many threads are spawned +via the `CRANELIFT_FILETESTS_THREADS` environment variable. For example, to +limit the test runner to a single thread, use: + +``` +$ CRANELIFT_FILETESTS_THREADS=1 clif-util test path/to/file.clif +``` + ### Filecheck Many of the test commands described below use *filecheck* to verify their