Re: why choose 896MB to the start point of ZONE_HIGHMEM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hayfeng...


On Tue, Apr 6, 2010 at 21:37, hayfeng Lee <teklife.kernel@xxxxxxxxx> wrote:
> Why does linux choose 896MB to do a start point of ZONE_HIGHMEM and
> the end point of ZONE_NORMAL. Just for experience?
> What is the advantages?

In 32 bit x86 architecture, kernel are given 1 GiB address space,
while user space gets 3 GiB. This is known as 3:1 Virtual memory
split.

Within this 1 GiB address space, kernel could do direct mapping to
RAM. However, the upper 128 MiB are left out for vmalloc area and
other needs such as temporary mapping and so on. Therefore, you're
left with 1 GiB - 128 MiB = 896 MiB.

perhaps you could rise another question: why 3:1 vm split? why we left
128 MiB for vmalloc+another mapping? IMO this is simply a choice. In
the past ( and AFAIK the patch is still downloadable somewhere), you
can even have 4:4 VM split, thus giving even larger ZONE_NORMAL
theoritically. But this is not preferred, because processor has to do
almost complete TLB flush on every context between user-kernel space
and vice versa.

Does this clear your confusion?

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux