[prev in list] [next in list] [prev in thread] [next in thread] 

List:       uclinux-dev
Subject:    Re: [uClinux-dev] page_alloc2 mades blockdev inefficient?
From:       Changwoo Ryu <cwryu () debian ! org>
Date:       2002-11-28 5:23:09
[Download RAW message or body]

David McCullough Wrote:
...
> > READ 48 sectors from sector 0
> > READ 8 sectors from sector 8
> > READ 8 sectors from sector 16
> > READ 8 sectors from sector 24
> > READ 48 sectors from sector 32
> > READ 8 sectors from sector 40
> > ...
> > 
> > (number of sectors are different between different buffer sizes in
> > read())  Any idea why this inefficiency happens?
> 
> CONFIG_CONGIGUOUS_PAGE_ALLOC is slower than the normal kernel allocator by
> virtue of the way it searches for free memory.
> 
> If the IDE driver is allocating/freeing lots of memory blocks then
> page_alloc2 will slow it down,  it should not cause it to read and re-read
> lots of sectors.  Are you very low on memory ?   If so it could be forcing
> buffers/caches etc to be revoked. page_alloc2 is very agressive in finding
> free memory once you are starting to run out.  Much more so than the normal
> allocator.  Look for "find_free_memory" in the source of page_alloc2.c
> and add trace to it to see if it is getting called a lot,  it is very
> slow,

I don't understand why this happens but it does only when
I enable page_alloc2.  I have 16MB memory and most are not used 
by kernel or any apps.  I added trace to "find_some_memory" but it
got called a few times, before I ran the test app.

I just added trace in do_blkmem_request() and it has the same result.
This happens only when I use page_alloc2.

blkmem: requst nr_sectors=48, sector=0
blkmem: requst nr_sectors=8, sector=8
blkmem: requst nr_sectors=8, sector=16
blkmem: requst nr_sectors=8, sector=24
blkmem: requst nr_sectors=48, sector=32
blkmem: requst nr_sectors=8, sector=40
blkmem: requst nr_sectors=8, sector=48
blkmem: requst nr_sectors=8, sector=56
blkmem: requst nr_sectors=48, sector=64
blkmem: requst nr_sectors=8, sector=72
blkmem: requst nr_sectors=8, sector=80
blkmem: requst nr_sectors=8, sector=88
blkmem: requst nr_sectors=48, sector=96
blkmem: requst nr_sectors=8, sector=104
blkmem: requst nr_sectors=8, sector=112
blkmem: requst nr_sectors=8, sector=120

The test app just open()s the blkmem device and read 16KB
block 4 times


-- 
Changwoo Ryu <cwryu@debian.org>
Debian

_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic