1. 26 1月, 2008 31 次提交
    • S
      sched: RT-balance, replace hooks with pre/post schedule and wakeup methods · 9a897c5a
      Steven Rostedt 提交于
      To make the main sched.c code more agnostic to the schedule classes.
      Instead of having specific hooks in the schedule code for the RT class
      balancing. They are replaced with a pre_schedule, post_schedule
      and task_wake_up methods. These methods may be used by any of the classes
      but currently, only the sched_rt class implements them.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9a897c5a
    • I
      sched: fix sched_rt.c:join/leave_domain · bdd7c81b
      Ingo Molnar 提交于
      fix build bug in sched_rt.c:join/leave_domain and make them only
      be included on SMP builds.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      bdd7c81b
    • G
      sched: only balance our RT tasks within our domain · 637f5085
      Gregory Haskins 提交于
      We move the rt-overload data as the first global to per-domain
      reclassification.  This limits the scope of overload related cache-line
      bouncing to stay with a specified partition instead of affecting all
      cpus in the system.
      
      Finally, we limit the scope of find_lowest_cpu searches to the domain
      instead of the entire system.  Note that we would always respect domain
      boundaries even without this patch, but we first would scan potentially
      all cpus before whittling the list down.  Now we can avoid looking at
      RQs that are out of scope, again reducing cache-line hits.
      
      Note: In some cases, task->cpus_allowed will effectively reduce our search
      to within our domain.  However, I believe there are cases where the
      cpus_allowed mask may be all ones and therefore we err on the side of
      caution.  If it can be optimized later, so be it.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      CC: Christoph Lameter <clameter@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      637f5085
    • I
      sched: clean up schedule_balance_rt() · 7f51f298
      Ingo Molnar 提交于
      clean up schedule_balance_rt().
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7f51f298
    • I
      sched: clean up pull_rt_task() · 80bf3171
      Ingo Molnar 提交于
      clean up pull_rt_task().
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      80bf3171
    • I
      sched: remove leftover debugging · 00597c3e
      Ingo Molnar 提交于
      remove leftover debugging.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      00597c3e
    • I
      sched: remove rt_overload() · 6e1938d3
      Ingo Molnar 提交于
      remove rt_overload() - it's an unnecessary indirection.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6e1938d3
    • I
      sched: clean up kernel/sched_rt.c · 84de4274
      Ingo Molnar 提交于
      clean up whitespace damage and missing comments in kernel/sched_rt.c.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      84de4274
    • I
      sched: clean up overlong line in kernel/sched_debug.c · deeeccd4
      Ingo Molnar 提交于
      clean up overlong line in kernel/sched_debug.c.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      deeeccd4
    • I
      sched: clean up find_lock_lowest_rq() · 4df64c0b
      Ingo Molnar 提交于
      clean up find_lock_lowest_rq().
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4df64c0b
    • I
      sched: clean up pick_next_highest_task_rt() · 79064fbf
      Ingo Molnar 提交于
      clean up pick_next_highest_task_rt().
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      79064fbf
    • S
      sched: RT-balance, optimize cpu search · 610bf056
      Steven Rostedt 提交于
      This patch removes several cpumask operations by keeping track
      of the first of the CPUS that is of the lowest priority. When
      the search for the lowest priority runqueue is completed, all
      the bits up to the first CPU with the lowest priority runqueue
      is cleared.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      610bf056
    • G
      sched: RT-balance, optimize · 06f90dbd
      Gregory Haskins 提交于
      We can cheaply track the number of bits set in the cpumask for the lowest
      priority CPUs.  Therefore, compute the mask's weight and use it to skip
      the optimal domain search logic when there is only one CPU available.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      06f90dbd
    • G
      sched: break out early if RT task cannot be migrated · 17b3279b
      Gregory Haskins 提交于
      We don't need to bother searching if the task cannot be migrated
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      17b3279b
    • S
      sched: RT-balance, avoid overloading · e1f47d89
      Steven Rostedt 提交于
      This patch changes the searching for a run queue by a waking RT task
      to try to pick another runqueue if the currently running task
      is an RT task.
      
      The reason is that RT tasks behave different than normal
      tasks. Preempting a normal task to run a RT task to keep
      its cache hot is fine, because the preempted non-RT task
      may wait on that same runqueue to run again unless the
      migration thread comes along and pulls it off.
      
      RT tasks behave differently. If one is preempted, it makes
      an active effort to continue to run. So by having a high
      priority task preempt a lower priority RT task, that lower
      RT task will then quickly try to run on another runqueue.
      This will cause that lower RT task to replace its nice
      hot cache (and TLB) with a completely cold one. This is
      for the hope that the new high priority RT task will keep
       its cache hot.
      
      Remeber that this high priority RT task was just woken up.
      So it may likely have been sleeping for several milliseconds,
      and will end up with a cold cache anyway. RT tasks run till
      they voluntarily stop, or are preempted by a higher priority
      task. This means that it is unlikely that the woken RT task
      will have a hot cache to wake up to. So pushing off a lower
      RT task is just killing its cache for no good reason.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e1f47d89
    • G
      sched: wake-balance fixes · a22d7fc1
      Gregory Haskins 提交于
      We have logic to detect whether the system has migratable tasks, but we are
      not using it when deciding whether to push tasks away.  So we add support
      for considering this new information.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a22d7fc1
    • G
      sched: optimize RT affinity · 6e1254d2
      Gregory Haskins 提交于
      The current code base assumes a relatively flat CPU/core topology and will
      route RT tasks to any CPU fairly equally.  In the real world, there are
      various toplogies and affinities that govern where a task is best suited to
      run with the smallest amount of overhead.  NUMA and multi-core CPUs are
      prime examples of topologies that can impact cache performance.
      
      Fortunately, linux is already structured to represent these topologies via
      the sched_domains interface.  So we change our RT router to consult a
      combination of topology and affinity policy to best place tasks during
      migration.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6e1254d2
    • G
      sched: pre-route RT tasks on wakeup · 318e0893
      Gregory Haskins 提交于
      In the original patch series that Steven Rostedt and I worked on together,
      we both took different approaches to low-priority wakeup path.  I utilized
      "pre-routing" (push the task away to a less important RQ before activating)
      approach, while Steve utilized a "post-routing" approach.  The advantage of
      my approach is that you avoid the overhead of a wasted activate/deactivate
      cycle and peripherally related burdens.  The advantage of Steve's method is
      that it neatly solves an issue preventing a "pull" optimization from being
      deployed.
      
      In the end, we ended up deploying Steve's idea.  But it later dawned on me
      that we could get the best of both worlds by deploying both ideas together,
      albeit slightly modified.
      
      The idea is simple:  Use a "light-weight" lookup for pre-routing, since we
      only need to approximate a good home for the task.  And we also retain the
      post-routing push logic to clean up any inaccuracies caused by a condition
      of "priority mistargeting" caused by the lightweight lookup.  Most of the
      time, the pre-routing should work and yield lower overhead.  In the cases
      where it doesnt, the post-router will bat cleanup.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      318e0893
    • G
      sched: RT balancing: include current CPU · 2de0b463
      Gregory Haskins 提交于
      It doesn't hurt if we allow the current CPU to be included in the
      search.  We will just simply skip it later if the current CPU turns out
      to be the lowest.
      
      We will use this later in the series
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2de0b463
    • G
      sched: break out search for RT tasks · 07b4032c
      Gregory Haskins 提交于
      Isolate the search logic into a function so that it can be used later
      in places other than find_locked_lowest_rq().
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      07b4032c
    • G
      sched: de-SCHED_OTHER-ize the RT path · e7693a36
      Gregory Haskins 提交于
      The current wake-up code path tries to determine if it can optimize the
      wake-up to "this_cpu" by computing load calculations.  The problem is that
      these calculations are only relevant to SCHED_OTHER tasks where load is king.
      For RT tasks, priority is king.  So the load calculation is completely wasted
      bandwidth.
      
      Therefore, we create a new sched_class interface to help with
      pre-wakeup routing decisions and move the load calculation as a function
      of CFS task's class.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e7693a36
    • G
      sched: clean up this_rq use in kernel/sched_rt.c · 697f0a48
      Gregory Haskins 提交于
      "this_rq" is normally used to denote the RQ on the current cpu
      (i.e. "cpu_rq(this_cpu)").  So clean up the usage of this_rq to be
      more consistent with the rest of the code.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      697f0a48
    • G
      sched: add RT-balance cpu-weight · 73fe6aae
      Gregory Haskins 提交于
      Some RT tasks (particularly kthreads) are bound to one specific CPU.
      It is fairly common for two or more bound tasks to get queued up at the
      same time.  Consider, for instance, softirq_timer and softirq_sched.  A
      timer goes off in an ISR which schedules softirq_thread to run at RT50.
      Then the timer handler determines that it's time to smp-rebalance the
      system so it schedules softirq_sched to run.  So we are in a situation
      where we have two RT50 tasks queued, and the system will go into
      rt-overload condition to request other CPUs for help.
      
      This causes two problems in the current code:
      
      1) If a high-priority bound task and a low-priority unbounded task queue
         up behind the running task, we will fail to ever relocate the unbounded
         task because we terminate the search on the first unmovable task.
      
      2) We spend precious futile cycles in the fast-path trying to pull
         overloaded tasks over.  It is therefore optimial to strive to avoid the
         overhead all together if we can cheaply detect the condition before
         overload even occurs.
      
      This patch tries to achieve this optimization by utilizing the hamming
      weight of the task->cpus_allowed mask.  A weight of 1 indicates that
      the task cannot be migrated.  We will then utilize this information to
      skip non-migratable tasks and to eliminate uncessary rebalance attempts.
      
      We introduce a per-rq variable to count the number of migratable tasks
      that are currently running.  We only go into overload if we have more
      than one rt task, AND at least one of them is migratable.
      
      In addition, we introduce a per-task variable to cache the cpus_allowed
      weight, since the hamming calculation is probably relatively expensive.
      We only update the cached value when the mask is updated which should be
      relatively infrequent, especially compared to scheduling frequency
      in the fast path.
      Signed-off-by: NGregory Haskins <ghaskins@novell.com>
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      73fe6aae
    • S
      sched: disable standard balancer for RT tasks · c7a1e46a
      Steven Rostedt 提交于
      Since we now take an active approach to load balancing, we don't need to
      balance RT tasks via the normal task balancer. In fact, this code was
      found to pull RT tasks away from CPUS that the active movement performed,
      resulting in large latencies.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c7a1e46a
    • S
      sched: push RT tasks from overloaded CPUs · 4642dafd
      Steven Rostedt 提交于
      This patch adds pushing of overloaded RT tasks from a runqueue that is
      having tasks (most likely RT tasks) added to the run queue.
      
      TODO: We don't cover the case of waking of new RT tasks (yet).
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4642dafd
    • S
      sched: pull RT tasks from overloaded runqueues · f65eda4f
      Steven Rostedt 提交于
      This patch adds the algorithm to pull tasks from RT overloaded runqueues.
      
      When a pull RT is initiated, all overloaded runqueues are examined for
      a RT task that is higher in prio than the highest prio task queued on the
      target runqueue. If another runqueue holds a RT task that is of higher
      prio than the highest prio task on the target runqueue is found it is pulled
      to the target runqueue.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f65eda4f
    • S
      sched: add rt-overload tracking · 4fd29176
      Steven Rostedt 提交于
      This patch adds an RT overload accounting system. When a runqueue has
      more than one RT task queued, it is marked as overloaded. That is that it
      is a candidate to have RT tasks pulled from it.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4fd29176
    • S
      sched: add RT task pushing · e8fa1362
      Steven Rostedt 提交于
      This patch adds an algorithm to push extra RT tasks off a run queue to
      other CPU runqueues.
      
      When more than one RT task is added to a run queue, this algorithm takes
      an assertive approach to push the RT tasks that are not running onto other
      run queues that have lower priority.  The way this works is that the highest
      RT task that is not running is looked at and we examine the runqueues on
      the CPUS for that tasks affinity mask. We find the runqueue with the lowest
      prio in the CPU affinity of the picked task, and if it is lower in prio than
      the picked task, we push the task onto that CPU runqueue.
      
      We continue pushing RT tasks off the current runqueue until we don't push any
      more.  The algorithm stops when the next highest RT task can't preempt any
      other processes on other CPUS.
      
      TODO: The algorithm may stop when there are still RT tasks that can be
       migrated. Specifically, if the highest non running RT task CPU affinity
       is restricted to CPUs that are running higher priority tasks, there may
       be a lower priority task queued that has an affinity with a CPU that is
       running a lower priority task that it could be migrated to.  This
       patch set does not address this issue.
      
      Note: checkpatch reveals two over 80 character instances. I'm not sure
       that breaking them up will help visually, so I left them as is.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e8fa1362
    • S
      sched: track highest prio task queued · 764a9d6f
      Steven Rostedt 提交于
      This patch adds accounting to each runqueue to keep track of the
      highest prio task queued on the run queue. We only care about
      RT tasks, so if the run queue does not contain any active RT tasks
      its priority will be considered MAX_RT_PRIO.
      
      This information will be used for later patches.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      764a9d6f
    • S
      sched: count # of queued RT tasks · 63489e45
      Steven Rostedt 提交于
      This patch adds accounting to keep track of the number of RT tasks running
      on a runqueue. This information will be used in later patches.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      63489e45
    • S
      sched: group scheduling, change how cpu load is calculated · 58e2d4ca
      Srivatsa Vaddagiri 提交于
      This patch changes how the cpu load exerted by fair_sched_class tasks
      is calculated. Load exerted by fair_sched_class tasks on a cpu is now
      a summation of the group weights, rather than summation of task weights.
      Weight exerted by a group on a cpu is dependent on the shares allocated
      to it.
      
      This version of patch has a minor impact on code size, but should have
      no runtime/functional impact for !CONFIG_FAIR_GROUP_SCHED.
      Signed-off-by: NSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      58e2d4ca
  2. 20 12月, 2007 1 次提交
  3. 03 12月, 2007 1 次提交
    • S
      sched: cpu accounting controller (V2) · d842de87
      Srivatsa Vaddagiri 提交于
      Commit cfb52856 removed a useful feature for
      us, which provided a cpu accounting resource controller.  This feature would be
      useful if someone wants to group tasks only for accounting purpose and doesnt
      really want to exercise any control over their cpu consumption.
      
      The patch below reintroduces the feature. It is based on Paul Menage's
      original patch (Commit 62d0df64), with
      these differences:
      
              - Removed load average information. I felt it needs more thought (esp
      	  to deal with SMP and virtualized platforms) and can be added for
      	  2.6.25 after more discussions.
              - Convert group cpu usage to be nanosecond accurate (as rest of the cfs
      	  stats are) and invoke cpuacct_charge() from the respective scheduler
      	  classes
      	- Make accounting scalable on SMP systems by splitting the usage
      	  counter to be per-cpu
      	- Move the code from kernel/cpu_acct.c to kernel/sched.c (since the
      	  code is not big enough to warrant a new file and also this rightly
      	  needs to live inside the scheduler. Also things like accessing
      	  rq->lock while reading cpu usage becomes easier if the code lived in
      	  kernel/sched.c)
      
      The patch also modifies the cpu controller not to provide the same accounting
      information.
      Tested-by: NBalbir Singh <balbir@linux.vnet.ibm.com>
      
       Tested the patches on top of 2.6.24-rc3. The patches work fine. Ran
       some simple tests like cpuspin (spin on the cpu), ran several tasks in
       the same group and timed them. Compared their time stamps with
       cpuacct.usage.
      Signed-off-by: NSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Signed-off-by: NBalbir Singh <balbir@linux.vnet.ibm.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d842de87
  4. 25 10月, 2007 2 次提交
    • P
      sched: isolate SMP balancing code a bit more · 681f3e68
      Peter Williams 提交于
      At the moment, a lot of load balancing code that is irrelevant to non
      SMP systems gets included during non SMP builds.
      
      This patch addresses this issue and reduces the binary size on non
      SMP systems:
      
         text    data     bss     dec     hex filename
        10983      28    1192   12203    2fab sched.o.before
        10739      28    1192   11959    2eb7 sched.o.after
      Signed-off-by: NPeter Williams <pwil3058@bigpond.net.au>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      681f3e68
    • P
      sched: reduce balance-tasks overhead · e1d1484f
      Peter Williams 提交于
      At the moment, balance_tasks() provides low level functionality for both
        move_tasks() and move_one_task() (indirectly) via the load_balance()
      function (in the sched_class interface) which also provides dual
      functionality.  This dual functionality complicates the interfaces and
      internal mechanisms and makes the run time overhead of operations that
      are called with two run queue locks held.
      
      This patch addresses this issue and reduces the overhead of these
      operations.
      Signed-off-by: NPeter Williams <pwil3058@bigpond.net.au>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e1d1484f
  5. 15 10月, 2007 5 次提交
    • D
      sched: tidy up SCHED_RR · a4ec24b4
      Dmitry Adamushko 提交于
      - make timeslices of SCHED_RR tasks constant and not
      dependent on task's static_prio [1] ;
      - remove obsolete code (timeslice related bits);
      - make sched_rr_get_interval() return something more
      meaningful [2] for SCHED_OTHER tasks.
      
      [1] according to the following link, it's not compliant with SUSv3
      (not sure though, what is the reference for us :-)
      http://lkml.org/lkml/2007/3/7/656
      
      [2] the interval is dynamic and can be depicted as follows "should a
      task be one of the runnable tasks at this particular moment, it would
      expect to run for this interval of time before being re-scheduled by the
      scheduler tick".
      (i.e. it's more precise if a task is runnable at the moment)
      
      yeah, this seems to require task_rq_lock/unlock() but this is not a hot
      path.
      
      results:
      
      (SCHED_FIFO)
      
      dimm@earth:~/storage/prog$ sudo chrt -f 10 ./rr_interval 
      time_slice: 0 : 0
      
      (SCHED_RR)
      
      dimm@earth:~/storage/prog$ sudo chrt 10 ./rr_interval 
      time_slice: 0 : 99984800
      
      (SCHED_NORMAL)
      
      dimm@earth:~/storage/prog$ ./rr_interval 
      time_slice: 0 : 19996960
      
      (SCHED_NORMAL + a cpu_hog of similar 'weight' on the same CPU --- so should be a half of the previous result)
      
      dimm@earth:~/storage/prog$ taskset 1 ./rr_interval 
      time_slice: 0 : 9998480
      Signed-off-by: NDmitry Adamushko <dmitry.adamushko@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a4ec24b4
    • A
      sched: uninline scheduler · a9957449
      Alexey Dobriyan 提交于
      * save ~300 bytes
      * activate_idle_task() was moved to avoid a warning
      
      bloat-o-meter output:
      
      add/remove: 6/0 grow/shrink: 0/16 up/down: 438/-733 (-295)		<===
      function                                     old     new   delta
      __enqueue_entity                               -     165    +165
      finish_task_switch                             -     110    +110
      update_curr_rt                                 -      79     +79
      __load_balance_iterator                        -      32     +32
      __task_rq_unlock                               -      28     +28
      find_process_by_pid                            -      24     +24
      do_sched_setscheduler                        133     123     -10
      sys_sched_rr_get_interval                    176     165     -11
      sys_sched_getparam                           156     145     -11
      normalize_rt_tasks                           482     470     -12
      sched_getaffinity                            112      99     -13
      sys_sched_getscheduler                        86      72     -14
      sched_setaffinity                            226     212     -14
      sched_setscheduler                           666     642     -24
      load_balance_start_fair                       33       9     -24
      load_balance_next_fair                        33       9     -24
      dequeue_task_rt                              133      67     -66
      put_prev_task_rt                              97      28     -69
      schedule_tail                                133      50     -83
      schedule                                     682     594     -88
      enqueue_entity                               499     366    -133
      task_new_fair                                317     180    -137
      Signed-off-by: NAlexey Dobriyan <adobriyan@sw.ru>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a9957449
    • I
      sched: mark scheduling classes as const · 5522d5d5
      Ingo Molnar 提交于
      mark scheduling classes as const. The speeds up the code
      a bit and shrinks it:
      
         text    data     bss     dec     hex filename
        40027    4018     292   44337    ad31 sched.o.before
        40190    3842     292   44324    ad24 sched.o.after
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
      5522d5d5
    • S
      sched: revert recent removal of set_curr_task() · 83b699ed
      Srivatsa Vaddagiri 提交于
      Revert removal of set_curr_task.
      Use put_prev_task/set_curr_task when changing groups/policies
      
      Signed-off-by: Srivatsa Vaddagiri < vatsa@linux.vnet.ibm.com>
      Signed-off-by: NDhaval Giani <dhaval@linux.vnet.ibm.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      83b699ed
    • D
      sched: rework enqueue/dequeue_entity() to get rid of set_curr_task() · f6b53205
      Dmitry Adamushko 提交于
      rework enqueue/dequeue_entity() to get rid of 
      sched_class::set_curr_task(). This simplifies sched_setscheduler(), 
      rt_mutex_setprio() and sched_move_tasks().
      
         text    data     bss     dec     hex filename
        24330    2734      20   27084    69cc sched.o.before
        24233    2730      20   26983    6967 sched.o.after
      Signed-off-by: NDmitry Adamushko <dmitry.adamushko@gmail.com>
      Signed-off-by: NSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
      f6b53205