Re: Observing Softlockup's while running heavy IOs
From: Bart Van Assche
Date: Fri Aug 19 2016 - 11:56:57 EST
On 08/19/2016 04:44 AM, Sreekanth Reddy wrote:
[ +0.000439] __blk_mq_run_hw_queue() finished after 10058 ms
[ ... ]
[ +0.000005] [<ffffffff810c392b>] ? finish_task_switch+0x6b/0x200
[ +0.000006] [<ffffffff8176dabc>] __schedule+0x36c/0x950
[ +0.000002] [<ffffffff8176e0d7>] schedule+0x37/0x80
[ +0.000006] [<ffffffff81116a1c>] futex_wait_queue_me+0xbc/0x120
[ +0.000004] [<ffffffff81116da9>] futex_wait+0x119/0x270
[ +0.000004] [<ffffffff81116800>] ? futex_wake+0x90/0x180
[ +0.000003] [<ffffffff81118d6b>] do_futex+0x12b/0xb00
[ +0.000005] [<ffffffff810d348e>] ? set_next_entity+0x23e/0x440
[ +0.000007] [<ffffffff810136f1>] ? __switch_to+0x261/0x4b0
[ +0.000004] [<ffffffff811197c1>] SyS_futex+0x81/0x180
[ +0.000002] [<ffffffff8176e0d7>] ? schedule+0x37/0x80
[ +0.000004] [<ffffffff817721ae>] entry_SYSCALL_64_fastpath+0x12/0x71
Hello Sreekanth,
If a "soft lockup" is reported that often means that kernel code is
iterating too long in a loop without giving up the CPU. Inserting a
cond_resched() call in such loops usually resolves these soft lockup
complaints. However, your latest e-mail shows that the soft lockup
complaint was reported on other code than __blk_mq_run_hw_queue(). I'm
afraid this means that the CPU on which the soft lockup was reported is
hammered so hard with interrupts that hardly any time remains for the
scheduler to run code on that CPU. You will have to follow Robert
Elliott's advice and reduce the time that is spent per CPU in interrupt
context.
Bart.