segment alignment in AMD64

Alan Cox alan.l.cox at gmail.com
Mon Jun 29 01:05:12 UTC 2009


On Sun, Jun 28, 2009 at 6:42 PM, Sean P. Dew <freebsd.work at gmail.com> wrote:

> Hi,
>
> Why is a loadable segment aligned to 1 MB on AMD64 while the pagezie is
> still 4K for a user application. Is there anyway to change it back to 4K,
> It
> is not making sense to me is because if my file segment is around 400K, we
> are wasting 1 MB of virtual address space ( granted it is not a lot for
> X64).  I am trying to find out the reason. I am posting the readelf output
> of a .so. Any help is appreciated.
>

You'll find this question discussed in the mailing list archives on more
than one occasion.  Here is one such message:

http://lists.freebsd.org/pipermail/freebsd-amd64/2007-September/010260.html

To be a little more explicit, it is done to increase the likelihood that the
entire code segment of a large program can be mapped using 2 MB page
mappings.  Moreover, to be able to do so without wasting any physical memory
on padding.  Although we have the necessary 2 MB page support in the virtual
memory system, the kernel's image activator hasn't been modified to take
advantage of this.  Only a few programs with large code and data segments,
e.g., emacs, will benefit.

Regards,
Alan


More information about the freebsd-current mailing list