linux-linaro pull request
Nicolas Pitre
nicolas.pitre at linaro.org
Sun Sep 19 01:58:36 UTC 2010
On Fri, 17 Sep 2010, Christian Robottom Reis wrote:
> On Thu, Sep 16, 2010 at 06:28:03PM -0600, John Rigby wrote:
> > LINARO: [Config] Turn on CONFIG_HIGHMEM for vexpress
>
> Hello there,
>
> Question: in general, why would we use CONFIG_HIGHMEM instead of
> changing the kernel/userspace memory split?
Changing the memory split might affect some applications that expect a
large address space. For example, if an application is making heavy
usage of mmap(), either to map files into memory, or to map some
hardware like a framebuffer, then it might run out of virtual space.
Ironically the reported error in that case would be "out of memory" even
if not all the physical memory is exhausted, while a system with less
RAM but a standard user:kernel split would allow such applications to
work properly. The first case might occur with gcc when compiling, or
more likely when linking, large applications. A full "git repack" on a
large repository is also likely to get less efficient (it can scale its
vm usage down but with some performance penalty). The second case can
be seen with the X server and high end graphic cards on X86 for example
(no idea if that would be the case on current ARM graphic hardware).
Yet, highmem carries some small overhead of its own. So if you know
that all the applications you need have a workset that always fits in a
reduced address space then it is more advantageous to use a 2G:2G
user:kernel split and keep highmem off.
Of course, if the system has 3G of RAM or more (think LPAE) then you
don't have much choice but to use highmem.
Nicolas
More information about the kernel-team
mailing list