DBA가 되고 싶은 병아리

32비트리눅스에서 4기가이상메모리사용 본문

OS관련/Linux Study

32비트리눅스에서 4기가이상메모리사용

미스틱스 2012. 3. 3. 16:11
(참고1)
리눅스에서는 NUMA 아키텍쳐를 지원하면 16GB 든 64 GB 든 지원합니다.

속도가 좀 떨어지고 커널 크기가 커져서 문제지만요.

실제 보드에 꼽는 물리적인 메모리 용량의 한계는 보드마다 다릅니다.

메모리 뱅크가 몇 개인지, 바이오스가 지원하는지 등등...

최신의 64 bit 프로세서를 지원하는 메인보드들은 4 GB 영역에 대부분 장치

주소 대역인점을 고려하여, 4 GB 이상의 용량을 갖을 경우 Memory Hole 이라는

설정을 둡니다. 3.5 GB~ 4 GB 대역에 메모리를 할당하지 않고 4 GB 이상부터

메모리를 할당하는 것이지요. (이렇게 해서 장치 메모리 주소로 인해 겹치는

물리적 메모리의 용량을 확보하게 합니다.)

64 bit 컴퓨터를 사용하는데, 8 GB 메인메모리를 쓰고 있다면,

커널 컴파일 할 때 Large Memory Support 를 이용하여 64 GB 로 입력해 주시면 되겠습니다.

------------------------------------------------------
(참고2)
< Centos 5 32bit 에서 4G램이상 인식하게 하는법 >

centos 4.x 대에서 인식하던 4GB 램이 centos 5로 업그레이드 하면서
3GB 램만 인식되는 경우가 있습니다.

이 경우는 아래와 같이 32bit centos를 설치하는 경우는 3가지 커널로 설치가 되는데,
(1)과 같이 기본커널로 설치가 되어 최대 인식 메모리가 3GB RAM가 된 경우 입니다.

(1) the standard kernel (which can address up to about 3 GB RAM)
(2) the Physical Address Extension kernel (32-bit systems에서 36 bit까지 메모리 접근 영역을 확장한 커널)
(3) the xen kernel (가상서버 설치시)

참고로 현재 최신 버젼인 centos 5.4 버전에서는 
기본설치시 4GB 이상 램을 지원하도록 해당 커널이 자동 설치 됩니다.

만약에 centos 5.x 를 설치한 후 3GB 램까지만 인식된다면
위의 (2) 번과 같이 PAE(Physical Address Extension) 커널을 설치하면 됩니다.
이론적으로 PAE 커널을 설치하면 36bit 메모리 접근 영역이므로 64GB 까지 지원 된다고 볼 수 있습니다.

그러면 이제 PAE kernel 설치법을 알아 보도록 하겠습니다.

1. 설치하기전에 먼저 cpu가 pae를 지원해야 되므로 아래와 같이 확인합니다.

# cat /proc/cpuinfo | grep -i pae
pae..  ---> cpu정보에 pae 항목이 있다면 지원하는 cpu입니다.

참고로 pae는 pentium pro 이상 펜티엄 시리즈에서는 지원되는 기능이며
AMD등 펜티엄호환 프로세서에서도 지원함.
(단 400 MHz bus versions the Pentium M 시리즈는 pae 지원안함)

2. 현재 커널을 확인해 본다
# uname -r 
2.6.18-8.1.15 -> 만약 pae 버전이면 PAE문구가 표시되어 있음

3. kernel-PAE 정보확인
# yum info kernel-PAE 
Available Packages 
Name : kernel-PAE 
Summary: The Linux kernel compiled for PAE capable machines. 
Description: 
This package includes a version of the Linux kernel with support for up to 
64GB of high memory. It requires a CPU with Physical Address Extensions (PAE). 
The non-PAE kernel can only address up to 4GB of memory. 
Install the kernel-PAE package if your machine has more than 4GB of memory. 

4. cpu가 pae 기능을 지원하면 아래와 같이 yum으로 간단히 PAE 지원 커널을 설치한다.
# yum -y install kernel-PAE
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for kernel-PAE to pack into transaction set.
kernel-PAE-2.6.18-8.1.15. 100% |=========================| 207 kB    00:00
---> Package kernel-PAE.i686 0:2.6.18-8.1.15.el5 set to be installed
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 kernel-PAE              i686       2.6.18-8.1.15.el5  updates            12 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)         

Total download size: 12 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): kernel-PAE-2.6.18- 100% |=========================|  12 MB    00:12
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: kernel-PAE                   ######################### [1/1] 

Installed: kernel-PAE.i686 0:2.6.18-8.1.15.el5
Complete!

5. grub.conf파일을 수정하여 PAE커널로 부팅되게 설정한다.
# vi /boot/grub/grub.conf
default=0 <--- 이부분 수정(아래 순서가 0부터 이므로 0으로 한다)
timeout=5 
splashimage=(hd0,0)/grub/splash.xpm.gz 
hiddenmenu 
title CentOS (2.6.18-53.1.21.el5PAE) 
    root (hd0,0) 
    kernel /vmlinuz-2.6.18-53.1.21.el5PAE ro root=LABEL=/ 
    initrd /initrd-2.6.18-53.1.21.el5PAE.img 
title CentOS (2.6.18-53.1.21.el5) 
        root (hd0,0) 
        kernel /vmlinuz-2.6.18-53.1.21.el5 ro root=LABEL=/ 
        initrd /initrd-2.6.18-53.1.21.el5.img 


6. 재부팅한다.
# reboot

7. 부팅한 후 메모리 확인
# free (또는 cat /proc/meminfo)로 메모리 정보확인하면 4GB 모두 인식된것을 확인할 수 있다.
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 
Mem:  4147056k total,  148424k used,  3998632k free,    8508k buffers