We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 17445

ISE - Maximizing memory utilization on a Linux operating system


Keywords: RAM, RedHat, DDR, byte, mem, PAR, resources

Currently, my Linux machine can allocate a maximum of only 3 GB of memory for an application. How can I maximize the amount of memory that a process might allocate and use without swapping?

(Disclaimer: Xilinx is not responsible for and will not support any issues created due to a recompile of the Linux kernel. For Linux support, please contact your Linux software vendor.)



Red Hat Enterprise Edition WS 3 can utilize the hugemem kernel to allocate 4 GB to each process.

More information can be found on the Red Hat support site:


A kernel rebuild can be attempted for Red Hat numbered releases:

NOTE: The following steps apply only to the specific kernel mentioned (2.4.7).

Background of System Parameters:
- The system parameter TASK_SIZE is the basic limit on the per-process address space available in user mode.
- TASK_SIZE is defined to be the same as PAGE_OFFSET in "include/asm-i386/processor.h."
- PAGE_OFFSET depends on __PAGE_OFFSET, which depends on PAGE_OFFSET_RAW in "include/asm-i386/page.h."
- PAGE_OFFSET_RAW is defined in "include/asm-i386/page_offset.h" according to the definitions of CONFIG_1GB, CONFIG_2GB, or CONFIG_3GB from "linux/config.h."

Steps for A Kernel Rebuild:
The kernel can be compiled from the existing source tree in "/usr/src/linux-2.4.7-10." Refer to the Linux support documentation for any questions. The steps required to rebuild the kernel are:
1. Unpack the sources (if necessary) and cd to the sources directory.
2. Edit "include/asm/page_offset.h" header to modify PAGE_OFFSET_RAW to the new value of 0xF0000000 (3.75GB).
3. Run "make clean." (Start with a clean slate.)
4. Run "make mrproper." (This performs additional clean-up, inside modules too.)
5. Run "make oldconfig." (This picks up the old configuration for i686 smp architecture.)
6. Run "make dep."
7. Run "make bzImage." (This makes the kernel in "arch/i386/boot.")
8. Run make modules. (This makes all kernel modules.)
9. Run "make modules_install." (This installs the modules in "/lib/modules/2.4.7-10custom.")
10. Copy the bzImage from "arch/i386/boot" to "/boot."
11. Configure GRUB to boot from "/boot" area kernel from Hard Disk.
12. Optionally, you can create a bootable floppy using "make bzdisk." (This creates a boot floppy disk.)

1. "linux/compile.h" not found.
Touch the "include/linux/vesion.h" file as "linux/compile.h" (which is generated at run time).

2. "/lib/modules/2.4.7-10custom/modules.dep" not found.
Perform a "modules_install," as the kernel requires this file while booting to look for modules dependency.

3. ypbind is not able to bind to NIS Domain.
This occurs when you compile only the kernel and not the modules. You must compile and install modules along with the core kernel.

4. Mount points do not work.
Because of the way in which mount points are set on Linux machines, they will not work with the new kernel as the name of the kernel is now changed to 2.4.7-10custom, and automounter looks for 2.4.7-10Linux. You must add links on the ypserver to make the automounts work.
AR# 17445
Date Created 06/13/2003
Last Updated 08/01/2007
Status Active
Type General Article