RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

리눅스의 swap 메모리에 대해서 이해한다.

 

본론

만약 어플리케이션의 RAM 용량이 차면, swap 메모리가 자동으로 늘어나도록 되어 있다. 하드디스크의 디스크를 swap 메모리로 만들기 때문에 속도가 느려진다. 또한 RAM의 용량보다 2배로 swap 메모리를 잡도록 되어 있다. (참조 : http://vr.org/docs/centos/4/html/rhel-sag-en-4/ch-swapspace.html) 시스템 엔지니어는 이런 이슈로 리눅스 서버를 셋팅할 때 swap 영역을 얼마나 잡을지 판단해야 한다. 때로는 개발자가 이 부분을 고쳐 성능을 향상 시킬 수 있다. (참고 : https://wiki.archlinux.org/index.php/Swap)


개인적으로는 메모리가 갑자기 부족한 경우를 제외하고는 swap 자체를 안쓰는 것을 선호한다. 성능상 swap 메모리를 쓰는 것보다 swap in , swap out이 성능을 무너뜨리는 것을 많이 봐왔다. 또한 너무 크게 사용하는 것도 경계한다. (난 보수적인 사람이 되었나 보다… 아직 적절히 활용한 대용량 처리 사례를 못해봐서 그런지도 모르겠다. ) 차라리 RAM 하나 더 꽂는게 더 나은 것 같다. 

하지만 DB나, 오픈 소스 대용량 처리 어플리케이션의 경우에서는 swap을 많이 활용하려고 하고 있다는 사실이다. 어떻게 하든 속도를 내기 위해서 메모리에서 처리하려다 보니 swap을 쓸 수 밖에 없는 구조로 가고, 너무 많이 써서 문제가 되니 다시 mlock으로 막는 구조로 가는 부분으로 처리하는 형태로 가고 있다.

 

1. swap 및 ram 메모리 상태 보기

free 명령어를 이용해서 간단히 살펴볼 수 있다.

# free
              total       used       free     shared    buffers     cached
 Mem:       4150252    3991868     158384          0      78504    2265916
 -/+ buffers/cache:    1647448    2502804
 Swap:      2096472        208    2096264

 

2. Swap 메모리 설정하는 방법

리눅스 커널 2.6부터 swap 메모리를 설정할 수 있다. swap 영역은 dd 명령어와 mkswap 명령어를 이용해서 swap을 만들 수 있다. (http://www.artwork.com/gdsii/qckvu/faq/linux_swap.htm) 이렇게 만들어진 영역은 swap 메모리로 쓰고 있다는 뜻이다. 아래의 예는 swap을 2G 정도만 쓰고 있다는 것을 의미한다.

# cat /proc/swaps
 Filename                                Type            Size    Used    Priority
 /dev/cciss/c0d0p2                 partition       2096472    208        -1

 

3. Swap 메모리 사용 빈도 설정 방법

swap 메모리를 사용 빈도를 확인하는 방법은 vm.swappiness 정보를 보는 것이다. centos를 비롯한 일부 서버는 디폴트로 60으로 잡혀 있다.

]# sysctl vm.swappiness   (또는 cat /proc/sys/vm/swappiness 으로 확인 가능)
vm.swappiness = 60

vm.swapiness 정보는 커널 파라미터이며 swap 영역을 얼마나 더 보겠냐 (또는 회피하겠냐)는 의미를 가지고 있다. (kernel's preference (or avoidance) of swap space) 여기에 0의 값을 넣으면 swap을 최대한 쓰지 않겠다는 의미이다. 만약 100은 하드디스크의 swap영역을 최대한 활용하겠다는 의미이다.

제일 이슈는 swap 메모리가 많이 잡혀 있는 것보다 얼마나 사용하고 있는지를 측정하는 것이 좋다. free나 cat /proc/swaps 명령어를 이용해서 해결할 수 있다.

만약 swap 메모리를 쓰지 않으려면, vm.swappiness를 0으로 셋팅하면 된다.

/etc/sysctl.conf 에 ‘vm.swappiness=0 ‘ 설정을 추가하고, ‘echo 0 > /proc/sys/vm/swappiness ‘ 명령어를 이용해서 적용한다.


 * Reference

http://forums.gentoo.org/viewtopic.php?t=175419

5. Swappiness (2.6 kernels)
 Since 2.6, there has been a way to tune how much Linux favors swapping out to disk compared to shrinking the caches when memory gets full.

ghoti adds:
 When an application needs memory and all the RAM is fully occupied, the kernel has two ways to free some memory at its disposal: it can either reduce the disk cache in the RAM by eliminating the oldest data or it may swap some less used portions (pages) of programs out to the swap partition on disk.
 It is not easy to predict which method would be more efficient.
 The kernel makes a choice by roughly guessing the effectiveness of the two methods at a given instant, based on the recent history of activity.

Before the 2.6 kernels, the user had no possible means to influence the calculations and there could happen situations where the kernel often made the wrong choice, leading to thrashing and slow performance. The addition of swappiness in 2.6 changes this.

 


 

또한 vfs_cache_pressure 라는 값을 0으로 잡아, 커널의 cache를 빨리 날려줄 수 있도록 한다. linux에서는 어플에서 처리한 남는 메모리를 바로 free되지 않고 buffer cache에 남게 한다. 이를 이용하면 free memory를 더 확보할 수 있다.


 


4. swap in, swap out 확인하는 방법

sar 명령어를 이용하면 메모리 상태를 확인할 수 있다. 


]# sar -r -s 11:41:00
 Linux 2.6.9-78.ELsmp        

11시 41분 kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
 11시 42분   5932304  10700956     64.33    358820   1087040   2096280       192      0.01         0
 Average:    5932304  10700956     64.33    358820   1087040   2096280       192      0.01         0
 

 

sar 명령어의 –B 파라미터는 swapping 통계를 낸다.


]# sar -B 2 5
 Linux 2.6.9-78.ELsmp

11시 41분 28초  pgpgin/s pgpgout/s   fault/s  majflt/s
 11시 41분 30초      2.04     75.51     21.43      0.00
 11시 41분 32초      0.00      0.00    359.49      0.00
 11시 41분 34초      0.00    258.46     19.49      0.00
 

 

5. 이슈

jvm 영역에서 사용된 메모리는 언제나 swap 영역으로 이동될 수 있다. 
jvm 에서 nio를 사용하는 경우 (예, DirectBuffer) 에는 리눅스 운영체제가 언제든지 swap 영역으로 이동할 수 있다. 이를 방지하기 위해서는 mlock/mlockall 시스템 콜을 이용해서 특정 virtual address를 ram 에 묶어 둘 수 있게 한다. 

mlock을 쓰는 방식이 cassandra 0.6.5 에서 추가되었다.

 

마치며..

리눅스의 swap 메모리를 이해할 수 있었다. jvm을 사용하면서 나타날 수 있는 swap 메모리 이슈에 대해서 쉽게 처리할 수 있도록 공부하자.

cassandra의 swap 이슈 에 대한 분석을 좀 더 이해하려고 한다.

2014/08/04 17:47 2014/08/04 17:47
http://zosel.net/trackback/152
from.wholsale nike nfl jerseys  2015/11/11 16:30
What is my IP address - determine or retrieve my IP address
from.cheap nike nfl jersyes  2015/11/11 20:19
What is my IP address - determine or retrieve my IP address
from.louis vuitton salg  2015/11/12 07:31
What is my IP address - determine or retrieve my IP address
from.Ugg Store Milano  2015/11/12 10:25
discount mens nike air max
from.Ugg Donna  2015/11/12 15:44
bright pink nike free runs
from.Ugg Sito Ufficiale Italia  2015/11/12 21:34
where to buy mcm online
from.Stivale Ugg  2015/11/13 05:09
new nike free 2014
from.Ugg Classic Tall  2015/11/13 05:44
nike free run customize
from.Vendita Online Ugg  2015/11/13 06:15
cheap nike free runs 4.0
from.Shop Online Ugg  2015/11/13 07:08
nike fre
from.Scarpe Ugg Milano  2015/11/13 07:08
nike air light
from.Misure Ugg  2015/11/13 10:18
nike trainers custom
from.Stivali Ugg Online  2015/11/13 11:27
nike air max thea sneaker women
from.Ugg Inverno 2013  2015/11/13 21:12
nike free run womens 3
from.Vendita Ugg Online  2015/11/15 03:53
cheap nike running shoes
from.Foto Ugg  2015/11/15 10:22
nike free sneakers
from.Ugg Fucsia  2015/11/15 17:50
nike sneakers 2013
from.Ugg Pelle  2015/11/15 18:11
finish line nike air max
from.Stivali Ugg Prezzi  2015/11/15 19:03
tiffany blue nike free run
from.Ugg Pantofole  2015/11/15 22:52
mcm latest bag
from.Stivali Ugg Grigi  2015/11/16 06:49
nike air max buy online
from.Ugg In Sconto  2015/11/16 09:11
mcm electronics reviews
from.nike air griffey max  2015/11/17 01:43
http://www.cdad-gironde.justice.fr/black/running-nike-free-5.0.php running nike free 5.0
from.nike roshe run camo femme  2015/11/17 23:45
http://www.echoppemetiersdart.com/max/nike-roshe-run-amazon-red.php nike roshe run amazon red
from.Ugg Modelli 2013  2015/11/17 23:47
nike free run 4 women
from.Immagini Ugg-boots  2015/11/18 05:46
mens nike sneakers
from.Sito Ugg Italia  2015/11/18 06:24
nike 3 free run
from.Negozi Ugg  2015/11/18 11:29
nike air max 90 red
from.Offerte Stivali Ugg  2015/11/18 13:36
mcm white backpack
from.Ugg Vendita On Line  2015/11/18 19:37
womens nike free run 4
from.nike roshe run sale uk  2015/11/19 05:24
http://www.echoppemetiersdart.com/max/nike-roshe-run-hiking.php nike roshe run hiking
from.Brazilian Virgin Hair  2015/11/19 08:29
smashing to buying several Brazilian Virgin Hair.
ZOSEL:Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
Too much is as bad as too little...!! 자공(子貢)이 공자에게 "사(師:子張의 이름)와 상(商:子夏의 이름)은 어느 쪽이 어집니까?" 하고 묻자, 공자는 "사는 지나치고 상은 미치지 못한다"고 대답하였다. "그럼 사가 낫단 말씀입니까?" 하고 반문하자, 공자는 "지나친 것은 미치지 못한 것과 같다(過猶不及)"고 말하였다.
전체 (209)
리눅스시스템 (92)
윈도우시스템 (16)
프로그램 (7)
네트워크시스템 (7)
최근관심 (1)
«   2021/01   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
  1. Ugg Sito  2015
    Ugg Sito
  2. Ugg Online  2015
    Ugg Online
  3. Ugg Boots Outlet Italia  2015
    Ugg Boots Outlet Italia
  1. 2018/02 (1)
  2. 2017/03 (2)
  3. 2016/12 (2)