Re: [BUG] Lockless patches cause hardlock under heavy IO

Ryan Hope
2008-06-24T16:23:55Z

I have been using CONFIG_PREEMPT_RCU=Y

On Tue, Jun 24, 2008 at 12:12 PM, Paul E. McKenney
<paulmck@linux.vnet.ibm.com> wrote:
> On Tue, Jun 24, 2008 at 11:57:05AM -0400, Ryan Hope wrote:
>> I can give you a list of patches that should correspond to the thread
>> name (for the most part):
>>
>> fix-double-unlock_page-in-2626-rc5-mm3-kernel-bug-at-mm-filemapc-575.patch
>>
>> fix_munlock-page-table-walk.patch
>>
>> migration_entry_wait-fix.patch
>>
>> PATCH collect lru meminfo statistics from correct offset
>>
>> Mlocked field of /proc/meminfo display silly number.
>> because trivial mistake exist in meminfo_read_proc().
>>
>> You can also look in our git repo to see the code that changed with
>> these patches if you cant track them down in LKML:
>> http://zen-sources.org/cgi-bin/gitweb.cgi?p=kernel-mm.git;a=shortlog;h=refs/heads/lkml
>
> Thank you! And is this using Classic RCU or Preemptable RCU?
>
> Thanx, Paul
>
>> On Tue, Jun 24, 2008 at 11:32 AM, Paul E. McKenney
>> <paulmck@linux.vnet.ibm.com> wrote:
>> > On Tue, Jun 24, 2008 at 11:12:03AM -0400, Ryan Hope wrote:
>> >> Well i tried to run pure -mm this weekend, it locked as soon as I got
>> >> into gnome so I applied a couple of the bug fixes from lkml and -mm
>> >> seems to be running stable now. I cant seem to get it to hard lock
>> >> now, at least not doing the simple stuff that was causing it to hard
>> >> lock on my other patchset, either the lockless patches expose some bug
>> >> that in -rc6 or lockless requires some other patches further up in the
>> >> -mm series file.
>> >
>> > Cool!!! Any guess as to which of the bug fixes did the trick?
>> > Failing that, a list of the bug fixes that you applied?
>> >
>> > Thanx, Paul
>> >
>> >> On Mon, Jun 23, 2008 at 8:13 PM, Nick Piggin <nickpiggin@yahoo.com.au> wrote:
>> >> > On Monday 23 June 2008 23:05, Paul E. McKenney wrote:
>> >> >> On Mon, Jun 23, 2008 at 09:54:52PM +1000, Nick Piggin wrote:
>> >> >> > On Monday 23 June 2008 13:51, Ryan Hope wrote:
>> >> >> > > well i get the hardlock on -mm with out using reiser4, i am pretty
>> >> >> > > sure is swap related
>> >> >> >
>> >> >> > The guys seeing hangs don't use PREEMPT_RCU, do they?
>> >> >> >
>> >> >> > In my swapping tests, I found -mm3 to be stable with classic RCU, but
>> >> >> > on a hunch, I tried PREEMPT_RCU and it crashed a couple of times rather
>> >> >> > quickly. First crash was in find_get_pages so I suspected lockless
>> >> >> > pagecache doing something subtly wrong with the RCU API, but I just got
>> >> >> > another crash in __d_lookup:
>> >> >>
>> >> >> Could you please send me a repeat-by? (At least Alexey is no longer
>> >> >> alone!)
>> >> >
>> >> > OK, I had DEBUG_PAGEALLOC in the .config, which I think is probably
>> >> > important to reproduce it (but the fact that I'm reproducing oopses
>> >> > with << PAGE_SIZE objects like dentries and radix tree nodes indicates
>> >> > that there is even more free-before-grace activity going undetected --
>> >> > if you construct a test case using full pages, it might become even
>> >> > easier to detect with DEBUG_PAGEALLOC).
>> >> >
>> >> > 2 socket, 8 core x86 system.
>> >> >
>> >> > I mounted two tmpfs filesystems, one contains a single large file
>> >> > which is formatted as 1K block size ext3 and mounted loopback, the
>> >> > other is used directly. Linux kernel source is unpacked on each mount
>> >> > and concurrent make -j128 on each. This pushes it pretty hard into
>> >> > swap. Classic RCU survived another 5 hours of this last night.
>> >> >
>> >> > But that's a fairly convoluted test for an RCU problem. I expect it
>> >> > should be easier to trigger with something more targetted...
>> >> >
>> >
>