* kswapd in tight loop 2.6.9-rc3-bk-recent
@ 2004-10-07 21:20 Chris Wright
2004-10-07 21:39 ` Dave Jones
2004-10-07 23:40 ` Andrew Morton
0 siblings, 2 replies; 24+ messages in thread
From: Chris Wright @ 2004-10-07 21:20 UTC (permalink / raw)
To: linux-kernel
Is this known? Just came back from lunch, so I've no clue what kicked it
off. Profile below. (2.6.9-rc3-bk from yesterday, pending updates don't
appear to touch vmscan or mm/ in general).
CPU: AMD64 processors, speed 1994.35 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a
unit mask
of 0x00 (No unit mask) count 100000
samples % symbol name
2410135 53.4092 balance_pgdat
1328186 29.4329 shrink_zone
555121 12.3016 shrink_slab
84942 1.8823 __read_page_state
40770 0.9035 timer_interrupt
...
thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-07 21:20 kswapd in tight loop 2.6.9-rc3-bk-recent Chris Wright
@ 2004-10-07 21:39 ` Dave Jones
2004-10-07 21:49 ` Chris Wright
2004-10-07 23:40 ` Andrew Morton
1 sibling, 1 reply; 24+ messages in thread
From: Dave Jones @ 2004-10-07 21:39 UTC (permalink / raw)
To: Chris Wright; +Cc: linux-kernel
On Thu, Oct 07, 2004 at 02:20:19PM -0700, Chris Wright wrote:
> Is this known? Just came back from lunch, so I've no clue what kicked it
> off. Profile below. (2.6.9-rc3-bk from yesterday, pending updates don't
> appear to touch vmscan or mm/ in general).
>
> CPU: AMD64 processors, speed 1994.35 MHz (estimated)
> Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a
> unit mask
> of 0x00 (No unit mask) count 100000
> samples % symbol name
> 2410135 53.4092 balance_pgdat
> 1328186 29.4329 shrink_zone
> 555121 12.3016 shrink_slab
> 84942 1.8823 __read_page_state
> 40770 0.9035 timer_interrupt
I saw the same thing yesterday, also on an amd64 box though that
could be coincidence. The kswapd1 process was pegging the cpu at 99%
kswapd0 was idle. After a few minutes, the box became so unresponsive
I had to reboot it.
I had put this down to me fiddling with some patches, and it hasnt'
reappeared today yet, but it sounds like we're seeing the same thing.
Sadly, I didn't get a profile of what was happening.
A 'make allmodconfig' triggered it for me, on a box with 2GB of ram,
and 2GB of swap. No swap was in use when things 'went wierd', and
there was a bunch of RAM sitting free too (about half a gig if memory
serves correctly)
Dave
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-07 21:39 ` Dave Jones
@ 2004-10-07 21:49 ` Chris Wright
0 siblings, 0 replies; 24+ messages in thread
From: Chris Wright @ 2004-10-07 21:49 UTC (permalink / raw)
To: Dave Jones; +Cc: Chris Wright, linux-kernel
* Dave Jones (davej@redhat.com) wrote:
> I saw the same thing yesterday, also on an amd64 box though that
> could be coincidence. The kswapd1 process was pegging the cpu at 99%
> kswapd0 was idle.
Same here.
> After a few minutes, the box became so unresponsive
> I had to reboot it.
Well, that CPU is useless ;-) Otherwise the thing is still responding.
One thing I noticed is the swap usage:
# grep Swap proc/meminfo
SwapCached: 4 kB
SwapTotal: 2031608 kB
SwapFree: 2031604 kB
So, I'm guessing the first page that went out to swap started this thing
off.
> I had put this down to me fiddling with some patches, and it hasnt'
> reappeared today yet, but it sounds like we're seeing the same thing.
I do have some local changes too. But nothing that should trigger this.
> Sadly, I didn't get a profile of what was happening.
> A 'make allmodconfig' triggered it for me, on a box with 2GB of ram,
> and 2GB of swap. No swap was in use when things 'went wierd', and
> there was a bunch of RAM sitting free too (about half a gig if memory
> serves correctly)
Memory's a bit tighter here, but still 55M free though.
# cat /proc/meminfo
MemTotal: 2053240 kB
MemFree: 55324 kB
Buffers: 161900 kB
Cached: 1321312 kB
SwapCached: 4 kB
Active: 988476 kB
Inactive: 651820 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 2053240 kB
LowFree: 55564 kB
SwapTotal: 2031608 kB
SwapFree: 2031604 kB
Dirty: 28 kB
Writeback: 0 kB
Mapped: 205600 kB
Slab: 334968 kB
Committed_AS: 581136 kB
PageTables: 8916 kB
VmallocTotal: 536870911 kB
VmallocUsed: 3080 kB
VmallocChunk: 536867727 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-07 21:20 kswapd in tight loop 2.6.9-rc3-bk-recent Chris Wright
2004-10-07 21:39 ` Dave Jones
@ 2004-10-07 23:40 ` Andrew Morton
2004-10-08 0:34 ` Nick Piggin
1 sibling, 1 reply; 24+ messages in thread
From: Andrew Morton @ 2004-10-07 23:40 UTC (permalink / raw)
To: Chris Wright; +Cc: linux-kernel, Nick Piggin
Chris Wright <chrisw@osdl.org> wrote:
>
> Is this known? Just came back from lunch, so I've no clue what kicked it
> off. Profile below. (2.6.9-rc3-bk from yesterday, pending updates don't
> appear to touch vmscan or mm/ in general).
>
> CPU: AMD64 processors, speed 1994.35 MHz (estimated)
> Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a
> unit mask
> of 0x00 (No unit mask) count 100000
> samples % symbol name
> 2410135 53.4092 balance_pgdat
> 1328186 29.4329 shrink_zone
> 555121 12.3016 shrink_slab
> 84942 1.8823 __read_page_state
Oh fanfuckingtastic. Something in there is failing to reach its
termination condition. The code has become a trainwreck, so heaven knows
what it was.
For starters, let's actually use that local variable for something.
We haven't been incrementing local variable total_scanned since the
scan_control stuff went in.
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
25-akpm/mm/vmscan.c | 1 +
1 files changed, 1 insertion(+)
diff -puN mm/vmscan.c~vmscan-total_scanned-fix mm/vmscan.c
--- 25/mm/vmscan.c~vmscan-total_scanned-fix Thu Oct 7 16:31:55 2004
+++ 25-akpm/mm/vmscan.c Thu Oct 7 16:31:55 2004
@@ -1054,6 +1054,7 @@ scan:
shrink_slab(sc.nr_scanned, GFP_KERNEL, lru_pages);
sc.nr_reclaimed += reclaim_state->reclaimed_slab;
total_reclaimed += sc.nr_reclaimed;
+ total_scanned += sc.nr_scanned;
if (zone->all_unreclaimable)
continue;
if (zone->pages_scanned > zone->present_pages * 2)
_
This probably won't fix it.
It looks like the code will lock up if all zones are out of unreclaimable
memory, but you won't be hitting that.
I also wonder if it'll lock up if just the first zone has ->all_unreclaimable.
I think a good starting point here will be to revert the most recent
change.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-07 23:40 ` Andrew Morton
@ 2004-10-08 0:34 ` Nick Piggin
2004-10-08 0:37 ` Andrew Morton
2004-10-08 0:42 ` Andrew Morton
0 siblings, 2 replies; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 0:34 UTC (permalink / raw)
To: Andrew Morton; +Cc: Chris Wright, linux-kernel, Nick Piggin
Andrew Morton wrote:
>
>This probably won't fix it.
>
>It looks like the code will lock up if all zones are out of unreclaimable
>memory, but you won't be hitting that.
>
>
Out of _reclaimable_ memory?
It shouldn't if all_unreclaimable is being set correctly.
>I also wonder if it'll lock up if just the first zone has ->all_unreclaimable.
>
>
Well, not if the all_unreclaimable flag is set, but if it should be and
isn't,
then probably it will lock up.
>I think a good starting point here will be to revert the most recent
>change.
>
That may fix it for the simple fact that kswapd will just go through its
priority loop once then stop.
I think that resetting all_unreclaimable in free_pages_bulk is the wrong
idea though, because that will keep it clear if a bit of kernel memory is
being pinned and freed in the background, won't it?
I had a look and decided that all_unreclaimable should probably be cleared
only if vmscan.c frees some memory - but I couldn't really come up with any
hard numbers to back me up :P
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 0:34 ` Nick Piggin
@ 2004-10-08 0:37 ` Andrew Morton
2004-10-08 0:51 ` Chris Wright
2004-10-08 0:42 ` Andrew Morton
1 sibling, 1 reply; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 0:37 UTC (permalink / raw)
To: Nick Piggin; +Cc: chrisw, linux-kernel, piggin
Nick Piggin <nickpiggin@yahoo.com.au> wrote:
>
> >I think a good starting point here will be to revert the most recent
> >change.
> >
>
> That may fix it for the simple fact that kswapd will just go through its
> priority loop once then stop.
No it won't. It'll probably make the priority windup worse.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 0:34 ` Nick Piggin
2004-10-08 0:37 ` Andrew Morton
@ 2004-10-08 0:42 ` Andrew Morton
2004-10-08 1:41 ` Chris Wright
1 sibling, 1 reply; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 0:42 UTC (permalink / raw)
To: Nick Piggin; +Cc: chrisw, linux-kernel, piggin
OK, after backing out the `goto spaghetti;' patch and cleaning up a few
thing I'll test the below. It'll make kswapd much less aggressive.
diff -puN mm/vmscan.c~no-wild-kswapd-2 mm/vmscan.c
--- 25/mm/vmscan.c~no-wild-kswapd-2 2004-10-07 17:38:20.342906376 -0700
+++ 25-akpm/mm/vmscan.c 2004-10-07 17:38:20.348905464 -0700
@@ -964,6 +964,17 @@ out:
* of the number of free pages in the lower zones. This interoperates with
* the page allocator fallback scheme to ensure that aging of pages is balanced
* across the zones.
+ *
+ * kswapd can be semi-livelocked if some other process is allocating pages
+ * while kswapd is simultaneously trying to balance the same zone. That's OK,
+ * because we _want_ kswapd to work continuously in this situation. But a
+ * side-effect of kswapd's ongoing work is that the pageout priority keeps on
+ * winding up so we bogusly start doing swapout.
+ *
+ * To fix this we take a snapshot of the number of pages which need to be
+ * reclaimed from each zone in zone->pages_to_reclaim and never reclaim more
+ * pages than that. Once the required number of pages have been reclaimed from
+ * each zone, we're done. kwsapd will go back to sleep until someone wakes it.
*/
static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
{
@@ -984,6 +995,7 @@ static int balance_pgdat(pg_data_t *pgda
struct zone *zone = pgdat->node_zones + i;
zone->temp_priority = DEF_PRIORITY;
+ zone->pages_to_reclaim = zone->pages_high - zone->pages_free;
}
for (priority = DEF_PRIORITY; priority >= 0; priority--) {
@@ -1003,7 +1015,7 @@ static int balance_pgdat(pg_data_t *pgda
priority != DEF_PRIORITY)
continue;
- if (zone->free_pages <= zone->pages_high) {
+ if (zone->pages_to_reclaim > 0) {
end_zone = i;
break;
}
@@ -1036,10 +1048,11 @@ static int balance_pgdat(pg_data_t *pgda
if (zone->all_unreclaimable && priority != DEF_PRIORITY)
continue;
- if (nr_pages == 0) { /* Not software suspend */
- if (zone->free_pages <= zone->pages_high)
- all_zones_ok = 0;
- }
+ if (zone->pages_to_reclaim <= 0)
+ continue;
+
+ if (nr_pages == 0) /* Not software suspend */
+ all_zones_ok = 0;
zone->temp_priority = priority;
if (zone->prev_priority > priority)
zone->prev_priority = priority;
@@ -1049,6 +1062,10 @@ static int balance_pgdat(pg_data_t *pgda
shrink_zone(zone, &sc);
reclaim_state->reclaimed_slab = 0;
shrink_slab(sc.nr_scanned, GFP_KERNEL, lru_pages);
+
+ /* This fails to account for slab reclaim */
+ zone->pages_to_reclaim -= sc.nr_reclaimed;
+
sc.nr_reclaimed += reclaim_state->reclaimed_slab;
total_reclaimed += sc.nr_reclaimed;
total_scanned += sc.nr_scanned;
diff -puN include/linux/mmzone.h~no-wild-kswapd-2 include/linux/mmzone.h
--- 25/include/linux/mmzone.h~no-wild-kswapd-2 2004-10-07 17:38:20.343906224 -0700
+++ 25-akpm/include/linux/mmzone.h 2004-10-07 17:40:20.847586880 -0700
@@ -137,8 +137,9 @@ struct zone {
unsigned long nr_scan_inactive;
unsigned long nr_active;
unsigned long nr_inactive;
- int all_unreclaimable; /* All pages pinned */
- unsigned long pages_scanned; /* since last reclaim */
+ long pages_to_reclaim; /* kswapd usage */
+ int all_unreclaimable; /* All pages pinned */
+ unsigned long pages_scanned; /* since last reclaim */
ZONE_PADDING(_pad2_)
_
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 0:37 ` Andrew Morton
@ 2004-10-08 0:51 ` Chris Wright
2004-10-08 1:40 ` Andrew Morton
0 siblings, 1 reply; 24+ messages in thread
From: Chris Wright @ 2004-10-08 0:51 UTC (permalink / raw)
To: Andrew Morton; +Cc: Nick Piggin, chrisw, linux-kernel, piggin
* Andrew Morton (akpm@osdl.org) wrote:
> Nick Piggin <nickpiggin@yahoo.com.au> wrote:
> >
> > >I think a good starting point here will be to revert the most recent
> > >change.
> > >
> >
> > That may fix it for the simple fact that kswapd will just go through its
> > priority loop once then stop.
>
> No it won't. It'll probably make the priority windup worse.
In the interest of data collection, here's the last bit before I reboot.
SysRq : Show Memory
Mem-info:
Node 1 DMA per-cpu: empty
Node 1 Normal per-cpu:
cpu 0 hot: low 32, high 96, batch 16
cpu 0 cold: low 0, high 32, batch 16
cpu 1 hot: low 32, high 96, batch 16
cpu 1 cold: low 0, high 32, batch 16
Node 1 HighMem per-cpu: empty
Node 0 DMA per-cpu:
cpu 0 hot: low 2, high 6, batch 1
cpu 0 cold: low 0, high 2, batch 1
cpu 1 hot: low 2, high 6, batch 1
cpu 1 cold: low 0, high 2, batch 1
Node 0 Normal per-cpu:
cpu 0 hot: low 32, high 96, batch 16
cpu 0 cold: low 0, high 32, batch 16
cpu 1 hot: low 32, high 96, batch 16
cpu 1 cold: low 0, high 32, batch 16
Node 0 HighMem per-cpu: empty
Free pages: 53200kB (0kB HighMem)
Active:239438 inactive:178323 dirty:8 writeback:0 unstable:0 free:13300 slab:76700 mapped:52305 pagetables:2172
Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
protections[]: 0 0 0
Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
protections[]: 0 0 0
Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
protections[]: 0 0 0
Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
Node 1 DMA: empty
Node 1 Normal: 150*4kB 66*8kB 45*16kB 0*32kB 192*64kB 55*128kB 8*256kB 2*512kB 1*1024kB 0*2048kB 0*4096kB = 25272kB
Node 1 HighMem: empty
Node 0 DMA: 8*4kB 1*8kB 1*16kB 13*32kB 4*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 728kB
Node 0 Normal: 10*4kB 3*8kB 2*16kB 3*32kB 308*64kB 43*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 27200kB
Node 0 HighMem: empty
Swap cache: add 79, delete 1, find 0/0, race 0+0
Free swap: 2031292kB
524127 pages of RAM
10946 reserved pages
263444 pages shared
78 pages swap cached
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 0:51 ` Chris Wright
@ 2004-10-08 1:40 ` Andrew Morton
0 siblings, 0 replies; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 1:40 UTC (permalink / raw)
To: Chris Wright; +Cc: nickpiggin, chrisw, linux-kernel, piggin
Chris Wright <chrisw@osdl.org> wrote:
>
> Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
> Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
> protections[]: 0 0 0
> Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
hm. empty zones all over the zonelist. We may not be handling that right.
> Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
> protections[]: 0 0 0
> Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
> protections[]: 0 0 0
> Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
I can't see anything here which would cause kswapd to go nuts.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 0:42 ` Andrew Morton
@ 2004-10-08 1:41 ` Chris Wright
2004-10-08 1:51 ` Chris Wright
0 siblings, 1 reply; 24+ messages in thread
From: Chris Wright @ 2004-10-08 1:41 UTC (permalink / raw)
To: Andrew Morton; +Cc: Nick Piggin, chrisw, linux-kernel, piggin
* Andrew Morton (akpm@osdl.org) wrote:
>
> OK, after backing out the `goto spaghetti;' patch and cleaning up a few
> thing I'll test the below. It'll make kswapd much less aggressive.
testing with this compile fix:
diff -u 25-akpm/mm/vmscan.c edited/mm/vmscan.c
--- 25-akpm/mm/vmscan.c 2004-10-07 17:38:20.348905464 -0700
+++ edited/mm/vmscan.c 2004-10-07 18:38:14 -07:00
@@ -999,7 +999,7 @@
struct zone *zone = pgdat->node_zones + i;
zone->temp_priority = DEF_PRIORITY;
- zone->pages_to_reclaim = zone->pages_high - zone->pages_free;
+ zone->pages_to_reclaim = zone->pages_high - zone->free_pages;
}
for (priority = DEF_PRIORITY; priority >= 0; priority--) {
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 1:41 ` Chris Wright
@ 2004-10-08 1:51 ` Chris Wright
2004-10-08 1:53 ` Andrew Morton
0 siblings, 1 reply; 24+ messages in thread
From: Chris Wright @ 2004-10-08 1:51 UTC (permalink / raw)
To: Chris Wright; +Cc: Andrew Morton, Nick Piggin, linux-kernel, piggin
* Chris Wright (chrisw@osdl.org) wrote:
> * Andrew Morton (akpm@osdl.org) wrote:
> >
> > OK, after backing out the `goto spaghetti;' patch and cleaning up a few
> > thing I'll test the below. It'll make kswapd much less aggressive.
>
> testing with this compile fix:
passes initial simple testing (whereas I could get the mainline code, and the
one-liner to spin right off).
thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 1:51 ` Chris Wright
@ 2004-10-08 1:53 ` Andrew Morton
2004-10-08 2:46 ` Nick Piggin
2004-10-08 3:05 ` Chris Wright
0 siblings, 2 replies; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 1:53 UTC (permalink / raw)
To: Chris Wright; +Cc: nickpiggin, linux-kernel, piggin
Chris Wright <chrisw@osdl.org> wrote:
>
> (whereas I could get the mainline code, and the
> one-liner to spin right off).
How? (up to and including .config please).
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 1:53 ` Andrew Morton
@ 2004-10-08 2:46 ` Nick Piggin
2004-10-08 3:01 ` Andrew Morton
2004-10-08 3:05 ` Chris Wright
1 sibling, 1 reply; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 2:46 UTC (permalink / raw)
To: Andrew Morton; +Cc: Chris Wright, nickpiggin, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 301 bytes --]
Andrew Morton wrote:
>Chris Wright <chrisw@osdl.org> wrote:
>
>>(whereas I could get the mainline code, and the
>> one-liner to spin right off).
>>
>
>How? (up to and including .config please).
>
>
>
Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
commence spinning.
How's this go?
[-- Attachment #2: vm-fix-empty-zones.patch --]
[-- Type: text/x-patch, Size: 1136 bytes --]
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
---
linux-2.6-npiggin/mm/vmscan.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff -puN mm/vmscan.c~vm-fix-empty-zones mm/vmscan.c
--- linux-2.6/mm/vmscan.c~vm-fix-empty-zones 2004-10-08 12:44:14.000000000 +1000
+++ linux-2.6-npiggin/mm/vmscan.c 2004-10-08 12:44:48.000000000 +1000
@@ -1003,7 +1003,7 @@ static int balance_pgdat(pg_data_t *pgda
priority != DEF_PRIORITY)
continue;
- if (zone->free_pages <= zone->pages_high) {
+ if (zone->free_pages < zone->pages_high) {
end_zone = i;
goto scan;
}
@@ -1035,7 +1035,7 @@ scan:
continue;
if (nr_pages == 0) { /* Not software suspend */
- if (zone->free_pages <= zone->pages_high)
+ if (zone->free_pages < zone->pages_high)
all_zones_ok = 0;
}
zone->temp_priority = priority;
@@ -1142,7 +1142,7 @@ static int kswapd(void *p)
*/
void wakeup_kswapd(struct zone *zone)
{
- if (zone->free_pages > zone->pages_low)
+ if (zone->free_pages >= zone->pages_low)
return;
if (!waitqueue_active(&zone->zone_pgdat->kswapd_wait))
return;
_
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 2:46 ` Nick Piggin
@ 2004-10-08 3:01 ` Andrew Morton
2004-10-08 3:13 ` Nick Piggin
2004-10-08 3:15 ` Nick Piggin
0 siblings, 2 replies; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 3:01 UTC (permalink / raw)
To: Nick Piggin; +Cc: chrisw, nickpiggin, linux-kernel, Dave Jones
Nick Piggin <piggin@cyberone.com.au> wrote:
>
> >Chris Wright <chrisw@osdl.org> wrote:
> >
> >>(whereas I could get the mainline code, and the
> >> one-liner to spin right off).
> >>
> >
> >How? (up to and including .config please).
> >
> >
> >
>
> Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
> commence spinning.
Maybe. It requires that the zonelists be screwy:
Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
protections[]: 0 0 0
Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
protections[]: 0 0 0
Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
protections[]: 0 0 0
Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
protections[]: 0 0 0
See that DMA zone on node 1? Wonder how it got like that. It
should not be inside pgdat->nrzones anyway.
David, is your setup NUMA? Can you show us a sysrq-M dump?
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 1:53 ` Andrew Morton
2004-10-08 2:46 ` Nick Piggin
@ 2004-10-08 3:05 ` Chris Wright
1 sibling, 0 replies; 24+ messages in thread
From: Chris Wright @ 2004-10-08 3:05 UTC (permalink / raw)
To: Andrew Morton; +Cc: Chris Wright, nickpiggin, linux-kernel, piggin
[-- Attachment #1: Type: text/plain, Size: 705 bytes --]
* Andrew Morton (akpm@osdl.org) wrote:
> Chris Wright <chrisw@osdl.org> wrote:
> >
> > (whereas I could get the mainline code, and the
> > one-liner to spin right off).
>
> How? (up to and including .config please).
I just started up memhog (attached), and waited for swapping to start.
After a bit into swap (nothing happened) I killed it, and did swapoff
in order to start over. This promptly triggered the looping. Then I
tried your one-liner patch. And once memhog pushed pages into swap,
kswapd spun off. In both cases it was quick and easy to reproduce,
although the trigger wasn't identical.
thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net
[-- Attachment #2: memhog.c --]
[-- Type: text/x-c++src, Size: 301 bytes --]
#include <unistd.h>
main(int argc, char *argv[])
{
void *p;
int sz = getpagesize();
int max=0, total=0;
if (argc > 1)
max = atoi(argv[1]);
while(1) {
p = (void *)malloc(sz);
if (p)
memset(p, 0, sz);
else
break;
total += sz;
if (max && total >= max)
break;
}
pause();
}
[-- Attachment #3: kswapd.config --]
[-- Type: text/plain, Size: 29108 bytes --]
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.9-rc3
# Thu Oct 7 12:12:28 2004
#
CONFIG_X86_64=y
CONFIG_64BIT=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_X86_CMPXCHG=y
CONFIG_EARLY_PRINTK=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_LOG_BUF_SHIFT=18
CONFIG_HOTPLUG=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SHMEM=y
# CONFIG_TINY_SHMEM is not set
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
#
# Processor type and features
#
CONFIG_MK8=y
# CONFIG_MPSC is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_MTRR=y
CONFIG_SMP=y
CONFIG_PREEMPT=y
CONFIG_SCHED_SMT=y
CONFIG_K8_NUMA=y
CONFIG_DISCONTIGMEM=y
CONFIG_NUMA=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_NR_CPUS=4
CONFIG_GART_IOMMU=y
CONFIG_SWIOTLB=y
CONFIG_X86_MCE=y
#
# Power management options
#
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_SOFTWARE_SUSPEND=y
CONFIG_PM_STD_PARTITION=""
#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
CONFIG_ACPI_TOSHIBA=y
CONFIG_ACPI_DEBUG=y
CONFIG_ACPI_BUS=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_UNORDERED_IO=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_NAMES is not set
#
# PCMCIA/CardBus support
#
# CONFIG_PCMCIA is not set
#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_UID16=y
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
CONFIG_LBD=y
#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
# CONFIG_IDE_TASKFILE_IO is not set
#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
CONFIG_BLK_DEV_AMD74XX=y
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set
#
# SCSI device support
#
CONFIG_SCSI=y
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI Transport Attributes
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
#
# SCSI low-level drivers
#
CONFIG_BLK_DEV_3W_XXXX_RAID=y
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=4000
# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_SVW is not set
# CONFIG_SCSI_ATA_PIIX is not set
# CONFIG_SCSI_SATA_NV is not set
# CONFIG_SCSI_SATA_PROMISE is not set
# CONFIG_SCSI_SATA_SX4 is not set
CONFIG_SCSI_SATA_SIL=y
# CONFIG_SCSI_SATA_SIS is not set
# CONFIG_SCSI_SATA_VIA is not set
# CONFIG_SCSI_SATA_VITESSE is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
CONFIG_SCSI_QLA2XXX=y
# CONFIG_SCSI_QLA21XX is not set
# CONFIG_SCSI_QLA22XX is not set
# CONFIG_SCSI_QLA2300 is not set
# CONFIG_SCSI_QLA2322 is not set
# CONFIG_SCSI_QLA6312 is not set
# CONFIG_SCSI_QLA6322 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
# CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_ZERO is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
#
# I2O device support
#
CONFIG_I2O=m
# CONFIG_I2O_CONFIG is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Networking support
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_TUNNEL=y
#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
CONFIG_INET6_AH=y
CONFIG_INET6_ESP=y
CONFIG_INET6_IPCOMP=y
CONFIG_INET6_TUNNEL=y
# CONFIG_IPV6_TUNNEL is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_CONNTRACK is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
#
# IPv6: Netfilter Configuration
#
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set
# CONFIG_NET_SCH_CBQ is not set
# CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_HFSC is not set
# CONFIG_NET_SCH_PRIO is not set
# CONFIG_NET_SCH_RED is not set
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not set
# CONFIG_NET_SCH_TBF is not set
# CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
# CONFIG_NET_SCH_NETEM is not set
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_QOS=y
# CONFIG_NET_ESTIMATOR is not set
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_TCINDEX is not set
# CONFIG_NET_CLS_ROUTE4 is not set
# CONFIG_NET_CLS_ROUTE is not set
# CONFIG_NET_CLS_FW is not set
# CONFIG_NET_CLS_U32 is not set
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=y
CONFIG_GACT_PROB=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_RX is not set
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
CONFIG_AMD8111_ETH=y
# CONFIG_AMD8111E_NAPI is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
CONFIG_FORCEDETH=y
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_VIA_VELOCITY is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=y
# CONFIG_E1000_NAPI is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
CONFIG_TIGON3=y
#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=y
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Telephony Support
#
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
# CONFIG_SERIO_RAW is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_ACPI is not set
CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
# CONFIG_WAFER_WDT is not set
# CONFIG_I8XX_TCO is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_SCx200_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_MACHZ_WDT is not set
#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL_MCH is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
CONFIG_RAW_DRIVER=y
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
CONFIG_MAX_RAW_DEVS=256
CONFIG_HANGCHECK_TIMER=y
#
# I2C support
#
CONFIG_I2C=y
# CONFIG_I2C_CHARDEV is not set
#
# I2C Algorithms
#
# CONFIG_I2C_ALGOBIT is not set
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
CONFIG_I2C_AMD8111=y
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_ISA is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_SCx200_ACB is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set
#
# Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
# CONFIG_SENSORS_LM83 is not set
# CONFIG_SENSORS_LM85 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set
#
# Misc devices
#
# CONFIG_IBM_ASM is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# Graphics support
#
CONFIG_FB=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_VESA is not set
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON_OLD is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
#
# Logo configuration
#
# CONFIG_LOGO is not set
#
# Sound
#
CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_RAWMIDI=y
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_MIXER_OSS is not set
# CONFIG_SND_PCM_OSS is not set
# CONFIG_SND_BIT32_EMUL is not set
# CONFIG_SND_RTCTIMER is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
#
# Generic devices
#
CONFIG_SND_MPU401_UART=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
#
# PCI devices
#
CONFIG_SND_AC97_CODEC=y
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
CONFIG_SND_INTEL8X0=y
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VX222 is not set
#
# ALSA USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_USX2Y is not set
#
# Open Sound System
#
CONFIG_SOUND_PRIME=y
# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_ES1370 is not set
# CONFIG_SOUND_ES1371 is not set
# CONFIG_SOUND_ESSSOLO1 is not set
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
CONFIG_SOUND_ICH=y
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
# CONFIG_SOUND_ALI5455 is not set
# CONFIG_SOUND_FORTE is not set
# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_AD1980 is not set
#
# USB support
#
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_UHCI_HCD is not set
#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_MIDI is not set
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=y
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_RW_DETECT is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_HP8200e is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network adaptors
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
#
# USB port drivers
#
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_TIGL is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_TEST is not set
#
# USB Gadget Support
#
CONFIG_USB_GADGET=m
CONFIG_USB_GADGET_NET2280=y
CONFIG_USB_NET2280=m
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_SA1100 is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_OMAP is not set
CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not set
#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=y
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS_XATTR=y
CONFIG_DEVPTS_FS_SECURITY=y
CONFIG_TMPFS=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
# Profiling support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SPINLOCK=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
CONFIG_DEBUG_INFO=y
# CONFIG_INIT_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_IOMMU_DEBUG is not set
#
# Security options
#
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_CAPABILITIES=y
CONFIG_SECURITY_ROOTPLUG=m
CONFIG_SECURITY_SECLVL=m
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
# CONFIG_SECURITY_SELINUX_MLS is not set
CONFIG_SECURITY_BSDJAIL=m
#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
CONFIG_CRYPTO_DEFLATE=y
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_TEST is not set
#
# Library routines
#
# CONFIG_CRC_CCITT is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:01 ` Andrew Morton
@ 2004-10-08 3:13 ` Nick Piggin
2004-10-08 3:30 ` Andrew Morton
2004-10-08 3:15 ` Nick Piggin
1 sibling, 1 reply; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 3:13 UTC (permalink / raw)
To: Andrew Morton; +Cc: chrisw, nickpiggin, linux-kernel, Dave Jones
Andrew Morton wrote:
>Nick Piggin <piggin@cyberone.com.au> wrote:
>
>>>Chris Wright <chrisw@osdl.org> wrote:
>>>
>> >
>> >>(whereas I could get the mainline code, and the
>> >> one-liner to spin right off).
>> >>
>> >
>> >How? (up to and including .config please).
>> >
>> >
>> >
>>
>> Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
>> commence spinning.
>>
>
>Maybe. It requires that the zonelists be screwy:
>
> Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
> Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
> protections[]: 0 0 0
> Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
> Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
> protections[]: 0 0 0
> Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
> protections[]: 0 0 0
> Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
>
>See that DMA zone on node 1? Wonder how it got like that. It
>should not be inside pgdat->nrzones anyway.
>
>
Oh? Why not? I didn't think empty zones were filtered out? (perhaps
they should be).
>David, is your setup NUMA? Can you show us a sysrq-M dump?
>
>
Yes. Incase he's alseep, I'll quote:
"I saw the same thing yesterday, also on an amd64 box though that
could be coincidence. The kswapd1 process was pegging the cpu at 99%
kswapd0 was idle. After a few minutes, the box became so unresponsive"
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:01 ` Andrew Morton
2004-10-08 3:13 ` Nick Piggin
@ 2004-10-08 3:15 ` Nick Piggin
1 sibling, 0 replies; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 3:15 UTC (permalink / raw)
To: Andrew Morton; +Cc: chrisw, nickpiggin, linux-kernel, Dave Jones
Andrew Morton wrote:
>Nick Piggin <piggin@cyberone.com.au> wrote:
>
>>>Chris Wright <chrisw@osdl.org> wrote:
>>>
>> >
>> >>(whereas I could get the mainline code, and the
>> >> one-liner to spin right off).
>> >>
>> >
>> >How? (up to and including .config please).
>> >
>> >
>> >
>>
>> Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
>> commence spinning.
>>
>
>Maybe. It requires that the zonelists be screwy:
>
>
Note that if this *was* the problem, then it would not be the fault of
my recent patch, rather *every* allocation (when memory is lowish)
would cause kswapd to wind through its priority loop then stop.
Probably not using enough CPU for anyone to really notice though.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:13 ` Nick Piggin
@ 2004-10-08 3:30 ` Andrew Morton
2004-10-08 3:54 ` Nick Piggin
2004-10-08 5:21 ` Chris Wright
0 siblings, 2 replies; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 3:30 UTC (permalink / raw)
To: Nick Piggin; +Cc: chrisw, nickpiggin, linux-kernel, davej
Nick Piggin <piggin@cyberone.com.au> wrote:
>
> >> Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
> >> commence spinning.
> >>
> >
> >Maybe. It requires that the zonelists be screwy:
> >
> > Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
> > protections[]: 0 0 0
> > Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
> > protections[]: 0 0 0
> > Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> > protections[]: 0 0 0
> > Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
> > protections[]: 0 0 0
> > Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
> > protections[]: 0 0 0
> > Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> > protections[]: 0 0 0
> >
> >See that DMA zone on node 1? Wonder how it got like that. It
> >should not be inside pgdat->nrzones anyway.
> >
> >
> Oh? Why not? I didn't think empty zones were filtered out?
That ininitialised zone should be outside pgdat->nr_zones, no?
> (perhaps they should be).
They will be.
Chris, do you have time to test this, against -linus?
diff -puN mm/vmscan.c~vmscan-handle-empty-zones mm/vmscan.c
--- 25/mm/vmscan.c~vmscan-handle-empty-zones 2004-10-07 19:10:52.844797784 -0700
+++ 25-akpm/mm/vmscan.c 2004-10-07 19:11:49.804138648 -0700
@@ -851,6 +851,9 @@ shrink_caches(struct zone **zones, struc
for (i = 0; zones[i] != NULL; i++) {
struct zone *zone = zones[i];
+ if (zone->present_pages == 0)
+ continue;
+
zone->temp_priority = sc->priority;
if (zone->prev_priority > sc->priority)
zone->prev_priority = sc->priority;
@@ -999,6 +1002,9 @@ static int balance_pgdat(pg_data_t *pgda
for (i = pgdat->nr_zones - 1; i >= 0; i--) {
struct zone *zone = pgdat->node_zones + i;
+ if (zone->present_pages == 0)
+ continue;
+
if (zone->all_unreclaimable &&
priority != DEF_PRIORITY)
continue;
@@ -1033,6 +1039,9 @@ static int balance_pgdat(pg_data_t *pgda
for (i = 0; i <= end_zone; i++) {
struct zone *zone = pgdat->node_zones + i;
+ if (zone->present_pages == 0)
+ continue;
+
if (zone->all_unreclaimable && priority != DEF_PRIORITY)
continue;
_
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:30 ` Andrew Morton
@ 2004-10-08 3:54 ` Nick Piggin
2004-10-08 4:48 ` Nick Piggin
2004-10-08 5:21 ` Chris Wright
1 sibling, 1 reply; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 3:54 UTC (permalink / raw)
To: Andrew Morton; +Cc: chrisw, nickpiggin, linux-kernel, davej
Andrew Morton wrote:
>Nick Piggin <piggin@cyberone.com.au> wrote:
>
>>>>Ah, free_pages <= pages_high, ie. 0 <= 0, which is true;
>>>>
>> >> commence spinning.
>> >>
>> >
>> >Maybe. It requires that the zonelists be screwy:
>> >
>> > Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB
>> > protections[]: 0 0 0
>> > Node 1 Normal free:25272kB min:1020kB low:2040kB high:3060kB active:624172kB inactive:282700kB present:1047936kB
>> > protections[]: 0 0 0
>> > Node 1 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
>> > protections[]: 0 0 0
>> > Node 0 DMA free:728kB min:12kB low:24kB high:36kB active:788kB inactive:7848kB present:16384kB
>> > protections[]: 0 0 0
>> > Node 0 Normal free:27200kB min:1004kB low:2008kB high:3012kB active:332792kB inactive:422744kB present:1032188kB
>> > protections[]: 0 0 0
>> > Node 0 HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
>> > protections[]: 0 0 0
>> >
>> >See that DMA zone on node 1? Wonder how it got like that. It
>> >should not be inside pgdat->nrzones anyway.
>> >
>> >
>> Oh? Why not? I didn't think empty zones were filtered out?
>>
>
>That ininitialised zone should be outside pgdat->nr_zones, no?
>
>
>> (perhaps they should be).
>>
>
>They will be.
>
I don't think the DMA side will be skipped though? Because you're
always counting down from nr_zones... That would be what it is
what it is spinning on.
>
>Chris, do you have time to test this, against -linus?
>
>
I think my patch would be sufficient to handle the kswapd side
(yours would be valid too, but no need to add the extra checks).
>diff -puN mm/vmscan.c~vmscan-handle-empty-zones mm/vmscan.c
>--- 25/mm/vmscan.c~vmscan-handle-empty-zones 2004-10-07 19:10:52.844797784 -0700
>+++ 25-akpm/mm/vmscan.c 2004-10-07 19:11:49.804138648 -0700
>@@ -851,6 +851,9 @@ shrink_caches(struct zone **zones, struc
> for (i = 0; zones[i] != NULL; i++) {
> struct zone *zone = zones[i];
>
>+ if (zone->present_pages == 0)
>+ continue;
>+
> zone->temp_priority = sc->priority;
> if (zone->prev_priority > sc->priority)
> zone->prev_priority = sc->priority;
>
...but could probably use something like this as well, for the
direct reclaim side.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:54 ` Nick Piggin
@ 2004-10-08 4:48 ` Nick Piggin
2004-10-08 4:57 ` Andrew Morton
0 siblings, 1 reply; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 4:48 UTC (permalink / raw)
To: Nick Piggin; +Cc: Andrew Morton, chrisw, linux-kernel, davej
[-- Attachment #1: Type: text/plain, Size: 576 bytes --]
Nick Piggin wrote:
>
> I think my patch would be sufficient to handle the kswapd side
> (yours would be valid too, but no need to add the extra checks).
Here is the combined patch with Andrew's hunk added.
I guess it doesn't _really_ matter which gets tested, but this
one is probably the preferred way to go because it doesn't even
wake up kswapd for empty zones. Andrew, do you agree?
I guess it should get into -bk pretty soon if it passes testing.
It is fairly easy to see the failure cases that are fixed (and
hopefully it doesn't domino yet another latent bug :P).
[-- Attachment #2: vm-fix-empty-zones.patch --]
[-- Type: text/x-patch, Size: 1445 bytes --]
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
---
linux-2.6-npiggin/mm/vmscan.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff -puN mm/vmscan.c~vm-fix-empty-zones mm/vmscan.c
--- linux-2.6/mm/vmscan.c~vm-fix-empty-zones 2004-10-08 12:44:14.000000000 +1000
+++ linux-2.6-npiggin/mm/vmscan.c 2004-10-08 14:28:04.000000000 +1000
@@ -851,6 +851,9 @@ shrink_caches(struct zone **zones, struc
for (i = 0; zones[i] != NULL; i++) {
struct zone *zone = zones[i];
+ if (zone->present_pages == 0)
+ continue;
+
zone->temp_priority = sc->priority;
if (zone->prev_priority > sc->priority)
zone->prev_priority = sc->priority;
@@ -1003,7 +1006,7 @@ static int balance_pgdat(pg_data_t *pgda
priority != DEF_PRIORITY)
continue;
- if (zone->free_pages <= zone->pages_high) {
+ if (zone->free_pages < zone->pages_high) {
end_zone = i;
goto scan;
}
@@ -1035,7 +1038,7 @@ scan:
continue;
if (nr_pages == 0) { /* Not software suspend */
- if (zone->free_pages <= zone->pages_high)
+ if (zone->free_pages < zone->pages_high)
all_zones_ok = 0;
}
zone->temp_priority = priority;
@@ -1142,7 +1145,7 @@ static int kswapd(void *p)
*/
void wakeup_kswapd(struct zone *zone)
{
- if (zone->free_pages > zone->pages_low)
+ if (zone->free_pages >= zone->pages_low)
return;
if (!waitqueue_active(&zone->zone_pgdat->kswapd_wait))
return;
_
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 4:48 ` Nick Piggin
@ 2004-10-08 4:57 ` Andrew Morton
0 siblings, 0 replies; 24+ messages in thread
From: Andrew Morton @ 2004-10-08 4:57 UTC (permalink / raw)
To: Nick Piggin; +Cc: piggin, chrisw, linux-kernel, davej
Nick Piggin <nickpiggin@yahoo.com.au> wrote:
>
> - if (zone->free_pages <= zone->pages_high) {
> + if (zone->free_pages < zone->pages_high) {
This is too subtle. An open-coded test for non-zero ->present_pages is far
more readable and maintainable.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 3:30 ` Andrew Morton
2004-10-08 3:54 ` Nick Piggin
@ 2004-10-08 5:21 ` Chris Wright
2004-10-08 5:27 ` Chris Wright
2004-10-08 10:10 ` Nick Piggin
1 sibling, 2 replies; 24+ messages in thread
From: Chris Wright @ 2004-10-08 5:21 UTC (permalink / raw)
To: Andrew Morton; +Cc: Nick Piggin, chrisw, nickpiggin, linux-kernel, davej
* Andrew Morton (akpm@osdl.org) wrote:
> Chris, do you have time to test this, against -linus?
Yeah. This patch held up against the simple testing, as did Nick's (not
the most recent combined one from him).
Here's some sample output from annotation I added:
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1013: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
balance_pgdat:1050: zone->DMA present_pages == 0
thanks,
-chris
--
Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 5:21 ` Chris Wright
@ 2004-10-08 5:27 ` Chris Wright
2004-10-08 10:10 ` Nick Piggin
1 sibling, 0 replies; 24+ messages in thread
From: Chris Wright @ 2004-10-08 5:27 UTC (permalink / raw)
To: Chris Wright; +Cc: Andrew Morton, Nick Piggin, nickpiggin, linux-kernel, davej
* Chris Wright (chrisw@osdl.org) wrote:
> * Andrew Morton (akpm@osdl.org) wrote:
> > Chris, do you have time to test this, against -linus?
>
> Yeah. This patch held up against the simple testing, as did Nick's (not
> the most recent combined one from him).
err, meaning: I have not tested Nick's most recent combined patch.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: kswapd in tight loop 2.6.9-rc3-bk-recent
2004-10-08 5:21 ` Chris Wright
2004-10-08 5:27 ` Chris Wright
@ 2004-10-08 10:10 ` Nick Piggin
1 sibling, 0 replies; 24+ messages in thread
From: Nick Piggin @ 2004-10-08 10:10 UTC (permalink / raw)
To: Chris Wright; +Cc: Andrew Morton, Nick Piggin, linux-kernel, davej
Chris Wright wrote:
> * Andrew Morton (akpm@osdl.org) wrote:
>
>>Chris, do you have time to test this, against -linus?
>
>
> Yeah. This patch held up against the simple testing, as did Nick's (not
> the most recent combined one from him).
>
Thanks. Any/all patches should do much the same job.
I'm pretty confident this was just a minor artifact brought out
by an earlier change, and things still look good for 2.6.9.
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2004-10-08 10:12 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-07 21:20 kswapd in tight loop 2.6.9-rc3-bk-recent Chris Wright
2004-10-07 21:39 ` Dave Jones
2004-10-07 21:49 ` Chris Wright
2004-10-07 23:40 ` Andrew Morton
2004-10-08 0:34 ` Nick Piggin
2004-10-08 0:37 ` Andrew Morton
2004-10-08 0:51 ` Chris Wright
2004-10-08 1:40 ` Andrew Morton
2004-10-08 0:42 ` Andrew Morton
2004-10-08 1:41 ` Chris Wright
2004-10-08 1:51 ` Chris Wright
2004-10-08 1:53 ` Andrew Morton
2004-10-08 2:46 ` Nick Piggin
2004-10-08 3:01 ` Andrew Morton
2004-10-08 3:13 ` Nick Piggin
2004-10-08 3:30 ` Andrew Morton
2004-10-08 3:54 ` Nick Piggin
2004-10-08 4:48 ` Nick Piggin
2004-10-08 4:57 ` Andrew Morton
2004-10-08 5:21 ` Chris Wright
2004-10-08 5:27 ` Chris Wright
2004-10-08 10:10 ` Nick Piggin
2004-10-08 3:15 ` Nick Piggin
2004-10-08 3:05 ` Chris Wright
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox