Re: Odd kswapd behaviour after suspending in 2.6.11-rc1

Nick Piggin
2005-01-15T11:01:11Z

[-- Attachment #1: Type: text/plain, Size: 1457 bytes --]

Nigel Cunningham wrote:
> Hi Nick.
>
> On Sat, 2005-01-15 at 21:40, Nick Piggin wrote:
>

>>I've seen try to do order 8 allocations or something almost as
>>ridiculous. Atomic too.
>
>
> I believe you. But Bernard and I are dealing with Suspend2.
>

Sorry, indeed you are. My mistake.

>
>>Well, correction, I've seen _reports_. Never tried swsusp myself.
>
>
> :>
>
>>I don't think a few order 0 and 1 allocations would do any harm
>>because otherwise every man and his dog would be having problems.
>
>
> Yes. Suspend2 does allocate a large number of zero order allocations for
> submitting I/O, but again, they're all freed prior to thawing frozen
> processes.
>

Hmm. I wouldn't have thought that should be a problem. Obviously
something is just irritating a bug somewhere.

>
>>>>Thanks for the report... I'll come up with something for you to try
>>>>in the next day or so.
>>>
>>>
>>>I'm flying to America on Monday, but I'll try to keep up with the
>>>progress in this and do anything I can to help.
>>>
>>
>>It is basically a problem with one of my patches. I should be able
>>to fix it (although fixing swsusp would be nice too :) ).
>
>
> :> Nevertheless, if there's something suspend2 related I should fix...
>

I wouldn't suspect so, but we'll see... How do I get my hands on
suspend2?

Also, Bernard, can you try running with the following patch and
see what output it gives when you reproduce the problem?

Thanks a lot,
Nick

[-- Attachment #2: kswapd-debug --]
[-- Type: text/plain, Size: 408 bytes --]

Index: linux-2.6/mm/vmscan.c
===================================================================
--- linux-2.6.orig/mm/vmscan.c 2005-01-15 21:54:24.579134294 +1100
+++ linux-2.6/mm/vmscan.c 2005-01-15 21:56:51.719355929 +1100
@@ -1182,6 +1182,7 @@
}
finish_wait(&pgdat->kswapd_wait, &wait);

+ printk("kswapd: balance_pgdat, order = %lu\n", order);
balance_pgdat(pgdat, 0, order);
}
return 0;