All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Toralf Förster" <toralf.foerster@gmx.de>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Richard Weinberger <richard@nod.at>,
	UML devel <user-mode-linux-devel@lists.sourceforge.net>,
	Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [uml-devel] BUG: soft lockup for a user mode linux image
Date: Tue, 08 Oct 2013 21:56:54 +0200	[thread overview]
Message-ID: <52546386.3050608@gmx.de> (raw)
In-Reply-To: <CAMuHMdUo8dSd4s3089ZDEc485wL1sFxBKLeaExJuqNiQY+S-Lw@mail.gmail.com>

Well, the quick&dirty hack below at least works for the moment to
overcome the soft lookup and the hang/unresponsiveness of the 32 bit
user mode linux guest :


diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index f5236f8..7e9483c 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1503,6 +1503,8 @@ static void balance_dirty_pages(struct
address_space *mapping,
                }

 pause:
+               if (pause < 0)
+                       break;
                trace_balance_dirty_pages(bdi,
                                          dirty_thresh,
                                          background_thresh,



I'm not proud of it but after starring at the source code in
mm/page-writeback.c too often and too long currently I don't have any
better clue.

WRT to debug of the culprit: neither printk nor friends worked (maybe
b/c the affected process is just hanging ?) and BUG_ON doesn't gave me
any new clues.


On 10/06/2013 10:26 PM, Geert Uytterhoeven wrote:
> On Sun, Oct 6, 2013 at 10:08 PM, Toralf Förster <toralf.foerster@gmx.de> wrote:
>> On 10/06/2013 08:38 PM, Geert Uytterhoeven wrote:
>>> On Sun, Oct 6, 2013 at 4:17 PM, Toralf Förster <toralf.foerster@gmx.de> wrote:
>>>> The UML stopped here :
>>>> ...
>>>>                 if (unlikely(task_ratelimit == 0)) {
>>>>                         period = max_pause;
>>>>                         pause = max_pause;
>>>>                         BUG_ON(pause < 0);
>>>>                         goto pause;
>>>>                 }
>>>>                 BUG_ON(pages_dirtied < 0);
>>>>                 BUG_ON(task_ratelimit < 0);
>>>>                 period = HZ * pages_dirtied / task_ratelimit;
>>>>                 BUG_ON(period < 0);         <----------------------here
>>>
>>> So pages_dirtied becomes that big compared to task_ratelimit (both are
>>> "unsigned long"), that period (which is "long", just like "pause") overflows
>>> into a negative number.
>>>
>>> This is indeed much more likely to happen on 32-bit.
>>>
>>>> The back trace is :
>>>
>>>> #9  0x08411c64 in balance_dirty_pages (pages_dirtied=9, mapping=<optimized out>) at mm/page-writeback.c:1471
>>>
>>> But here pages_dirtied is only 9??
> 
>> Well, this points to an overflow or ? :
> 
> Negative indicates an overflow, but pages_dirtied doesn't.
> 
>> tfoerste@n22 ~/devel/linux $ nl -ba mm/page-writeback.c | grep -A 5 -B 5 1468
>>   1463                          BUG_ON(pause < 0);
>>   1464                          goto pause;
>>   1465                  }
>>   1466                  period = HZ * pages_dirtied / task_ratelimit;
>>   1467                  pause = period;
>>   1468                  BUG_ON(pause < 0 && pages_dirtied > 0 && task_ratelimit > 0);
>>   1469                  if (current->dirty_paused_when)
>>   1470                          pause -= now - current->dirty_paused_when;
>>   1471                  /*
>>   1472                   * For less than 1s think time (ext3/4 may block the dirtier
>>   1473                   * for up to 800ms from time to time on 1-HDD; so does xfs,
>>
>>
>> and the back trace is :
>>
>> #9  0x08411c6c in balance_dirty_pages (pages_dirtied=0, mapping=<optimized out>) at mm/page-writeback.c:1468
> 
> Hmm, now pages_dirtied is zero, according to the backtrace, but the BUG_ON()
> asserts its strict positive?!?
> 
> Can you please try the following instead of the BUG_ON():
> 
> if (pause < 0) {
>         printk("pages_dirtied = %lu\n", pages_dirtied);
>         printk("task_ratelimit = %lu\n", task_ratelimit);
>         printk("pause = %ld\n", pause);
> }
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
> 


-- 
MfG/Sincerely
Toralf Förster
pgp finger print: 7B1A 07F4 EC82 0F90 D4C2 8936 872A E508 7DB6 9DA3


  parent reply	other threads:[~2013-10-08 19:56 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-02 18:30 [uml-devel] BUG: soft lockup for a user mode linux image Toralf Förster
2013-10-02 18:30 ` Toralf Förster
2013-10-02 18:31 ` [uml-devel] " Toralf Förster
2013-10-02 18:31   ` Toralf Förster
2013-10-02 19:55 ` [uml-devel] " Richard Weinberger
2013-10-02 19:55   ` Richard Weinberger
2013-10-03 18:54   ` Toralf Förster
2013-10-03 18:54     ` Toralf Förster
2013-10-03 19:04     ` Richard Weinberger
2013-10-03 19:04       ` Richard Weinberger
2013-10-03 19:16       ` [uml-devel] " Toralf Förster
2013-10-03 19:16         ` Toralf Förster
2013-10-03 19:20         ` Richard Weinberger
2013-10-03 19:20           ` Richard Weinberger
2013-10-03 19:33           ` Toralf Förster
2013-10-03 19:33             ` Toralf Förster
2013-10-04  5:52             ` Richard Weinberger
2013-10-04  5:52               ` Richard Weinberger
2013-10-06 14:17               ` Toralf Förster
2013-10-06 14:17                 ` Toralf Förster
2013-10-06 18:38                 ` Geert Uytterhoeven
2013-10-06 18:38                   ` Geert Uytterhoeven
2013-10-06 20:08                   ` Toralf Förster
2013-10-06 20:26                     ` Geert Uytterhoeven
2013-10-06 21:01                       ` Toralf Förster
2013-10-08 20:07                         ` Geert Uytterhoeven
2013-10-08 20:07                           ` Geert Uytterhoeven
2013-10-09 17:26                           ` Toralf Förster
2013-10-09 18:43                             ` Richard Weinberger
2013-10-09 18:43                               ` Richard Weinberger
2013-10-09 21:47                               ` Jan Kara
2013-10-09 21:47                                 ` Jan Kara
2013-10-09 22:33                                 ` Richard Weinberger
2013-10-09 22:33                                   ` Richard Weinberger
2013-10-09 22:33                                   ` Richard Weinberger
2013-10-10 16:49                                   ` Toralf Förster
2013-10-10 16:49                                     ` Toralf Förster
2013-10-10 16:49                                     ` Toralf Förster
2013-10-11  1:16                                     ` Fengguang Wu
2013-10-11  1:16                                       ` Fengguang Wu
2013-10-11  8:42                                       ` Toralf Förster
2013-10-11  8:42                                         ` Toralf Förster
2013-10-11  8:57                                         ` Fengguang Wu
2013-10-11  8:57                                           ` Fengguang Wu
2013-10-11  8:57                                           ` Fengguang Wu
2013-10-11  9:05                                           ` Fengguang Wu
2013-10-11  9:05                                             ` Fengguang Wu
2013-10-11 14:12                                           ` Toralf Förster
2013-10-11 14:12                                             ` Toralf Förster
2013-10-11 14:12                                             ` Toralf Förster
2013-10-12  0:43                                             ` [PATCH] writeback: fix negative bdi max pause Fengguang Wu
2013-10-12  0:43                                               ` Fengguang Wu
2013-10-12  4:45                                             ` [PATCH v2] " Fengguang Wu
2013-10-12  4:45                                               ` Fengguang Wu
2013-10-14 12:34                                               ` Jan Kara
2013-10-14 12:34                                                 ` Jan Kara
2013-10-10  2:46                                 ` [uml-devel] BUG: soft lockup for a user mode linux image Fengguang Wu
2013-10-10  2:46                                   ` Fengguang Wu
2013-10-10  6:52                                   ` Geert Uytterhoeven
2013-10-10  6:52                                     ` Geert Uytterhoeven
2013-10-10  7:03                                     ` Fengguang Wu
2013-10-10  7:03                                       ` Fengguang Wu
2013-10-08 19:56                       ` Toralf Förster [this message]
2013-10-09 10:35                         ` stian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52546386.3050608@gmx.de \
    --to=toralf.foerster@gmx.de \
    --cc=geert@linux-m68k.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=richard@nod.at \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.