diff options
Diffstat (limited to 'kernel/sched_fair.c')
| -rw-r--r-- | kernel/sched_fair.c | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 10d218ab69f..29b35a7ec57 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
| @@ -709,31 +709,28 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
| 709 | if (initial && sched_feat(START_DEBIT)) | 709 | if (initial && sched_feat(START_DEBIT)) |
| 710 | vruntime += sched_vslice(cfs_rq, se); | 710 | vruntime += sched_vslice(cfs_rq, se); |
| 711 | 711 | ||
| 712 | if (!initial) { | 712 | /* sleeps up to a single latency don't count. */ |
| 713 | /* sleeps upto a single latency don't count. */ | 713 | if (!initial && sched_feat(FAIR_SLEEPERS)) { |
| 714 | if (sched_feat(FAIR_SLEEPERS)) { | 714 | unsigned long thresh = sysctl_sched_latency; |
| 715 | unsigned long thresh = sysctl_sched_latency; | ||
| 716 | 715 | ||
| 717 | /* | 716 | /* |
| 718 | * Convert the sleeper threshold into virtual time. | 717 | * Convert the sleeper threshold into virtual time. |
| 719 | * SCHED_IDLE is a special sub-class. We care about | 718 | * SCHED_IDLE is a special sub-class. We care about |
| 720 | * fairness only relative to other SCHED_IDLE tasks, | 719 | * fairness only relative to other SCHED_IDLE tasks, |
| 721 | * all of which have the same weight. | 720 | * all of which have the same weight. |
| 722 | */ | 721 | */ |
| 723 | if (sched_feat(NORMALIZED_SLEEPER) && | 722 | if (sched_feat(NORMALIZED_SLEEPER) && (!entity_is_task(se) || |
| 724 | (!entity_is_task(se) || | 723 | task_of(se)->policy != SCHED_IDLE)) |
| 725 | task_of(se)->policy != SCHED_IDLE)) | 724 | thresh = calc_delta_fair(thresh, se); |
| 726 | thresh = calc_delta_fair(thresh, se); | ||
| 727 | 725 | ||
| 728 | /* | 726 | /* |
| 729 | * Halve their sleep time's effect, to allow | 727 | * Halve their sleep time's effect, to allow |
| 730 | * for a gentler effect of sleepers: | 728 | * for a gentler effect of sleepers: |
| 731 | */ | 729 | */ |
| 732 | if (sched_feat(GENTLE_FAIR_SLEEPERS)) | 730 | if (sched_feat(GENTLE_FAIR_SLEEPERS)) |
| 733 | thresh >>= 1; | 731 | thresh >>= 1; |
| 734 | 732 | ||
| 735 | vruntime -= thresh; | 733 | vruntime -= thresh; |
| 736 | } | ||
| 737 | } | 734 | } |
| 738 | 735 | ||
| 739 | /* ensure we never gain time by being placed backwards. */ | 736 | /* ensure we never gain time by being placed backwards. */ |
