Problem with OOM killer killing process even when there is plenty of RAM.

Greg KH greg at kroah.com
Wed Dec 7 15:11:08 EST 2011


On Thu, Dec 08, 2011 at 01:26:42AM +0530, mindentropy wrote:
> On Wednesday 07 Dec 2011 11:35:36 AM Greg KH wrote:
> > On Thu, Dec 08, 2011 at 12:36:43AM +0530, mindentropy wrote:
> > > On Thursday 08 Dec 2011 1:38:19 AM Mulyadi Santosa wrote:
> > > > On Wed, Dec 7, 2011 at 01:47, mindentropy <mindentropy at gmail.com> wrote:
> > > > > Hi,
> > > > > 
> > > > >  I am trying to allocate 512MB of RAM in my driver loaded as a
> > > > >  module,> > > 
> > > > > but the OOM killer starts killing all my processes. This machine
> > > > > has
> > > > > around 24GB RAM and is a 8 core Xeon. The RAM is allocated in
> > > > > page size chunks (i.e. 131072 chunks each of size PAGE_SIZE).
> > > > 
> > > > mind to tell us, how do you allocate memory? kmalloc?
> > > 
> > > Via kmalloc.
> > 
> > Please use the functions written to give you large memory chunks.  As
> > you are using a video-for-linux device, why not use the apis that this
> > framework provides you for this type of thing?
> > 
> 
> Yes V4L would be done next. There are some things being tried out, this being 
> a custom FPGA hence some controls being experimented.
> 
> As for the allocating in PAGE_SIZE chunks why am I running out of memory? 

The kernel doesn't like allocating such large sizes all at once.

> Can't it steal smaller chunks from the larger chunks? Just curious about the 
> reason.

Use vmalloc if you need/want larger chunks, kmalloc is not for that at
all.

greg k-h



More information about the Kernelnewbies mailing list