1. 26 6月, 2005 2 次提交
    • N
      [PATCH] sched: improve load balancing pinned tasks · 81026794
      Nick Piggin 提交于
      John Hawkes explained the problem best:
      
      	A large number of processes that are pinned to a single CPU results
      	in every other CPU's load_balance() seeing this overloaded CPU as
      	"busiest", yet move_tasks() never finds a task to pull-migrate.  This
      	condition occurs during module unload, but can also occur as a
      	denial-of-service using sys_sched_setaffinity().  Several hundred
      	CPUs performing this fruitless load_balance() will livelock on the
      	busiest CPU's runqueue lock.  A smaller number of CPUs will livelock
      	if the pinned task count gets high.
      
      Expanding slightly on John's patch, this one attempts to work out whether the
      balancing failure has been due to too many tasks pinned on the runqueue.  This
      allows it to be basically invisible to the regular blancing paths (ie.  when
      there are no pinned tasks).  We can use this extra knowledge to shut down the
      balancing faster, and ensure the migration threads don't start running which
      is another problem observed in the wild.
      Signed-off-by: NNick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      81026794
    • N
      [PATCH] sched: cleanup wake_idle · e0f364f4
      Nick Piggin 提交于
      New sched-domains code means we don't get spans with offline CPUs in
      them.
      Signed-off-by: NNick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e0f364f4
  2. 24 6月, 2005 2 次提交
    • B
      [PATCH] aio: make wait_queue ->task ->private · c43dc2fd
      Benjamin LaHaise 提交于
      In the upcoming aio_down patch, it is useful to store a private data
      pointer in the kiocb's wait_queue.  Since we provide our own wake up
      function and do not require the task_struct pointer, it makes sense to
      convert the task pointer into a generic private pointer.
      Signed-off-by: NBenjamin LaHaise <benjamin.c.lahaise@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c43dc2fd
    • J
      [PATCH] preempt_count is int - remove cast and don't assign to unsigned type · be5b4fbd
      Jesper Juhl 提交于
      In kernel/sched.c the return value from preempt_count() is cast to an int.
      That made sense when preempt_count was defined as different types on is not
      needed and should go away.  The patch removes the cast.
      
      In kernel/timer.c the return value from preempt_count() is assigned to a
      variable of type u32 and then that unsigned value is later compared to
      preempt_count().  Since preempt_count() returns an int, an int is what
      should be used to store its return value.  Storing the result in an
      unsigned 32bit integer made a tiny bit of sense back when preempt_count was
      different types on different archs, but no more - let's not play signed vs
      unsigned comparison games when we don't have to.  The patch modifies the
      code to use an int to hold the value.  While I was around that bit of code
      I also made two changes to a nearby (related) printk() - I modified it to
      specify the loglevel explicitly and also broke the line into a few pieces
      to avoid it being longer than 80 chars and clarified the text a bit.
      Signed-off-by: NJesper Juhl <juhl-lkml@dif.dk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      be5b4fbd
  3. 22 6月, 2005 1 次提交
    • I
      [PATCH] smp_processor_id() cleanup · 39c715b7
      Ingo Molnar 提交于
      This patch implements a number of smp_processor_id() cleanup ideas that
      Arjan van de Ven and I came up with.
      
      The previous __smp_processor_id/_smp_processor_id/smp_processor_id API
      spaghetti was hard to follow both on the implementational and on the
      usage side.
      
      Some of the complexity arose from picking wrong names, some of the
      complexity comes from the fact that not all architectures defined
      __smp_processor_id.
      
      In the new code, there are two externally visible symbols:
      
       - smp_processor_id(): debug variant.
      
       - raw_smp_processor_id(): nondebug variant. Replaces all existing
         uses of _smp_processor_id() and __smp_processor_id(). Defined
         by every SMP architecture in include/asm-*/smp.h.
      
      There is one new internal symbol, dependent on DEBUG_PREEMPT:
      
       - debug_smp_processor_id(): internal debug variant, mapped to
                                   smp_processor_id().
      
      Also, i moved debug_smp_processor_id() from lib/kernel_lock.c into a new
      lib/smp_processor_id.c file.  All related comments got updated and/or
      clarified.
      
      I have build/boot tested the following 8 .config combinations on x86:
      
       {SMP,UP} x {PREEMPT,!PREEMPT} x {DEBUG_PREEMPT,!DEBUG_PREEMPT}
      
      I have also build/boot tested x64 on UP/PREEMPT/DEBUG_PREEMPT.  (Other
      architectures are untested, but should work just fine.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NArjan van de Ven <arjan@infradead.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      39c715b7
  4. 14 6月, 2005 1 次提交
  5. 21 5月, 2005 1 次提交
    • P
      [PATCH] cpusets+hotplug+preepmt broken · b39c4fab
      Paul Jackson 提交于
      This patch removes the entwining of cpusets and hotplug code in the "No
      more Mr.  Nice Guy" case of sched.c move_task_off_dead_cpu().
      
      Since the hotplug code is holding a spinlock at this point, we cannot take
      the cpuset semaphore, cpuset_sem, as would seem to be required either to
      update the tasks cpuset, or to scan up the nested cpuset chain, looking for
      the nearest cpuset ancestor that still has some CPUs that are online.  So
      we just punt and blast the tasks cpus_allowed with all bits allowed.
      
      This reverts these lines of code to what they were before the cpuset patch.
       And it updates the cpuset Doc file, to match.
      
      The one known alternative to this that seems to work came from Dinakar
      Guniguntala, and required the hotplug code to take the cpuset_sem semaphore
      much earlier in its processing.  So far as we know, the increased locking
      entanglement between cpusets and hot plug of this alternative approach is
      not worth doing in this case.
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Acked-by: NNathan Lynch <ntl@pobox.com>
      Acked-by: NDinakar Guniguntala <dino@in.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b39c4fab
  6. 01 5月, 2005 2 次提交
  7. 19 4月, 2005 1 次提交
  8. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4