smem

2018. 11. 7. 01:06Linux

smem memory reporting tool[1]  
 smem은 Linux systems에서 memory usage에 리포팅하는 많은 툴중에 하나이다. 기존에 존재하는 Tool들과 달리 smem은 virtual memory system에서 library들과 application들에 의해서 사용되는 중요한 메모리 size인 PSS(Proportional Set Size)를 report한다.
Physical memory의 많은 영역들을 여러 Application들 사이에서 공유되기 때문에, RSS(Resident set size)로 알려진 Memory Usage의 표준 측정은 Memory usage를 과대 평가할 것이다. PSS는 대신에 실제 측정을 하기 위해서 각각 공유된 공간의 각각 Application "fair share"를 측정한다.

Process Memory Metrics[2]
USS (Unique Set Size) 
: 어느 다른 Process와 mapping되지 않은 오직 그 Process에 mapping된 Process의 Page 수를 나타냄. 이것은 만약 process가 unload되어 질때 복원되는 메모리의 양이다.

PSS (Proportional Set Size)
:유일하게 Process에 mapping된 모든 페이지의 수 + 각각 공유된 page의 비율(그 page를 mapping한 process들의 수에 비례적인 비율). 예로, 만약 Process가 어떤 다른 Process와 mapping되지 않은 1 page와 mapping되어 졌다면(USS=1), 그리고 어느 다른 process와 mapping된 두번째 page가 이 Process와 mapping되면, PSS 값은 1.5로 나타날 것이다. 만약 3 user들의 공유된 Page가 있다면, PSS는 1.33 일것이다.

RSS (Resident Set Size)
Linux에서 ps 그리고 top와 같은 utility들에 의해 report되는 대부분 공통적인 process당 메모리 측정 척도. 그러나 많이 신용하지 않는다. RSS는 특정 process에의해서 mapping된 page들의 총수를 타나내며, 모든 공유된 Page들을 100% 포함한다. 각 process가 Process/Component Matrix로 보여질때, 이것의 가로행에서 모든 세로행의 page 수 합은 process를 위한 RSS 값과 같다.

*smem의 특징*
-system overview listing
-listings by process, mapping, user
-filtering by process, mapping, or user
-configurable columns from multiple data sources
-configurable output units and percentages
-configurable headers and totals
-reading live data from /proc
-reading data snapshots from directory mirrors or compressed tarballs
-lightweight capture tool for embedded systems
-built-in chart generation

smem을 사용하기 위한 요구 사항.
-kernel은 2.6.27보다 높아야 함.
-Python은 2.4.
-char generation을 위한 matplotlib library.(부가적, 자동 감지함).

smem 기본 사용.

Show basic process informationsmem
Show library-oriented viewsmem -m
Show user-oriented viewsmem -u
Show system viewsmem -R 4G -K /path/to/vmlinux -w 
Show totals and percentagessmem -t -p
Show different columnssmem -c "name user pss"
Sort by reverse RSSsmem -s rss -r
Show processes filtered by mappingsmem -M libxml
Show mappings filtered by processsmem -m -P [e]volution
Read data from capture tarballsmem --source capture.tar.gz
Show a bar chart labeled by pidsmem --bar pid -c "pss uss"
Show a pie chart of RSS labeled by name smem --pie name -s rss


- 최근 버전은 여기에서 구할 수 있으며, hg clone http://selenic.com/repo/smem 으로 가장 최근 소스를 구할 수 있다.

ref:

[1]smem memory reporting tool,"http://www.selenic.com/smem/"
[2]Capturing Process Memory Usage Under Linux, "http://www.eqware.net/Articles/CapturingProcessMemoryUsageUnderLinux/index.html"

'Linux' 카테고리의 다른 글

.debug_info section  (0) 2018.11.07