Prev: [PATCH 3/3] [PATCH] ipc/sem.c: cacheline align the ipc spinlock for semaphores
Next: rt: Remove CONFIG_STACK_TRACER from DEBUG_COUNT, and fix reminder block
From: Manfred Spraul on 28 Apr 2010 15:10 Hi, I've cleaned up the patches I sent a week ago: - they pass now checkpatch.pl - some comments updated/added - a bug with semctl(,,SETALL,) is fixed - tested against LTP Andrew: Could you add them the next -mm? The following series of patches tries to fix the spinlock contention reported by Chris Manson: His benchmark exposes problems of the current code: - In the worst case, the algorithm used by update_queue() is O(N^2). Bulk wake-up calls can enter this worst case. The patch series fix that. Note that the benchmark app doesn't expose the problem, it just should be fixed: Real world apps might do the wake-ups in another order than perfect FIFO. - The part of the code that runs within the semaphore array spinlock is significantly larger than necessary. The patch series fixes that. This change is responsible for the main improvement. - The cacheline with the spinlock is also used for a variable that is read in the hot path (sem_base) and for a variable that is unnecessarily written to multiple times (sem_otime). The last step of the series cacheline-aligns the spinlock. -- Manfred -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |