Re: questions on discontgmem.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marc,

2005/9/27, Marc Singer <[email protected]>:
> On Mon, Sep 26, 2005 at 09:57:10PM +0200, Franck wrote:
> > 2005/9/26, Marc Singer <[email protected]>:
> > > On Mon, Sep 26, 2005 at 08:46:34PM +0200, Franck wrote:
> > > > Hi,
> > > >
> > > > I'd like to use discontigmem to access several RAM memories on an _no_
> > > > NUMA embedded system. In that case, does a node  mean a single RAM
> > > > whose start address is very different from the others ?
> > >
> > > I don't know what you mean by this.  The difference between
> > > discontiguous memory and non-discontiguous [sic] memory is that, well,
> > > the latter is contiguous.  If you have 64MiB of RAM, it is addressed
> > > starting at a base address and all 64 MiB's of addresses following it
> > > are valid.
> > >
> > > Discontiguous memory means that that isn't true, there is more than
> > > one start address with gaps of addresses between them which are either
> > > invalid, or which are aliases of other addresses.
> > >
> >
> > yeah, I know what is discontiguous memory. What I'm trying to ask is:
> > in this case (discontiguous memory), the kernel seems to describe each
> > memory with a single node (cf alloc_page_node for instance). Unlike
> > for NUMA system where several memories can belong to the same node. Is
> > that correct ?
>
> I don't know what you mean by a 'memory'.  Are you talking about an
> IC?

yes I'm taking about IC. But each IC has a different start base
address with huge hole between each of them. For instance I have 2 RAM
mapped as shown below:

RAM1 -> physical address at 0x2000 0000, size = 32 Mo
RAM2 -> physical address at 0x3000 0000, size = 2 Mo

> performance characteristics of that access.  I write possibly because
> I've not worked with that attribute of discontigmem.
>

did you work on ARM discontig memory ?

> There is a potential misunderstanding in how discontigmem really
> works.  There may be a memory system which is truly discontiguous, but
> that uses a single node.  It is wasteful because the node tables are
> accessed as arrays, so non-existent pages require data structure space
> just as existent ones do.
>
> With discontigmem, we can use multiple nodes in order to cluster pages
> and eliminate unused array entries.  Assuming that this is *not* done
> for the sake of differing memory access times, the advantage is in
> saving node table space.  There are macros in the architecture/machine
> specific include files that create the mapping between physical
> addresses and nodes/pages.  At least, that's how ARM does it.
>

yes that what I understand. CONFIG_DISCONTIGMEM is used on UMA system
to avoid mem_map to blow up when using RAMs whose start base addresses
are separated with huge hole.

> > If so, how does the kernel select a node when allocating a page for a UMA ?
>
> Perhaps someone else can fill in that part.  I've been assuming that
> pages with equivalent access times are put in zones, on free-page
> lists and allocated as needed.  Nothing special is done with respect
> to the different discontigmem nodes.
>

hmm, not sure it works the way you described. I thought there were
nodes gathering several RAM whose start address are _contiguous_. Each
node has several zones (dma, normal and highmem). But I don't see how
allocation can be done using *all* nodes...

I found in "include/linux/gfp.h", for a UMA system:

               #define alloc_pages(gfp_mask, order) \
                            alloc_pages_node(numa_node_id(), gfp_mask, order)

and numa_node_id expands to 0 for a UP system.
Any Idea ?

Thanks
--
               Franck
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux