[RFC PATCH] dm: fix excessive dm-mq context switching
Sagi Grimberg
sagig at dev.mellanox.co.il
Mon Feb 8 04:21:59 PST 2016
>> The perf report is very similar to the one that started this effort..
>>
>> I'm afraid we'll need to resolve the per-target m->lock in order
>> to scale with NUMA...
>
> Could be. Just for testing, you can try the 2 topmost commits I've put
> here (once applied both __multipath_map and multipath_busy won't have
> _any_ locking.. again, very much test-only):
>
> http://git.kernel.org/cgit/linux/kernel/git/snitzer/linux.git/log/?h=devel2
Hi Mike,
So I still don't see the IOPs scale like I expected. With these two
patches applied I see ~670K IOPs while the perf output is different
and does not indicate a clear lock contention.
--
- 4.67% fio [kernel.kallsyms] [k]
blk_account_io_start
- blk_account_io_start
- 56.05% blk_insert_cloned_request
map_request
dm_mq_queue_rq
__blk_mq_run_hw_queue
blk_mq_run_hw_queue
blk_mq_insert_requests
blk_mq_flush_plug_list
blk_flush_plug_list
blk_finish_plug
do_io_submit
SyS_io_submit
entry_SYSCALL_64_fastpath
+ io_submit
- 43.94% blk_mq_bio_to_request
blk_mq_make_request
generic_make_request
submit_bio
do_blockdev_direct_IO
__blockdev_direct_IO
blkdev_direct_IO
generic_file_read_iter
blkdev_read_iter
aio_run_iocb
io_submit_one
do_io_submit
SyS_io_submit
entry_SYSCALL_64_fastpath
+ io_submit
- 2.52% fio [dm_mod] [k] dm_mq_queue_rq
- dm_mq_queue_rq
- 99.16% __blk_mq_run_hw_queue
blk_mq_run_hw_queue
blk_mq_insert_requests
blk_mq_flush_plug_list
blk_flush_plug_list
blk_finish_plug
do_io_submit
SyS_io_submit
entry_SYSCALL_64_fastpath
+ io_submit
- 2.52% fio [dm_mod] [k] dm_mq_queue_rq
- dm_mq_queue_rq
- 99.16% __blk_mq_run_hw_queue
blk_mq_run_hw_queue
blk_mq_insert_requests
blk_mq_flush_plug_list
blk_flush_plug_list
blk_finish_plug
do_io_submit
SyS_io_submit
entry_SYSCALL_64_fastpath
+ io_submit
+ 0.84% blk_mq_run_hw_queue
- 2.46% fio [kernel.kallsyms] [k]
blk_mq_hctx_mark_pending
- blk_mq_hctx_mark_pending
- 99.79% blk_mq_insert_requests
blk_mq_flush_plug_list
blk_flush_plug_list
blk_finish_plug
do_io_submit
SyS_io_submit
entry_SYSCALL_64_fastpath
+ io_submit
- 2.07% ksoftirqd/6 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
- blk_mq_run_hw_queues
- 99.70% rq_completed
dm_done
dm_softirq_done
blk_done_softirq
+ __do_softirq
+ 2.06% ksoftirqd/0 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 2.02% ksoftirqd/9 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 2.00% ksoftirqd/20 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 2.00% ksoftirqd/12 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.99% ksoftirqd/11 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.97% ksoftirqd/18 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.96% ksoftirqd/1 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.95% ksoftirqd/14 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.95% ksoftirqd/13 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.94% ksoftirqd/5 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.94% ksoftirqd/8 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.93% ksoftirqd/2 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.92% ksoftirqd/21 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.92% ksoftirqd/17 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.92% ksoftirqd/7 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.91% ksoftirqd/23 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.84% ksoftirqd/4 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.81% ksoftirqd/19 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.76% ksoftirqd/3 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.76% ksoftirqd/16 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.75% ksoftirqd/15 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.74% ksoftirqd/22 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.72% ksoftirqd/10 [kernel.kallsyms] [k]
blk_mq_run_hw_queues
+ 1.38% perf [kernel.kallsyms] [k]
copy_user_generic_string
+ 1.20% fio [kernel.kallsyms] [k] enqueue_task_fair
+ 1.18% fio [kernel.kallsyms] [k] part_round_stats
+ 1.08% fio [kernel.kallsyms] [k] enqueue_entity
+ 1.07% fio [kernel.kallsyms] [k] _raw_spin_lock
+ 1.02% fio [kernel.kallsyms] [k]
__blk_mq_run_hw_queue
+ 0.79% fio [dm_multipath] [k] multipath_busy
+ 0.57% fio [kernel.kallsyms] [k] insert_work
+ 0.54% fio [kernel.kallsyms] [k] blk_flush_plug_list
--
More information about the Linux-nvme
mailing list