nproc: Reject quota with some schedulers

This commit is contained in:
oech3
2026-05-26 13:23:31 +02:00
committed by Sylvestre Ledru
parent 76c63ee6fd
commit c1a3f6f3a3
+11 -2
View File
@@ -3,7 +3,7 @@
// For the full copyright and license information, please view the LICENSE
// file that was distributed with this source code.
// spell-checker:ignore (ToDO) NPROCESSORS nprocs numstr sysconf
// spell-checker:ignore (ToDO) NPROCESSORS SCHED getscheduler nprocs numstr sched sysconf
use clap::{Arg, ArgAction, Command};
use std::io::{Write, stdout};
@@ -67,7 +67,16 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
}
// the variable 'OMP_NUM_THREADS' doesn't exist
// fallback to the regular CPU detection
Err(_) => available_parallelism(),
Err(_) => {
// ignore quota under some schedulers
#[cfg(any(target_os = "linux", target_os = "android"))]
match unsafe { libc::sched_getscheduler(0) } {
libc::SCHED_FIFO | libc::SCHED_RR | libc::SCHED_DEADLINE => num_cpus_all(),
_ => available_parallelism(), // include fallback for error
}
#[cfg(not(any(target_os = "linux", target_os = "android")))]
available_parallelism()
}
}
};