core/exec-invoke: call setpriority() after sched_setattr()
The nice value is part of struct sched_attr, and consequently invoking sched_setattr() after setpriority() would clobber the nice value with the default (as we are not setting it in struct sched_attr). It would be best to combine both calls, but for now simply invoke setpriority() after sched_setattr() to make sure Nice= remains effective when used together with CPUSchedulingPolicy=.
This commit is contained in:
committed by
Luca Boccassi
parent
7036dd8b27
commit
711a157738
@@ -4435,14 +4435,6 @@ int exec_invoke(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context->nice_set) {
|
|
||||||
r = setpriority_closest(context->nice);
|
|
||||||
if (r < 0) {
|
|
||||||
*exit_status = EXIT_NICE;
|
|
||||||
return log_exec_error_errno(context, params, r, "Failed to set up process scheduling priority (nice level): %m");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context->cpu_sched_set) {
|
if (context->cpu_sched_set) {
|
||||||
struct sched_attr attr = {
|
struct sched_attr attr = {
|
||||||
.size = sizeof(attr),
|
.size = sizeof(attr),
|
||||||
@@ -4458,6 +4450,14 @@ int exec_invoke(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (context->nice_set) {
|
||||||
|
r = setpriority_closest(context->nice);
|
||||||
|
if (r < 0) {
|
||||||
|
*exit_status = EXIT_NICE;
|
||||||
|
return log_exec_error_errno(context, params, r, "Failed to set up process scheduling priority (nice level): %m");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (context->cpu_affinity_from_numa || context->cpu_set.set) {
|
if (context->cpu_affinity_from_numa || context->cpu_set.set) {
|
||||||
_cleanup_(cpu_set_reset) CPUSet converted_cpu_set = {};
|
_cleanup_(cpu_set_reset) CPUSet converted_cpu_set = {};
|
||||||
const CPUSet *cpu_set;
|
const CPUSet *cpu_set;
|
||||||
|
|||||||
Reference in New Issue
Block a user