이번에 서버에 메모리를 추가해주고 나서 알게된건데 커널옵션중 HIGHMEM옵션이
off로 되어있다면 메모리 용량이 896MB까지만 인식되고 사용가능하게 되더군요!
원인을 찾다가 커널로그 와 dmseg를 살펴보니 다음같은 메세지가 있었습니다.

kernel: Warning only 896MB will be used.
kernel: Use a HIGHMEM enabled kernel.
kernel: 896MB LOWMEM available.

두번째 라인에 해결책도 제시해 주고 있군요. emoticon

커널 컴파일시 HIGHMEM옵션이 off, 4GB, 64GB이렇게 있습니다만 1GB 미만에서 선택하는
옵션이 off더군요. 쉽게말해 0~1GB미만일때 옵션을 off로 하면 되겠습니다.
괜한 삽질로 인해 커널을 한번더 컴파일했군요 emoticon

정상적으로 정확한 옵션을 선택하고 커널을 컴파일했다면 다음과 같은 메세지를 남기게 됩니다.

시스템에 메모리가 1GB일때
kernel: 127MB HIGHMEM available.
kernel: 896MB LOWMEM available.

Kconfig에는 다음과 같이 설명되어 있습니다.

CONFIG_NOHIGHMEM:
Linux can use up to 64 Gigabytes of physical memory on x86 systems. However,
the address space of 32-bit x86 processors is only 4 Gigabytes large. That means that,
if you have a large amount of physical memory, not all of it can be "permanently mapped"
by the kernel. The physical memory that's not permanently mapped is called "high memory".
If you are compiling a kernel which will never run on a machine with more than 1 Gigabyte
total physical RAM, answer "off" here (default choice and suitable for most users).
This will result in a "3GB/1GB" split: 3GB are mapped so that each process sees a 3GB
virtual memory space and the remaining part of the 4GB virtual memory space is used
by the kernel to permanently map as much physical memory as possible.

If the machine has between 1 and 4 Gigabytes physical RAM, then answer "4GB" here.
If more than 4 Gigabytes is used then answer "64GB" here. This selection turns Intel PAE (Physical Address Extension) mode on.
PAE implements 3-level paging on IA32 processors. PAE is fully supported by Linux,
PAE mode is implemented on all recent Intel processors (Pentium Pro and better).
NOTE: If you say "64GB" here, then the kernel will not boot on CPUs that don't support PAE!

커널 컴파일시 HIGHMEM 옵션없이 1GB이상의 메모리를 사용하려면 아래링크의 글을
참고하시기 바랍니다.
http://kerneltrap.org/node/6067

관련 링크: http://kerneltrap.org/node/6067

+ Recent posts