The limit of kernel memory in 64bit system
Hi, everyone As far as I know, the kernel memory limit is 1GB in 32bit system. Is it also applicable to 64bit system? What's the limit of kernel memory in 64bit system? Thanks in advance Regards, J.Hwan Kim
On Sat, Nov 29, 2014 at 12:25:43AM +0900, J.Hwan Kim wrote:
Hi, everyone
As far as I know, the kernel memory limit is 1GB in 32bit system. Is it also applicable to 64bit system? What's the limit of kernel memory in 64bit system?
There is no limit :) What do you really want to know this for? greg k-h
J.Hwan, There is a limit as 64 bit can only support 16 extabytes. Greg is right in that there is no real limit on modern machines because of this. However from my knowledge, system ram is split into a 3 to 1 ratio, where 75 percent is for user space and the only quarter is for the kernel's memory. So on my system with 8 GB of ram, the kernel can use up to 25 percent or 2 GB of ram. Hope this answers your question, Nick On 2014-11-29 12:45 PM, Greg KH wrote:
On Sat, Nov 29, 2014 at 12:25:43AM +0900, J.Hwan Kim wrote:
Hi, everyone
As far as I know, the kernel memory limit is 1GB in 32bit system. Is it also applicable to 64bit system? What's the limit of kernel memory in 64bit system?
There is no limit :)
What do you really want to know this for?
greg k-h
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Incorrect. The 64 bit machine theoretically supports 2 ^ 64 bytes virtual memory space but on x86 only 48 out of 64 address buses are used. So we cannot assume the upper limit of physical space.on different platforms. And Nick you're confusing with the physical and virtual memory. The usage of memory for kernel space is not determined by the ratio. It's defined by mapping strategy. You first need to know why this 3 to 1 was used. It's because we cannot map all the physical pages onto the corresponding virtual address since we need to spare some linear space for user program. But on 64 bits platform we have plenty virtual address for the programmer as the physical memory is much much smaller than it. On x86_64 we divide kernel/user space by setting all the first 16 bits with 0 or 1 as the user or kernel space respectfully. So how large would the kernel space be if we could use 48-bit linear space? On Sat, Nov 29, 2014 at 8:16 PM, nick <xerofoify@gmail.com> wrote:
J.Hwan, There is a limit as 64 bit can only support 16 extabytes. Greg is right in that there is no real limit on modern machines because of this. However from my knowledge, system ram is split into a 3 to 1 ratio, where 75 percent is for user space and the only quarter is for the kernel's memory. So on my system with 8 GB of ram, the kernel can use up to 25 percent or 2 GB of ram. Hope this answers your question, Nick On 2014-11-29 12:45 PM, Greg KH wrote:
On Sat, Nov 29, 2014 at 12:25:43AM +0900, J.Hwan Kim wrote:
Hi, everyone
As far as I know, the kernel memory limit is 1GB in 32bit system. Is it also applicable to 64bit system? What's the limit of kernel memory in 64bit system?
There is no limit :)
What do you really want to know this for?
greg k-h
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Best regards Chen, Yiqun
Sorry Yiqun, I was thinking of virtual memory so you are correct. I also haven't looked into the kernel memory subsystem(s) in a while so I may be a little behind in my knownledge of them. Regards Nick On 2014-11-29 03:54 PM, Yiqun Chen wrote:
Incorrect. The 64 bit machine theoretically supports 2 ^ 64 bytes virtual memory space but on x86 only 48 out of 64 address buses are used. So we cannot assume the upper limit of physical space.on different platforms. And Nick you're confusing with the physical and virtual memory. The usage of memory for kernel space is not determined by the ratio. It's defined by mapping strategy. You first need to know why this 3 to 1 was used. It's because we cannot map all the physical pages onto the corresponding virtual address since we need to spare some linear space for user program. But on 64 bits platform we have plenty virtual address for the programmer as the physical memory is much much smaller than it. On x86_64 we divide kernel/user space by setting all the first 16 bits with 0 or 1 as the user or kernel space respectfully. So how large would the kernel space be if we could use 48-bit linear space?
On Sat, Nov 29, 2014 at 8:16 PM, nick <xerofoify@gmail.com> wrote:
J.Hwan, There is a limit as 64 bit can only support 16 extabytes. Greg is right in that there is no real limit on modern machines because of this. However from my knowledge, system ram is split into a 3 to 1 ratio, where 75 percent is for user space and the only quarter is for the kernel's memory. So on my system with 8 GB of ram, the kernel can use up to 25 percent or 2 GB of ram. Hope this answers your question, Nick On 2014-11-29 12:45 PM, Greg KH wrote:
On Sat, Nov 29, 2014 at 12:25:43AM +0900, J.Hwan Kim wrote:
Hi, everyone
As far as I know, the kernel memory limit is 1GB in 32bit system. Is it also applicable to 64bit system? What's the limit of kernel memory in 64bit system?
There is no limit :)
What do you really want to know this for?
greg k-h
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Sat, 29 Nov 2014, nick wrote:
Sorry Yiqun, I was thinking of virtual memory so you are correct. I also haven't looked into the kernel memory subsystem(s) in a while so I may be a little behind in my knownledge of them. 2^1 The amount of memory that can be handled by a processor is available via /proc/cpuinfo:
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz stepping : 3 microcode : 0x16 cpu MHz : 3400.132 cache size : 8192 KB clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual so this processor support a physical memory space of 2^39 = 512GB and a virtual address space of 256 TB. A 64 bit kernel can support what the processor supports.
participants (5)
-
Christoph Lameter -
Greg KH -
J.Hwan Kim -
nick -
Yiqun Chen