Minimum nr_requests for blk-mq

From: Martin Raiber <hidden>
Date: 2017-01-08 13:39:58

Hi,

in an effort to avoid OOMs on virtual machines with not much memory
(e.g. 1GB) I set the IO scheduler queue nr_requests to 2 (the device is
a loop device on fuse). This causes the system to deadlock (with 4.4 -
4.10). E.g. following stack trace

[ 1692.647562] Call Trace:
[ 1692.647568]  [<ffffffff8169d922>] ? __schedule+0x192/0x670
[ 1692.647571]  [<ffffffff810a489a>] ? try_to_wake_up+0x4a/0x390
[ 1692.647572]  [<ffffffff8169de36>] schedule+0x36/0x80
[ 1692.647574]  [<ffffffff816a0f85>] schedule_timeout+0x235/0x3f0
[ 1692.647576]  [<ffffffff810a4bf5>] ? wake_up_process+0x15/0x20
[ 1692.647579]  [<ffffffff810235f5>] ? xen_clocksource_get_cycles+0x15/0x20
[ 1692.647581]  [<ffffffff810ebf2c>] ? ktime_get+0x3c/0xb0
[ 1692.647583]  [<ffffffff8169d724>] io_schedule_timeout+0xa4/0x110
[ 1692.647587]  [<ffffffff813a9fdc>] bt_get.isra.6+0x10c/0x1a0
[ 1692.647589]  [<ffffffff810bc210>] ? wake_atomic_t_function+0x70/0x70
[ 1692.647590]  [<ffffffff813aa307>] blk_mq_get_tag+0x27/0x90
[ 1692.647592]  [<ffffffff813a5b70>] __blk_mq_alloc_request+0x20/0x230
[ 1692.647594]  [<ffffffff813a69fe>] blk_mq_map_request+0xbe/0x140
[ 1692.647595]  [<ffffffff813a8c68>] blk_sq_make_request+0xb8/0x4a0
[ 1692.647598]  [<ffffffff8139a727>] ?
generic_make_request_checks+0x217/0x540
[ 1692.647600]  [<ffffffff8139ceb0>] generic_make_request+0xd0/0x1a0
[ 1692.647601]  [<ffffffff8139cffd>] submit_bio+0x7d/0x150
[ 1692.647604]  [<ffffffff81235078>] mpage_bio_submit+0x58/0xb0
[ 1692.647606]  [<ffffffff8123622c>] mpage_readpages+0x12c/0x150
[ 1692.647607]  [<ffffffff8122ebd0>] ? I_BDEV+0x20/0x20
[ 1692.647609]  [<ffffffff8122ebd0>] ? I_BDEV+0x20/0x20
[ 1692.647610]  [<ffffffff8122f4ad>] blkdev_readpages+0x1d/0x20
[ 1692.647613]  [<ffffffff811803a0>] __do_page_cache_readahead+0x160/0x1f0
[ 1692.647615]  [<ffffffff8118079a>] force_page_cache_readahead+0xaa/0x100
[ 1692.647617]  [<ffffffff811808b0>] SyS_readahead+0x70/0xa0
[ 1692.647619]  [<ffffffff81003a8b>] do_syscall_64+0x5b/0xc0
[ 1692.647620]  [<ffffffff816a262f>] entry_SYSCALL64_slow_path+0x25/0x25

Could this be made more user friendly, by not allowing values below a
minimum (what is the minimum such that it does not deadlock?)?

Regards,

Martin Raiber


Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help