Messages in this thread Patch in this message | | | Date | Fri, 02 Jun 2006 17:53:16 +1000 | From | Nick Piggin <> | Subject | Re: [PATCH RFC] smt nice introduces significant lock contention |
| |
Con Kolivas wrote:
>>Nice to acknowledge Chris's idea for >>trylocks in your changelog when you submit a final patch. > > > I absolutely would and I would ask for him to sign off on it as well, once we > agreed on a final form.
No worries, I thought you would ;)
This is a small micro-optimisation / cleanup we can do after smtnice gets converted to use trylocks. Might result in a little less cacheline footprint in some cases.
-- SUSE Labs, Novell Inc. Index: linux-2.6/kernel/sched.c =================================================================== --- linux-2.6.orig/kernel/sched.c 2006-06-02 17:46:23.000000000 +1000 +++ linux-2.6/kernel/sched.c 2006-06-02 17:48:50.000000000 +1000 @@ -239,7 +239,6 @@ struct runqueue { task_t *migration_thread; struct list_head migration_queue; - int cpu; #endif #ifdef CONFIG_SCHEDSTATS @@ -1700,7 +1699,7 @@ static void double_rq_lock(runqueue_t *r spin_lock(&rq1->lock); __acquire(rq2->lock); /* Fake it out ;) */ } else { - if (rq1->cpu < rq2->cpu) { + if (rq1 < rq2) { spin_lock(&rq1->lock); spin_lock(&rq2->lock); } else { @@ -1736,7 +1735,7 @@ static void double_lock_balance(runqueue __acquires(this_rq->lock) { if (unlikely(!spin_trylock(&busiest->lock))) { - if (busiest->cpu < this_rq->cpu) { + if (busiest < this_rq) { spin_unlock(&this_rq->lock); spin_lock(&busiest->lock); spin_lock(&this_rq->lock); @@ -6104,7 +6103,6 @@ void __init sched_init(void) rq->push_cpu = 0; rq->migration_thread = NULL; INIT_LIST_HEAD(&rq->migration_queue); - rq->cpu = i; #endif atomic_set(&rq->nr_iowait, 0); | |