High-Memory Support

team bbl


On contemporary systems, the size of the virtual address space normally exceeds the size of the physical address space. However, the size of the physical address space increases roughly in line with Moore's Law, which states that every 18 months, the chip capacity doubles in size. In addition, the size of the virtual address space is platform-dependent and cannot easily be changed. This scenario represents a unique challenge to the Linux system as the size of physical memory approaches the size of the virtual address space; the identity mapped segment may no longer be large enough to map the entire physical address space. As an example, the IA-32 architecture defines an extension that supports a 36-bit physical address space, despite the fact that the virtual address space is limited to 32 bits. The problem is that the total physical address space cannot be directly described by the virtual address space.

The highmem Interface

Other operating systems, such as Solaris, face a similar challenge when running on certain platforms. The Linux system addresses this issue via the highmem interface. In Linux, high memory is defined as physical memory that cannot be addressed through the identity mapped segment. The highmem interface provides indirect access to this memory by dynamically mapping high-memory pages into a small portion of the kernel address space that is reserved for this purpose. This portion of the kernel address space is referred to as the kmap() segment. The kmap() interface maps the page frame specified by the argument page into the kmap segment. The argument has to be a pointer to the page frame descriptor of the page to be mapped. The routine returns the virtual address to which the page has been mapped. In the case where the kmap segment is saturated, the routine blocks until space becomes available. As a result, high memory cannot be utilized for code that cannot block execution for an indefinite amount of time, such as interrupt handlers. In summary, supporting high memory on a system results in extra overhead that should be avoided whenever possible. High-memory support is an optional component of the Linux kernel. For example, it is disabled on Linux IA-64 systems.

To use memory more efficiently, Linux provides paging and swapping. The following section discusses another way to protect resources when it comes to memory.

    team bbl



    Performance Tuning for Linux Servers
    Performance Tuning for Linux Servers
    ISBN: 0137136285
    EAN: 2147483647
    Year: 2006
    Pages: 254

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net