diff options
-rw-r--r-- | sys/kern/sched_ule.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index fed9c29..a494bcd 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -867,8 +867,9 @@ migrate: static struct kse * kseq_choose(struct kseq *kseq) { - struct kse *ke; struct runq *swap; + struct kse *ke; + int nice; mtx_assert(&sched_lock, MA_OWNED); swap = NULL; @@ -891,7 +892,8 @@ kseq_choose(struct kseq *kseq) * TIMESHARE kse group and its nice was too far out * of the range that receives slices. */ - if (ke->ke_slice == 0) { + nice = ke->ke_proc->p_nice + (0 - kseq->ksq_nicemin); + if (ke->ke_slice == 0 || nice > SCHED_SLICE_NTHRESH) { runq_remove(ke->ke_runq, ke); sched_slice(ke); ke->ke_runq = kseq->ksq_next; |