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