summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/sched_ule.c6
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;
OpenPOWER on IntegriCloud