lkml.org 
[lkml]   [2008]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH][v2] fork_init: fix division by zero
On Thu, 11 Dec 2008 20:28:00 +0000
Al Viro <viro@ZenIV.linux.org.uk> wrote:

> On Thu, Dec 11, 2008 at 12:16:35PM -0800, Andrew Morton wrote:
> > > +#if (8 * THREAD_SIZE) > PAGE_SIZE
> > > max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
> > > +#else
> > > + max_threads = mempages * (PAGE_SIZE / (8 * THREAD_SIZE));
> > > +#endif
> >
> > The expression you've chosen here can be quite inacccurate, because
> > ((PAGE_SIZE / (8 * THREAD_SIZE)) is a small number. The way to
> > preserve accuracy is
> >
> > max_threads = (mempages * PAGE_SIZE) / (8 * THREAD_SIZE);
> >
> > so how about avoiding the nasty ifdefs and doing
>
> Are you sure?

No, not at all. It's all too hard. Which is why I'm looking for
simplification.

> Do they actually cross the page boundaries?

Some flavours of slab have at times done an order-1 allocation for
objects which would fit into an order-0 page (etc) if it looks like
that will be beneficial from a packing POV. I'm unsure whether that
still happens - I tried to get it stamped out for reliability reasons.



\
 
 \ /
  Last update: 2008-12-11 21:49    [W:0.069 / U:1.408 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site