리눅스에서 메모리 사용률이 안떨어지는 현상
사양은 DELL 6600 서버 입니다.
OS : RHEL AS4 설치하였습니다.
성능 테스트 중인데요
문제가 하나 있습니다.
oracle 설치해서 DB insert 하고 이런저런 테스트 해봤는데요
메모리 사용률이 안떨어집니다.
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 3 0 861216 21840 1077960 0 0 0 592 1640 88 2 0 48 50
2 0 0 755616 22108 1185072 0 0 4 12732 1835 2262 25 12 49 15
0 2 0 699168 22160 1237020 0 0 4 106956 1666 310 13 13 56 17
1 2 0 699744 22176 1237264 0 0 0 3340 1387 211 10 1 62 28
0 4 0 700512 22176 1237264 0 0 0 860 1355 72 2 0 63 35
1 1 0 700432 22196 1238544 0 0 4 6940 1816 1857 18 8 42 32
1 1 0 689680 22236 1248904 0 0 8 19228 2636 3307 22 4 49 24
1 0 0 684624 22248 1253832 0 0 12 12596 1920 1863 20 3 64 14
0 1 0 684112 22256 1254344 0 0 4 8832 1266 600 23 2 71 5
2 0 0 673880 22264 1264476 0 0 8 11932 2448 2892 3 2 74 21
1 1 0 673880 22280 1264460 0 0 0 8944 1221 516 24 2 70 3
1 1 0 673368 22316 1264424 0 0 4 8980 1252 764 24 3 69 4
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 1 0 668376 22320 1269880 0 0 4 15244 2066 2195 24 4 49 23
1 0 0 667760 22328 1270392 0 0 0 9392 1319 669 24 2 67 6
1 0 0 661424 22336 1276884 0 0 8 10212 2009 2031 8 2 73 16
0 1 0 656176 22336 1281824 0 0 0 5836 1717 1420 1 1 75 23
1 0 0 651824 22348 1286232 0 0 4 9896 1715 1457 15 2 67 16
1 0 0 651872 22372 1286208 0 0 0 8660 1246 527 24 2 70 3
2 0 0 645984 22384 1292176 0 0 8 15544 2076 2200 24 4 54 18
1 1 0 508256 22648 1427372 0 0 8 11196 1631 1336 22 3 62 13
1 0 0 501216 22660 1434120 0 0 24 14796 2142 2315 21 3 55 21
1 0 0 501152 22676 1434104 0 0 8 9236 1234 539 24 3 70 4
1 1 0 495200 22692 1440328 0 0 4 11212 2077 2174 9 3 72 16
1 0 0 495200 22692 1440328 0 0 4 8840 1220 508 24 2 70 4
1 1 0 488864 22708 1446812 0 0 8 10836 1996 2018 11 3 65 22
1 1 0 317344 23076 1615444 0 0 0 11936 1674 1396 24 4 51 20
2 0 0 261600 23144 1670236 0 0 8 15500 2205 2528 23 12 44 21
0 4 0 202400 23204 1724776 0 0 0 106884 1595 289 13 13 56 17
1 3 0 203168 23212 1724768 0 0 0 1948 1491 146 6 1 65 28
0 4 0 203616 23220 1724760 0 0 0 640 1299 99 1 0 26 73
0 5 0 205856 23244 1724736 0 0 0 1172 1538 155 4 1 45 51
1 0 0 204192 23260 1726540 0 0 0 9712 1506 1056 19 2 65 13
0 2 0 201184 23268 1729392 0 0 8 7908 1573 1025 13 2 71 14
1 0 0 141032 23472 1783008 0 0 0 9108 1301 657 24 3 69 5
1 0 0 135056 23536 1789184 0 0 4 13768 1706 1294 16 4 66 14
0 1 0 132304 23552 1791768 0 0 24 11596 2145 2323 9 2 73 16
0 2 0 23632 23668 1894352 0 0 4 108624 1574 691 16 21 51 13
0 2 0 24080 23676 1894604 0 0 0 124 1359 58 0 0 69 31
0 2 0 25056 23676 1894604 0 0 0 208 1594 102 0 1 50 49
0 1 0 26976 23700 1895100 0 0 0 3784 1976 960 0 2 56 42
1 0 0 21024 23740 1901300 0 0 24 12288 1661 1184 11 3 71 15
이랫던 놈이.무거운 job을 돌리고 나니 위와같이 계속 free 메모리가 떨어지더군요
그리고 마지막에는
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 3 0 24352 18520 1897420 0 0 29 456 282 72 3 1 93 3
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 23840 19180 1897280 0 0 28 435 281 70 3 1 94 3
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 23584 20840 1895880 0 0 25 392 278 65 3 1 94 2
위와같이 freememory가 떨어졌습니다.
문제는 job 이 끝난다음에도 메모리가 반환이 안된다는 것입니다.
계속 위와같은 상태로 있는거죠..
메모리 사용률을 확인할때 freememory 만 가지고 평가한다는게
무리이긴 하지만. 그래도 값의 반환이 너무 안되는거 같아서요
시스템의 문제인지 아니면 원래 그런건지...
위와같이 vmstat나 top가 아닌 다른 방법으로
메모리 사용률을 알수 있는 방법이 있으면 추천 부탁드립니다.
고수님들의 답변 부탁드립니다.
원래 반환 안하던거 같은데요
제가 잘못아는거일수도 있는데 리눅스는 원래 반환 안했던거같아요.
그냥 갖고있다가 다음 작업에게 넘겨주는식으로..
음
그놈 시스템감시라던지 그런 프로그램을 돌려보시면
실제 프로그램이 사용하는 메모리율과 캐시로 보유하고 있는
현황을 알수있습니다.
윗분이 말씀하신데로 리눅스는 미리 어느정도의 메모리를 캐쉬로 보유하고 있다가
프로그램이 실행되면 그 프로그램에 캐쉬로 보유한 메모리를 할당해주는
형식인거 같습니다.
젠투여 영원하라......~!
http://blog.naver.com/khmirage.do
http://khmirage.tistory.com/
==================================================================
정체된 일상.... 계기를 만들어야 하는데........
BLOG : http://khmirage.tistory.com/
cache는 하드디스크를
cache는 하드디스크를 읽고쓰는데 사용하는 캐시입니다. 리눅스에서는 메모리가 부족하지 않으면 이 캐시를 반환하지않고 계속 남겨둡니다. 만약 프로그램 구동에 필요한 메모리가 부족하면 이 캐시를 반환하고, 이를 프로그램에서 사용하게됩니다. 따라서 free memory가 작다고해서 걱정하지않으셔도 됩니다.
반면 프로그램 구동중에 사용한 메모리는 프로그램이 종료하면서 모두 반환됩니다. 이 때문에 프로그램을 실행시켰다 종료시키면 free memory가 늘어나는것입니다.
댓글 달기