Switch back to available_parallelism

This reverts commit 8345cf5037. Since that
time, there are now multiple calls to get the number of CPUs, to handle
the `-j -NUM` case, so factor out a helper function.
This commit is contained in:
Josh Triplett 2022-08-10 17:49:24 +02:00
parent ce40690a5e
commit 86163845a5
3 changed files with 15 additions and 5 deletions

View file

@ -44,7 +44,6 @@ libc = "0.2"
log = "0.4.6" log = "0.4.6"
libgit2-sys = "0.13.2" libgit2-sys = "0.13.2"
memchr = "2.1.3" memchr = "2.1.3"
num_cpus = "1.0"
opener = "0.5" opener = "0.5"
os_info = "3.5.0" os_info = "3.5.0"
pathdiff = "0.2" pathdiff = "0.2"

View file

@ -1,11 +1,12 @@
use crate::core::compiler::CompileKind; use crate::core::compiler::CompileKind;
use crate::util::interning::InternedString; use crate::util::interning::InternedString;
use crate::util::{CargoResult, Config, RustfixDiagnosticServer}; use crate::util::{CargoResult, Config, RustfixDiagnosticServer};
use anyhow::bail; use anyhow::{bail, Context as _};
use cargo_util::ProcessBuilder; use cargo_util::ProcessBuilder;
use serde::ser; use serde::ser;
use std::cell::RefCell; use std::cell::RefCell;
use std::path::PathBuf; use std::path::PathBuf;
use std::thread::available_parallelism;
/// Configuration information for a rustc build. /// Configuration information for a rustc build.
#[derive(Debug)] #[derive(Debug)]
@ -45,6 +46,12 @@ pub struct BuildConfig {
pub timing_outputs: Vec<TimingOutput>, pub timing_outputs: Vec<TimingOutput>,
} }
fn default_parallelism() -> CargoResult<u32> {
Ok(available_parallelism()
.context("failed to determine the amount of parallelism available")?
.get() as u32)
}
impl BuildConfig { impl BuildConfig {
/// Parses all config files to learn about build configuration. Currently /// Parses all config files to learn about build configuration. Currently
/// configured options are: /// configured options are:
@ -71,9 +78,9 @@ impl BuildConfig {
)?; )?;
} }
let jobs = match jobs.or(cfg.jobs) { let jobs = match jobs.or(cfg.jobs) {
None => ::num_cpus::get() as u32, None => default_parallelism()?,
Some(0) => anyhow::bail!("jobs may not be 0"), Some(0) => anyhow::bail!("jobs may not be 0"),
Some(j) if j < 0 => (::num_cpus::get() as i32 + j).max(1) as u32, Some(j) if j < 0 => (default_parallelism()? as i32 + j).max(1) as u32,
Some(j) => j as u32, Some(j) => j as u32,
}; };

View file

@ -13,6 +13,7 @@ use anyhow::Context as _;
use cargo_util::paths; use cargo_util::paths;
use std::collections::HashMap; use std::collections::HashMap;
use std::io::{BufWriter, Write}; use std::io::{BufWriter, Write};
use std::thread::available_parallelism;
use std::time::{Duration, Instant, SystemTime}; use std::time::{Duration, Instant, SystemTime};
pub struct Timings<'cfg> { pub struct Timings<'cfg> {
@ -380,6 +381,9 @@ impl<'cfg> Timings<'cfg> {
}; };
let total_time = format!("{:.1}s{}", duration, time_human); let total_time = format!("{:.1}s{}", duration, time_human);
let max_concurrency = self.concurrency.iter().map(|c| c.active).max().unwrap(); let max_concurrency = self.concurrency.iter().map(|c| c.active).max().unwrap();
let num_cpus = available_parallelism()
.map(|x| x.get().to_string())
.unwrap_or_else(|_| "n/a".into());
let max_rustc_concurrency = self let max_rustc_concurrency = self
.concurrency .concurrency
.iter() .iter()
@ -442,7 +446,7 @@ impl<'cfg> Timings<'cfg> {
self.total_fresh + self.total_dirty, self.total_fresh + self.total_dirty,
max_concurrency, max_concurrency,
bcx.jobs(), bcx.jobs(),
num_cpus::get(), num_cpus,
self.start_str, self.start_str,
total_time, total_time,
rustc_info, rustc_info,