lkml.org 
[lkml]   [2021]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] blk-cgroup: Use cond_resched() when destroy blkgs
From
Date
Hi Tejun,

> Hello, Baolin.
>
> On Tue, Jan 26, 2021 at 09:33:25PM +0800, Baolin Wang wrote:
>> On !PREEMPT kernel, we can get below softlockup when doing stress
>> testing with creating and destroying block cgroup repeatly. The
>> reason is it may take a long time to acquire the queue's lock in
>> the loop of blkcg_destroy_blkgs(), thus we can use cond_resched()
>> instead of cpu_relax() to avoid this issue, since the
>> blkcg_destroy_blkgs() is not called from atomic contexts.
>>
>> [ 4757.010308] watchdog: BUG: soft lockup - CPU#11 stuck for 94s!
>> [ 4757.010698] Call trace:
>> [ 4757.010700]  blkcg_destroy_blkgs+0x68/0x150
>> [ 4757.010701]  cgwb_release_workfn+0x104/0x158
>> [ 4757.010702]  process_one_work+0x1bc/0x3f0
>> [ 4757.010704]  worker_thread+0x164/0x468
>> [ 4757.010705]  kthread+0x108/0x138
>>
>> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
>
> * Can you please add might_sleep() at the top of the function?

Sure.

>
> * Given that the system can accumulate a huge number of blkgs in
> pathological cases, I wonder whether a better way to go about it is
> explicitly testing need_resched() on each loop and release locks and do
> cond_resched() if true?

Yes, sound better to to me and will update in next version. Thanks for
your sugestion.

\
 
 \ /
  Last update: 2021-01-28 02:39    [W:0.060 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site