lkml.org 
[lkml]   [2004]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Hang on x86-64, 2.6.9-rc3-bk4
Jeff Garzik wrote:

> Free pages: 2264kB (0kB HighMem)
> Active:31606 inactive:78376 dirty:12 writeback:0 unstable:0 free:566 slab:16353 mapped:31544 pagetables:121
> DMA free:80kB min:20kB low:40kB high:60kB active:0kB inactive:0kB present:16384kB
> protections[]: 0 0 0
> Normal free:2184kB min:700kB low:1400kB high:2100kB active:126424kB inactive:313504kB present:507840kB
> protections[]: 0 0 0
> HighMem free:0kB min:128kB low:256kB high:384kB active:0kB inactive:0kB present:0kB
> protections[]: 0 0 0
> DMA: 10*4kB 1*8kB 0*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 80kB
> Normal: 8*4kB 31*8kB 11*16kB 10*32kB 4*64kB 1*128kB 0*256kB 0*512kB 1*1024kB 0*2048kB 0*4096kB = 2184kB
> HighMem: empty
> Swap cache: add 1976, delete 1938, find 120/152, race 0+0
> Free swap: 2041740kB
> 131056 pages of RAM
> 3391 reserved pages
> 79434 pages shared
> 38 pages swap cached

No LRU pages in ZONE_DMA. Lots of crap stops working in these sorts of
corner cases. I have (unfortunately?) been fairly good at exposing these
latent bugs.

Can you try this patch. It A fixes the (rare) possibility that DMA might
have reclaimable slab (this shouldn't affect you); and B fixes
all_unreclaimable to at least have a hope of working when there are no
LRU pages.

Thanks.



---

linux-2.6-npiggin/mm/vmscan.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff -puN mm/vmscan.c~vm-fix mm/vmscan.c
--- linux-2.6/mm/vmscan.c~vm-fix 2004-10-17 11:14:02.000000000 +1000
+++ linux-2.6-npiggin/mm/vmscan.c 2004-10-17 11:20:55.000000000 +1000
@@ -181,7 +181,7 @@ static int shrink_slab(unsigned long sca
struct shrinker *shrinker;

if (scanned == 0)
- return 0;
+ scanned = 1;

if (!down_read_trylock(&shrinker_rwsem))
return 0;
@@ -1065,7 +1065,8 @@ scan:
total_reclaimed += sc.nr_reclaimed;
if (zone->all_unreclaimable)
continue;
- if (zone->pages_scanned > zone->present_pages * 2)
+ if (zone->pages_scanned > (zone->nr_active +
+ zone->nr_inactive) * 4)
zone->all_unreclaimable = 1;
/*
* If we've done a decent amount of scanning and
_
\
 
 \ /
  Last update: 2005-03-22 14:07    [W:0.247 / U:0.124 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site