On Wed, Mar 5, 2014 at 12:39 AM, Jeff Haran <Jeff.Haran@xxxxxxxxxx> wrote: > > > > > From: kernelnewbies-bounces@xxxxxxxxxxxxxxxxx > [mailto:kernelnewbies-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of pramod gurav > Sent: Monday, March 03, 2014 11:33 PM > To: priyaranjan > Cc: kernelnewbies > Subject: Re: Linux MM : virtual memory address space > > > > > > > > On Mon, Mar 3, 2014 at 11:52 PM, priyaranjan <priyaranjan45678@xxxxxxxxx> > wrote: > > I was going through http://linux-mm.org/HighMemory > > > "Currently the 32 bit x86 architecture is the most popular type of computer. > In this architecture, traditionally the Linux kernel has split the 4GB of > virtual memory address space into 3GB for user programs and 1GB for the > kernel" > > > > What about 64-bit system? Where does the code lie in linux kernel for the > check? > > Is there any latest and updated memory management documentation for Linux > kernel? > > > > Regards, > > Priyaranjan > > > > > > Priyaranjan, > > > > As below link suggests: > > http://users.nccs.gov/~fwang2/linux/lk_addressing.txt > > > > Also read this blog written in chinese: > > > > http://adam8157.info/blog/2012/07/linux-x86-64-vm/ > > > > on 64 bit arch the virtual address space is huge (2 to thr power of 64). So > the overhead of translating the virtual addresses will be high. TO avoid > this only lower 48 bits are used to form virtual addresses. > > > > I believe this statement about only the lower 48 bits being used it not > correct. That would imply that the upper 16 bits of all virtual addresses on > x86_64 would be the same, which is clearly not the case since the upper 16 > bits of user space vas are all 0s yet the upper 16 bits of kernel space vas > are all 1s. > > > > Jeff Haran > > Hi Jeff, Just noticed a line in /proc/cpuinfo on my 64 bit linux Machine which is: --> address sizes : 36 bits physical, 48 bits virtual This should confirm the statement that, only lower 48 bits are used for virtual address space on a 64 it arch. And about upper 16 bits in kernel being 1s in the address range shown in the link, I think they are not correct. The writer of the blog has done some wrong manipulations. The user space addresses are correct. Kernel Space address raneg has to be: 0x0000800000000000 to 0x0000ffffffffffff. > > > > This virtual space will still be very large (256 TB) and hence the > user/kernel split is 1:1 (128TB:128TB). And as suggested in link it is very > unlikely that you will have such a huge RAM(more than 128TB) installed on > any machine there is no concept of HIGHMEM. > > > > Hope this clears the air a bit. > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > > > > -- > Thanks and Regards > Pramod -- Thanks and Regards Pramod _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies