Bu Blogda Ara

2 Haziran 2011 Perşembe

Information about Red-Hat 32-bit kernels from Memory Management Perspective

Until today Red-Hat had support for 3 types of kernels no-smp,, smp (pae) and hugemem kernels. Of these 3 kernels hugemem kernel was released for Red-Hat 3 and 4 versions but dropped after that. I will explain the reason I found for that below but first of all lets try to understand the need for hugemem kernel. Lets look at the limitations of kernels:

NO-SMP kernels, memory space usage
* Generally 16MB DMA, 896MB low memory and rest is high memory.
* Max supported phy. memory is 4GB

1.0 GB Text/code
1.7 GB available process memory for mmap, malloc / address space
(e.g. usable by shared Pool)
0.3 GB Stack
1.0 GB Kernel space (all low memory + some portion of high memory)


SMP kernels, memory space usage is same as NO-SMP except that the total mem is increased upto

* Still 16MB DMA, 896MB low memory and rest is high memory.
* Max supported phy. memory is 64GB. Although 16GB is recommended; this is because kernel-space should know and hold reference for user-space resources and because of this when user-space usage increases over 16GB the kernel space's starts to consume all the low memory part thus OOM killer tries to kill user-space processes to free up space in the kernel space and the system can fall into a hang state finally.
* CPU's address extension and kernels pae support together provide more User space for the processes but kernel space and memory space partitioning

1.0 GB Text/code
1.7 GB available process memory for mmap, malloc / address space
(e.g. usable by shared Pool)
0.3 GB Stack
1.0 GB Kernel space


Hugemem kernels, memory space usage
* It is memtioned that low memory configuration changed but I could not find a definite number yet. As far as the kernel space increased upto 4GB 4 times larger than before low memory should also have been increased. If I can find a hugemem kernel installed I will cat /proc/meminfo
* Hugemem kernel support was introduced in RedHat 3-4 but droped later. This is because highmem patches were never accepted upstream. The guys in the Red Hat team assumed that 64bit architecture is wide spreading and the hugemem effort to cure the 32+4 bit architecture sickness should not be carried on.

1.0 GB Text/code
2.7 GB available process memory for mmap, malloc / address
space (e.g. usable by shared Pool)
0.3 GB Stack
4.0 GB Kernel


Conclusion:
So if you take a look at the official Red Hat Enterprise Linux Technology capabilities and limits page you will see that max phy memory support drops 16GB from 64GB for Redhat 5 and later on 32-bit architecture. You should remember that 64GB still possible for SMP PAE kernel but dangerous for consuming kernel resources and bringing the system in a hang state.


Remember that 64-bit arch treats all memory as low memory and memory limit is theoretically upto 8TB and practically 250GB-1TB for linux kernels. And I think its important to align the development strategies for 32-bit or 64-bit with RedHat teams strategic decisions; if you are developing software for this platform.

Hiç yorum yok:

Yorum Gönder