]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: Make OpSequencer has own deferred_lock. 30027/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Wed, 16 Dec 2020 00:20:49 +0000 (08:20 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Wed, 16 Dec 2020 00:23:12 +0000 (08:23 +0800)
commite36f368e438ef9c63d35e3765be312bbeffda8dc
tree5d5511a778728a751cd9343030a3af9e76986287
parentabda218441ccd87fbb595025e8d65cfa278edb08
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/common/Throttle.cc
src/os/bluestore/BlueStore.cc