2007-06-19 12:12:36

by Shaun Savage

[permalink] [raw]
Subject: How do you allocate huge pages.

Hi

I am trying to allocate very large memory within the kernel. I want to
start by allocating one huge (4M) page and using that as buffer space.

How do you do this?

shaun


2007-06-19 12:36:35

by Matthias Kaehlcke

[permalink] [raw]
Subject: Re: How do you allocate huge pages.

El Tue, Jun 19, 2007 at 05:07:30AM -0700 Shaun Savage ha dit:

> I am trying to allocate very large memory within the kernel. I want to
> start by allocating one huge (4M) page and using that as buffer space.

possibly vmalloc() is what you're looking for, if it isn't really a
*page* of 4M, what afaik is impossible with a standard kernel.

vmalloc() allocates virtually contiguous memory, as opposed to
kmalloc() which allocates physically contiguous memory.

--
Matthias Kaehlcke
Linux Application Developer
Barcelona

La libertad es como la ma?ana. Hay quienes esperan dormidos a que
llegue, pero hay quienes desvelan y caminan la noche para alcanzarla
(Subcomandante Marcos)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-

2007-06-20 07:32:28

by Jiri Slaby

[permalink] [raw]
Subject: Re: How do you allocate huge pages.

Matthias Kaehlcke napsal(a):
> El Tue, Jun 19, 2007 at 05:07:30AM -0700 Shaun Savage ha dit:
>
>> I am trying to allocate very large memory within the kernel. I want to
>> start by allocating one huge (4M) page and using that as buffer space.
>
> possibly vmalloc() is what you're looking for, if it isn't really a
> *page* of 4M, what afaik is impossible with a standard kernel.

sparc64 can have pages up to 4M in size. This changes nothing in the fact, that
you should use vmalloc for such big spaces. Esp. when you allocate it after some
time from boot, otherwise fragmentation disallows you to alloc physically
contiguous memory due to fragmentation.

regards,
--
http://www.fi.muni.cz/~xslaby/ Jiri Slaby
faculty of informatics, masaryk university, brno, cz
e-mail: jirislaby gmail com, gpg pubkey fingerprint:
B674 9967 0407 CE62 ACC8 22A0 32CC 55C3 39D4 7A7E