Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
As per my understanding, RHEL AS 4 includes a kernel known as the hugemem kernel. This kernel supports a 4GB per-process user space (versus 3GB for the other kernels), and a 4GB direct kernel space. Using this kernel allows Red Hat Enterprise Linux to run on systems with up to 64GB of main memory. The hugemem kernel is required in order to use all the memory in system configurations containing more than 16GB of memory.
So if we need to use/have more than 16 Gigs of memory on a 32-Bit system then we would have to make use of hugemem kernel and on a 64-Bit system, hugemem kernel doesn't apply at all.
As per my understanding, RHEL AS 4 includes a kernel known as the hugemem kernel. This kernel supports a 4GB per-process user space
Have you any URL for whatever you read to give you that "understanding"?
A full 4GB per-process user space with a 32 bit kernel sounds very unlikely. That would involve major changes to the design of Linux.
Quote:
The hugemem kernel is required in order to use all the memory in system configurations containing more than 16GB of memory.
That sounds less strange, but still not very likely.
Quote:
on a 64-Bit system, hugemem kernel doesn't apply at all.
That is my understanding. With a 64-bit kernel, a 32-bit application gets a full 4GB user address space and a 64-bit application gets much more than that.
I don't know the top physical memory size for an ordinary 64-bit kernel, nor whether there are any kernel build options to increase that. I haven't heard of any.
Are you referring to the PAE kernel? I have used it on CentOS to access 4GB of RAM, something that simple 32 bit can't do. I am not sure, though, whether PAE actually increases the maximum per process. On most operating system, it does not.
ISTR hugemem was just a (Redhat) name for a kernel with HIGHMEM64G (thus PAE) support enabled. So yes, it's a 32-bit kernel with full supprt for architected RAM limits. Depends on the motherboard, but 64 Gig is the limit.
The address space addressing range is unchanged at 4 Gig, althought the boundary between kernel- and user-space may be changed - this is a general "feature", not specific to hugemem.
This is the part that the PAE fans always like to forget:
Quote:
Note
To provide a 4GB address space for both kernel and user space, the kernel must maintain two separate virtual memory address mappings. This introduces overhead when transferring from user to kernel space; for example, in the case of system calls and interrupts. The impact of this overhead on overall performance is highly application dependent.
and is one of the major reasons I switched to 64bit.
This is the part that the PAE fans always like to forget:
and is one of the major reasons I switched to 64bit.
I didn't know that 4GB user space option even existed. After a bunch of searches, I still don't know what turns it on when configuring the kernel. (But lots of sources agreed with the top post of this thread, that at least in Red Hat pre built 32-bit kernels the choice of 4GB user space is bundled with support for over 16GB physical).
None of the 32-bit PAE Linux kernels I've used had 4GB user space. I didn't compile nor install any of those kernels, so I don't know what choices were made.
PAE itself shouldn't have a noticeable performance impact, nor all the incompatibility issues that are sometimes mentioned.
4GB user space in a 32-bit kernel might be an interesting feature if you're stuck with a non 64-bit CPU. But it sounds like a really lame choice if you could select a 64-bit kernel instead.
You need PAE to get over three point something GB of physical ram. The pages I found while searching "hugemem" describe the option to support up to 16GB (which requires PAE) without getting the 4GB user space.
There is no hardware reason to associate going over 16GB physical ram with supporting 4GB user space, but obviously some of the kernel data structures get bigger as you support more ram. It is reasonable (though I don't know whether it is fact) that supporting over 16GB physical required kernel data structures that weren't practical in the usual 3GB/1GB split of user/kernel address space. Providing separate 4GB address spaces for user and kernel would solve that, at the cost of some performance and doing things enough differently from usual Linux to likely cause some incompatibilities.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.