0

It could be off topic but i just want to know if we have 64 bit Linux OS with 94GB memory and we have legacy application written in 32 bit so does my 32bit application will use 94GB memory or it will be limited to 4GB?

How about if i install hugemem or bigmem kernel, will it solve issue?

Satish
  • 16,544
  • 29
  • 93
  • 149
  • If I remember correctly it's called `highmem`. Seems you have to build your kernel with `CONFIG_HIGHMEM64G`. Be aware about DMA, you might need to enable bounce buffers. – 0andriy Aug 13 '15 at 18:42

1 Answers1

2

A 32-bit application by definition uses 32-bit (virtual) memory addresses, which are limited to 2^32 (4GB) possible memory locations. In reality, you're likely to get only 2GB or 3GB user-land memory in a 32-bit application under 32-bit Linux, because of how Linux sets up your process map (the kernel is mapped into the other 1GB or 2GB, depending on options specified in the build of the kernel and core libraries your system is running). On 64-bit Linux, process memory is laid out a bit differently, so you can actually get just less than 4GB (see here for more info). If you need more memory than that, you'll need to compile as a 64-bit application.

Community
  • 1
  • 1
twalberg
  • 59,951
  • 11
  • 89
  • 84
  • I think you might be interested to find out what PAE and HIGHMEM stand for. – 0andriy Aug 13 '15 at 18:45
  • @AndyShevchenko PAE and HIGHMEM apply to the OS kernel running on the system. Each individual process is still limited to a 4GB virtual memory address space. – twalberg Aug 16 '15 at 22:01