Waiman Long<Waiman.Long@xxxxxx> writes:
This patch series introduces two new futex command codes to supportHow would you distinguish those two cases automatically?
a new optimistic spinning futex for implementing an exclusive lock
primitive that should perform better than the same primitive using
the wait-wake futex in cases where the lock owner is actively working
instead of waiting for I/O completion.
This patch series improves futex performance on two different fronts:FWIW the main problem is currently that switch-through-idle is so
1) Reducing the amount of the futex spinlock contention by using 2
different spinlocks instead of just one for the wait-wake futex.
2) Eliminating the context switching overhead and latency due to the
sleeping and the waking of the waiting tasks.
slow. I think improving that would give a boost to far more
situations.
Patch 4 changes sleeping queue from a simple FIFO list to an rbtreeThis seems to mix new functionality with performance improvements?
sorted by process priority as well as the sequeunce the tasks enter
the kernel.
Generally adding new ordering in an user interface is risky because
often user programs have been tuned for specific old ordering.