1. 07 May, 2009 1 commit
    • David Rientjes's avatar
      sched: emit thread info flags with stack trace · aa47b7e0
      David Rientjes authored
      When a thread is oom killed and fails to exit, it's helpful to know which
      threads have access to memory reserves if the machine livelocks.  This is
      done by testing for the TIF_MEMDIE thread info flag and should be
      displayed alongside stack traces to identify tasks that have access to
      such reserves but are still stuck allocating pages, for instance.
      
      It would probably be helpful in other cases as well, so all thread info
      flags are emitted when showing a task.
      
      ( v2: fix warning reported by Stephen Rothwell )
      
      [ Impact: extend debug printout info ]
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      LKML-Reference: <alpine.DEB.2.00.0905040136390.15831@chino.kir.corp.google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      aa47b7e0
  2. 05 May, 2009 1 commit
  3. 21 Apr, 2009 1 commit
    • Gautham R Shenoy's avatar
      sched: Replace first_cpu() with cpumask_first() in ILB nomination code · 6e29ec57
      Gautham R Shenoy authored
      Stephen Rothwell reported this build warning:
      
      >  kernel/sched.c: In function 'find_new_ilb':
      >  kernel/sched.c:4355: warning: passing argument 1 of '__first_cpu' from incompatible pointer type
      >
      > Possibly caused by commit f711f609
      > ("sched: Nominate idle load balancer from a semi-idle package") from
      > the sched tree.  Should this call to first_cpu be cpumask_first?
      
      For !(CONFIG_SCHED_MC || CONFIG_SCHED_SMT), find_new_ilb() nominates the
      Idle load balancer as the first cpu from the nohz.cpu_mask.
      
      This code uses the older API first_cpu(). Replace it with cpumask_first(),
      which is the correct API here.
      
      [ Impact: cleanup, address build warning ]
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      LKML-Reference: <20090421031049.GA4140@in.ibm.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      6e29ec57
  4. 20 Apr, 2009 1 commit
  5. 15 Apr, 2009 1 commit
  6. 14 Apr, 2009 3 commits
    • Johannes Weiner's avatar
      wait: don't use __wake_up_common() · 78ddb08f
      Johannes Weiner authored
      '777c6c5f wait: prevent exclusive waiter starvation' made
      __wake_up_common() global to be used from abort_exclusive_wait().
      
      It was needed to do a wake-up with the waitqueue lock held while
      passing down a key to the wake-up function.
      
      Since '4ede816a epoll keyed wakeups: add __wake_up_locked_key() and
      __wake_up_sync_key()' there is an appropriate wrapper for this case:
      __wake_up_locked_key().
      
      Use it here and make __wake_up_common() private to the scheduler
      again.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1239720785-19661-1-git-send-email-hannes@cmpxchg.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      78ddb08f
    • Gautham R Shenoy's avatar
      sched: Nominate a power-efficient ilb in select_nohz_balancer() · e790fb0b
      Gautham R Shenoy authored
      The CPU that first goes idle becomes the idle-load-balancer and remains
      that until either it picks up a task or till all the CPUs of the system
      goes idle.
      
      Optimize this further to allow it to relinquish it's post
      once all it's siblings in the power-aware sched_domain go idle, thereby
      allowing the whole package-core to go idle. While relinquising the post,
      nominate another an idle-load balancer from a semi-idle core/package.
      Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20090414045535.7645.31641.stgit@sofia.in.ibm.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e790fb0b
    • Gautham R Shenoy's avatar
      sched: Nominate idle load balancer from a semi-idle package. · f711f609
      Gautham R Shenoy authored
      Currently the nomination of idle-load balancer is done by choosing the first
      idle cpu in the nohz.cpu_mask. This may not be power-efficient, since
      such an idle cpu could come from a completely idle core/package thereby
      preventing the whole core/package from being in a low-power state.
      
      For eg, consider a quad-core dual package system. The cpu numbering need
      not be sequential and can something like [0, 2, 4, 6] and [1, 3, 5, 7].
      With sched_mc/smt_power_savings and the power-aware IRQ balance, we try to keep
      as fewer Packages/Cores active. But the current idle load balancer logic
      goes against this by choosing the first_cpu in the nohz.cpu_mask and not
      taking the system topology into consideration.
      
      Improve the algorithm to nominate the idle load balancer from a semi idle
      cores/packages thereby increasing the probability of the cores/packages being
      in deeper sleep states for longer duration.
      
      The algorithm is activated only when sched_mc/smt_power_savings != 0.
      Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20090414045530.7645.12175.stgit@sofia.in.ibm.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f711f609
  7. 09 Apr, 2009 2 commits
    • Paul Turner's avatar
      sched: remove redundant hierarchy walk in check_preempt_wakeup · 002f128b
      Paul Turner authored
      Impact: micro-optimization
      
      Under group scheduling we traverse up until we are at common siblings
      to make the wakeup comparison on.
      
      At this point however, they should have the same parent so continuing
      to check up the tree is redundant.
      Signed-off-by: default avatarPaul Turner <pjt@google.com>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <alpine.DEB.1.00.0904081520320.30317@kitami.corp.google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      002f128b
    • Nathan Lynch's avatar
      sched: do not count frozen tasks toward load · e3c8ca83
      Nathan Lynch authored
      Freezing tasks via the cgroup freezer causes the load average to climb
      because the freezer's current implementation puts frozen tasks in
      uninterruptible sleep (D state).
      
      Some applications which perform job-scheduling functions consult the
      load average when making decisions.  If a cgroup is frozen, the load
      average does not provide a useful measure of the system's utilization
      to such applications.  This is especially inconvenient if the job
      scheduler employs the cgroup freezer as a mechanism for preempting low
      priority jobs.  Contrast this with using SIGSTOP for the same purpose:
      the stopped tasks do not count toward system load.
      
      Change task_contributes_to_load() to return false if the task is
      frozen.  This results in /proc/loadavg behavior that better meets
      users' expectations.
      Signed-off-by: default avatarNathan Lynch <ntl@pobox.com>
      Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarNigel Cunningham <nigel@tuxonice.net>
      Tested-by: default avatarNigel Cunningham <nigel@tuxonice.net>
      Cc: <stable@kernel.org>
      Cc: containers@lists.linux-foundation.org
      Cc: linux-pm@lists.linux-foundation.org
      Cc: Matt Helsley <matthltc@us.ibm.com>
      LKML-Reference: <20090408194512.47a99b95@manatee.lan>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e3c8ca83
  8. 08 Apr, 2009 2 commits
  9. 07 Apr, 2009 28 commits