]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: Make OpSequencer has own deferred_lock.
authorJianpeng Ma <jianpeng.ma@intel.com>
Tue, 15 Dec 2020 03:02:31 +0000 (11:02 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Wed, 16 Dec 2020 00:04:46 +0000 (08:04 +0800)
commitabda218441ccd87fbb595025e8d65cfa278edb08
tree2ef8ab39bfc887a2389a13e75428d7668d9afe51
parent351960345a3ca28b037dd62ca74a40e9942c21ff
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>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h