os/bluestore: Make OpSequencer has own deferred_lock.
For 4k randwrite workload & Using perf script futex-contention in
60second, i found:
>bstore_mempool[69278] lock
7fdc0131f3b8 contended 5 times, 2043 avg ns
>bstore_kv_final[69277] lock
7fdc0131f3b8 contended 41835 times, 1285 avg ns
>bstore_aio[69226] lock
7fdc0131f3b8 contended 62294 times, 1217 avg ns
deferred_lock has serious contented. This becasue deferred_lock is a
globla lock. So i add defferred_lock in OpSequencer and make global
deferred_lock only protect deferred_queue.
After this change:
>bstore_kv_final[75810] lock
7f72f931f3b8 contended 1074 times, 1692 avg ns
>bstore_aio[75759] lock
7f72f931f3b8 contended 1491 times, 1133 avg ns
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>