Messages in this thread | | | Date | Tue, 14 Aug 2007 23:56:59 +0200 | From | Andi Kleen <> | Subject | Re: [RFC 4/9] Atomic reclaim: Save irq flags in vmscan.c |
| |
On Tue, Aug 14, 2007 at 02:48:31PM -0700, Christoph Lameter wrote: > On Tue, 14 Aug 2007, Andi Kleen wrote: > > > > But that still creates lots of overhead each time we take the lru lock! > > > > A lot of overhead in what way? Setting a flag in a cache hot > > per CPU data variable shouldn't be more than a few cycles. > > Could you be a bit more specific? Where do you want to place the data?
DEFINE_PER_CPU(int, zone_flag);
get_cpu(); // likely already true and then not needed __get_cpu(zone_flag) = 1; /* wmb is implied in spin_lock I think */ spin_lock(&zone->lru_lock); ... spin_unlock(&zone->lru_lock); __get_cpu(zone_flag) = 0; put_cpu();
Interrupt handler
if (!__get_cpu(zone_flag)) { do things with zone locks }
The interrupt handler shouldn't touch zone_flag. If it wants to it would need to be converted to a local_t and incremented/decremented (should be about the same cost at least on architectures with sane local_t implementation) -Andi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |