본문 바로가기
프로그램.../프로....Kernel

[메모리] Check List

by 크크다스 2017. 9. 22.
반응형

= [메모리] Check List

. 배경 :  메모리 Leak등 각 종 메모리 관련 이슈가 발생했을 때 찾아볼 메모리

          관련 정보들의 Super set이 필요했음.

. 참고 : "LINUX PROC 관련된 내역 정리된 것" 이글루



= free

. cmd> free

             total       used       free     shared    buffers     cached
Mem:        507072     305464     201608          0          0     211684
-/+ buffers/cache:      93780     413292
Swap:            0          0          0

 



= /proc/slabinfo  : 

. cmd> cat /proc/slabinfo

. 예제> cat /proc/slabinfo | tee /tmp/list.proc.slabinfo

size-256(DMA)          0      0    256   15    1 : tunables  120   60    8 : slabdata      0      0      0
size-256             445    525    256   15    1 : tunables  120   60    8 : slabdata     35     35      0
size-192(DMA)          0      0    192   20    1 : tunables  120   60    8 : slabdata      0      0      0
size-192            1033   1080    192   20    1 : tunables  120   60    8 : slabdata     54     54      0
size-128(DMA)          2     30    128   30    1 : tunables  120   60    8 : slabdata      1      1      0
size-64(DMA)           0      0     64   59    1 : tunables  120   60    8 : slabdata      0      0      0
size-32(DMA)         110    177     64   59    1 : tunables  120   60    8 : slabdata      3      3      0
size-32             8020   8319     64   59    1 : tunables  120   60    8 : slabdata    141    141      0
size-128            4053   4110    128   30    1 : tunables  120   60    8 : slabdata    137    137      3
size-64             2633   3009     64   59    1 : tunables  120   60    8 : slabdata     51     51      0
kmem_cache           190    210    128   30    1 : tunables  120   60    8 : slabdata      7      7   0



= /proc/meminfo  :  시스템의 전체 메모리 상태를 보여줌.

. cmd> cat /proc/meminfo

. 예제> cat /proc/meminfo

MemTotal:         507072 kB
MemFree:          201656 kB
Buffers:               0 kB
Cached:           211684 kB
SwapCached:            0 kB
Active:            79284 kB
Inactive:         171724 kB
Active(anon):      39936 kB
Inactive(anon):       84 kB
Active(file):      39348 kB
Inactive(file):   171640 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         507072 kB
LowFree:          201656 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         39336 kB
Mapped:            31524 kB
Shmem:               696 kB
Slab:              29032 kB
SReclaimable:      10944 kB
SUnreclaim:        18088 kB
KernelStack:        1272 kB
PageTables:         1404 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      253536 kB
Committed_AS:     105464 kB
VmallocTotal:     507904 kB
VmallocUsed:      188896 kB
VmallocChunk:     294040 kB

[참고] 본 블로그내 "[Memory] 커널 메모리 관리"




= /proc/<PID>/smaps  :  proc의 "maps"에 대한 detail  정보에 해당함.

. cmd> grep -v " ... kB" /proc/*/smaps | tee /tmp/list.proc.all.smaps

         1M이상의 대상을 표시할 때 사용(... : 변경하면 비슷한 사이즈 이상을 검색할 수 있다.)

          관련 정보들의 Super set이 필요했음.

. 예제> grep -v " ... kB" /proc/*/smaps

/proc/1349/smaps:b6618000-b674b000 r-xp 00000000 00:01 2287       /lib/libc-2.18.so
/proc/1349/smaps:Size:               1228 kB
/proc/1349/smaps:b674b000-b6752000 ---p 00133000 00:01 2287       /lib/libc-2.18.so

                            (1)                     (2)         (3)      (4)    (5)            (6)

/proc/1349/smaps:b67f8000-b6c10000 r-xp 00000000 00:01 543        /usr/lib/libxcmd.so
/proc/1349/smaps:Size:               4192 kB
/proc/1349/smaps:Rss:                3224 kB
/proc/1349/smaps:Pss:                2037 kB
/proc/1349/smaps:Shared_Dirty:       1780 kB
/proc/1349/smaps:Private_Dirty:      1444 kB
/proc/1349/smaps:Referenced:         3224 kB
/proc/1349/smaps:Anonymous:          1444 kB

[참고]

(1) 프로세스가 차지하는 메모리 주소공간
(2) mapping에 대한 퍼미션. (p:private)
(3) 파일의 내부 offset
(4) device number(Major:Minor)
(5) inode number
(6) Resousre 사용자 명
용자 명



= /proc/<PID>/statm  :  proc의 메모리 사용량에 대한 정보.

. cmd> grep . /proc/*/statm | tee /tmp/list.proc.all.statm

         <PID>까지 표시해서 구분 가능하게 하려고 grep을 사용함.

. 예제> grep . /proc/*/statm | tee /tmp/list.proc.all.statm

                                         
/proc/1/statm:472 170 153 7 0 72 0
/proc/10/statm:0 0 0 0 0 0 0
/proc/1002/statm:711 245 212 120 0 76 0

                       (1)   (2)  (3)  (4) (5) (6) (7)

[참고]

(1) size    전체 프로그램의 사이즈
(2) resident    swap되지 않고 설정된 사이즈
(3) share    공유 페이지
(4) text    텍스트 (코드) 사이즈
(5) lib    라이브러리 사이즈(Not used from Linux 2.6)
(6) data    data와 stack을 합한 사이즈
(7) dt    dirty pages (Not used from Linux 2.6)


= ps  : 프로세스상태를 -o 항목을 이용하여 출력.

. cmd> ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss

. 예제> ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -7
USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME COMMAND
root      9197  9196 10912  2952  17492  2.1  0.0 00:00:00 prc1
root      9403  9402 10680  2944  17136  2.1  0.0 00:00:00 prc2
root      1120   898 10172  2028  16516  2.0  0.0 00:05:49 prc3
root      1143   898  8668  6304  14828  1.7  3.1 23:19:50 prc4
root      1056   898  6492 11052  20740  1.2  0.3 02:45:13 prc5
root      1173   898  3292   768   7872  0.6  0.1 01:24:51 prc6

          




cd /tmp

cat > check.sh

#!/bin/sh

count=0

while [ 0 -eq 0 ]; do

        ps -w

  if [ $count -ge 20 ];then

ls -1 /proc/[1-9]*/fd

count=0

fi

count=`expr $count + 1`

 

sysctl fs.file-nr

ls -1 /proc/[1-9]*/fd|grep "^[0-9]"| wc -l


        cat /proc/meminfo

cat /tmp/mem_pre

        free -m > /tmp/mem_pre

cat /tmp/mem_pre


cat /tmp/df_pre

        df -k > /tmp/df_pre

cat /tmp/df_pre

        iwconfig 2> /dev/null | grep "ESSID\|Access Point"

        date


        sleep 30

done


chmod 777 check.sh

/tmp/check.sh


sysctl fs.file-nr

-----------------------------

1020 The number of allocated file handles.

0 The number of unused-but-allocated file handles.

70000 The system-wide maximum number of file handles.



반응형

'프로그램... > 프로....Kernel' 카테고리의 다른 글

[/proc] loadavg  (1) 2019.09.24
[kallsyms] Kernel All Symbols  (0) 2018.04.16
[Memory] 커널 메모리 관리  (0) 2017.09.19
[Timer] hrtimer  (0) 2015.04.13
[Netlink] kernel-space sample (Using Generic Netlink sockets)  (0) 2014.11.14