2012년 7월 4일 수요일

지속적인 패킷덤프로 인한 메모리 증가

지속적인 패킷 덤프로 인해 메모리 사용률이 크게 증가할 수도 있다. 단순한 패킷 저장이면 모르겠지만, 특정한 경우에는 메모리 사용이 크게 나타났다. 예를들어, tshark 를 통해 특정 필드의 텍스트 값을 저장하는 경우다. 나의 경우가 그런것인지는 모르겠지만, 어느날 프로세스를 확인해 보니 메모리 사용이 9.7 기가나 되었다.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
15175 root      20   0 10.1g 9.7g  28m R    3 30.8 695:36.14 tshark    

TOP 을 통해서 본 것으로 VIRT 는 Virtual Image 로 tshark 에 의해 사용되고 있는 전체 가상 메모리이다.  이건 모든 코드, 데이터 그리고 공유 라이브러리, 메모리 페이지 까지 모두 포함된 것이다. RES 는 Resident Size 로 tshark 에 의해 사용된 스왑되지 않은 물리적인 메모리 양이다. 즉 RES 는 CODE + DATA 라고 할 수 있다.

시스템 활동정보를 살펴보기 위해 SAR 을 이용했고 -r  옵션을 사용하여 메모리 상태 정보를 1초 마다 출력하게 하였다.

# sar -r 1
Linux 2.6.32-5-amd64 () 05/24/2012 _x86_64_ (16 CPU)

05:20:10 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
05:20:11 PM    105292  32898320     99.68    292348  21170036  10814820     24.15
05:20:12 PM    105808  32897804     99.68    292348  21170072  10814820     24.15
05:20:13 PM    105808  32897804     99.68    292348  21170076  10814820     24.15
05:20:14 PM    105684  32897928     99.68    292348  21170112  10814820     24.15

사용되는 메모리 양이 거의 99.68%에 달하고 있다. tshark 프로세스 ID 인 15175 를 Kill 해보도록 하겠다.

# kill 15175
# 18 packets dropped
104133176 packets captured

동작중인 프로세스가 동작을 멈추면서 정보를 남기기를 1억개의 패킷을 캡쳐했다. 프로세스 동작을 중지시키고 다시 살펴본 메모리 사용량은 약 17기가 정도가 되었다. 사용된 메모리는 이제 48.52% 가 되었다.

# sar -r 1
Linux 2.6.32-5-amd64 () 05/24/2012 _x86_64_ (16 CPU)

05:20:46 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
05:20:47 PM   6836172  26167440     79.29    295644  14461968  10814628     24.15
05:20:48 PM   6836432  26167180     79.29    295644  14461968  10814628     24.15
05:20:49 PM  11008288  21995324     66.65    295652  14462016  10027308     22.39
05:20:50 PM  16989180  16014432     48.52    295652  14461988    348920      0.78
05:20:51 PM  16989464  16014148     48.52    295652  14461992    348920      0.78
05:20:52 PM  16989836  16013776     48.52    295652  14461992    348920      0.78
05:20:53 PM  16989852  16013760     48.52    295652  14461996    348920      0.78
05:20:54 PM  16990100  16013512     48.52    295652  14462000    348920      0.78
05:20:55 PM  16990488  16013124     48.52    295652  14462004    348920      0.78
^C

패킷을 장기적으로 덤프하는 경우, 이와 같이 메모리 사용이 커지는 경우가 발생할 수 있으므로 주의깊게 살펴보아야 한다. 모든 경우가 아니지만, 메모리 사용이 많아질 수 있는 패킷 덤프 사용에 다른 프로세스까지 영향을 주어 시스템운영에 문제를 끼칠 수 있다는 점!

댓글 없음:

댓글 쓰기