This is old, but I just noticed it again.
At the time, I thought the lock ping-pong issue could be improved significantly with this change. Further exploration showed that's wrong.
That belief was based on the assumption that most of the time lost was spent waiting for the other client to give up its lock. This is not entirely true.
In the case of strided I/O, if you reduce the extent of granted locks, now you have to request a lock for every I/O, whereas even if you are ping-ponging larger locks, you can do > 1 I/O per lock. It turns out requesting a lock for every I/O - we did actually benchmark this - is just as bad (if not slightly worse) than the original ping-pong problem.
So, nothing to do here and I'll close this one out.
This is old, but I just noticed it again.
At the time, I thought the lock ping-pong issue could be improved significantly with this change. Further exploration showed that's wrong.
That belief was based on the assumption that most of the time lost was spent waiting for the other client to give up its lock. This is not entirely true.
In the case of strided I/O, if you reduce the extent of granted locks, now you have to request a lock for every I/O, whereas even if you are ping-ponging larger locks, you can do > 1 I/O per lock. It turns out requesting a lock for every I/O - we did actually benchmark this - is just as bad (if not slightly worse) than the original ping-pong problem.
So, nothing to do here and I'll close this one out.