?
> > Yes, but there are still other dangerous usages of kmalloc and
> > __get_free_pages. (The most offending one is in select.c)
>
> Nothing dangeorus there. The -ac vm isnt triggering these cases.
Sorry, but it can be triggered by _ANY_ VM since buddy allocator was
introduced. You have no guarantee, that you find two or more consecutive
free pages. And if you don't, poll() fails.
> > not abort his operation when it happens. Instead - they are trying to make
> > high-order allocations fail less often :-/ How should random
> > Joe-driver-developer know, that kmalloc(4096) is safe and kmalloc(4097) is
> > not?
>
> 4096 is not safe - there is no safe size for a kmalloc, you can always run
> out of memory - deal with it.
This is not about running out of memory. It is about free space
fragmentation. Think this:
You have no swap.
Program allocates one file cache page, one anon page, one cache page, one
anon page and so on. The memory will look like:
cache page
anon page
cache page
anon page
cache page
anon page
etc.
Now some driver wants to allocate 4097 and it CAN'T. Even when there's
half memory free.
Mikulas
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/