티스토리 뷰

반응형

운영체제에서 메모리를 사용에 따라서 물리적인 메모리만 사용하고 있습니다. 그래서 메모리 용량의 한계로 부족현상이 발생되어 특정 프로세서의 처리 속도가 떨어지거나 죽을 수 있습니다. 이 경우에 하드 디스크의 일부를 사용해서 부족현상이 보완 하게 됩니다. 이렇게 사용하는 것을 가상 메모리 영역입니다.

아래의 설명은 리눅스 메모리 부족 또는 리눅스 swap 메모리 부족 문제를 해결하는 방법에 대한 설명입니다. 리눅스에서 메모리 용량이 부족한 경우 리눅스 swap 파티션을 사용하게 됩니다. 하지만 swap 파티션 또한 용량이 부족할 경우 프로그램 실행이 되지 않거나 out of memory 문제 또는 Cannot allocate memory 등의 문제가 발생할 수 있습니다. swap 파티션 용량을 조절 할 수도 있지만 여기서는 간단하게 리눅스 swap 파일 추가하여 리눅스 메모리 현상을 해결토록 하겠습니다.


메모리 용량 및 swap 확인


시스템에서 빌드 또는 프로그램 설치 및 실행하는 과정에서 물리 메모리나 swap 용량이 충분하지 않을 수 있습니다. 그럴때 얼마나 사용하고 있는지 알아야 합니다.


sudo swapon -s


명령어를 사용하면


Filename Type Size Used Priority

/var/swapfile                           file 2097148 0 -1


위와 같이 뜨면 사용하고 있으면 만일 위와 같이 없으면 사용하고 있지 않습니다.  /var/swapfile 는 만든 위치마다 다를 수 있습니다.


x 파일 만들기


메모리 부족 문제가 발생했을 경우, 가장 좋은 방법은 물리적으로 메모리를 추가하는 것입니다. 하지만 물리적으로 추가하지 않는 방법으로는 swap 파티션을 생성하거나 용량을 늘이는 방법으로 해결할 수 있습니다. swap 파티션을 추가하거나 이미 있다면 크기를 조절할 수 있습니다. 여기서는 추가하는 방법으로 해보겠습니다.


# sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048


위 명령어는 2G 정도의 공간을 만드는 내용이며 위치는 자신에 맞게 설정할 수 있습니다.


# sudo mkswap /var/swapfile


swap 파티션을 만ems 것을 파일시스템으로 format을 합니다.


환경설정


Booting 시 자동으로 적용되게끔 만드어야 합니다. 재부팅이 되면 swap 파일이 적용되지 않습니다. 따라서 /etc/fstab 파일을 수정하여 부팅시에 자동으로 swap 파일을 사용하도록 설정해야 합니다.


# vi /etc/fstab


명령어를 통해서 내용을 추가해야 합니다. 추가할 내용은 


/var/swapfile none swap sw 0 0


이상 기본적인 셋팅은 끝났습니다.


바로 적용하기


하지만 방금 추가한 것을 적용하기 위해서 시스템을 재부팅해도 되지만 재부팅하지 않고 바로 적용하고 싶은 경우가 있을 것입니다. 


# sudo swapon /var/swapfile


우와 같은 명령어로 바로 적용할 수 있습니다. 적용된 것을 확인 하는 방법은 sudo swapon -s 입니다.



참고 메모리 보기 명령어


# free

             total       used       free     shared    buffers     cached

Mem:       1922212    1738296     183916        756      34812     475756

-/+ buffers/cache:    1227728     694484 

Swap:      2097148          0    2097148 


# top -n1 | grep Mem:

Mem:   1922212k total,  1739212k used,   183000k free,    35252k buffers



# cat /proc/meminfo | grep Mem

MemTotal:        1922212 kB

MemFree:          183052 kB


# ps -ef --sort -rss

UID        PID  PPID  C STIME TTY          TIME CMD

mysql     7539  7372  0 11:16 ?        00:00:22 mysqld

--- 생략 ---



# ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11

USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME CMD

mysql     7539  7372 546356 1507300 1547112 28.4 0.2 00:00:22 mysqld

root     14443     1 487840 512444 523792 25.3 0.0 01:25:37 redis-server.conf

--- 생략 ---





728x90
반응형
댓글