[这是大牛写的脚本](https://github.com/spicyjack/perl-scripts/blob/master/smaps.pl)
[大牛的博客](http://bmaurer.blogspot.com/2006/03/memory-usage-with-smaps.html)
用这个工具需要安装 Linux-Smaps perl模块
[Linux-Smaps perl模块下载链接](https://metacpan.org/release/Linux-Smaps)
安装只需要三步就可以
perl Makefile.PL
make
make install
root@localhost perl-scripts-1]# perl smaps.pl `pidof mysqld`
VMSIZE: 3041284 kb
RSS: 287492 kb total
920 kb shared
10180 kb private clean
276392 kb private dirty
PRIVATE MAPPINGS
vmsize rss clean rss dirty file
123796 kb 0 kb 123796 kb
1823576 kb 0 kb 76108 kb
52096 kb 0 kb 52040 kb [heap]
18400 kb 0 kb 7800 kb
32772 kb 0 kb 5980 kb
12440 kb 0 kb 2128 kb
10240 kb 0 kb 2048 kb
10240 kb 0 kb 2048 kb
2000 kb 0 kb 1744 kb
1656 kb 216 kb 532 kb /usr/local/mysql/bin/mysqld
632 kb 0 kb 492 kb
420 kb 0 kb 412 kb
280 kb 0 kb 272 kb
280 kb 0 kb 224 kb
884 kb 0 kb 124 kb
92 kb 0 kb 88 kb [stack]
144 kb 0 kb 32 kb
132 kb 0 kb 28 kb
10240 kb 0 kb 28 kb
10240 kb 0 kb 28 kb
10240 kb 0 kb 28 kb
256 kb 0 kb 28 kb
28 kb 0 kb 28 kb /usr/lib64/libstdc++.so.6.0.13
10240 kb 0 kb 16 kb
10240 kb 0 kb 16 kb
16 kb 0 kb 16 kb /lib64/libc-2.12.so
16 kb 0 kb 16 kb
10240 kb 0 kb 12 kb
10240 kb 0 kb 12 kb
84 kb 0 kb 12 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
10244 kb 0 kb 8 kb
10240 kb 0 kb 8 kb
8 kb 0 kb 8 kb /lib64/libc-2.12.so
8 kb 0 kb 8 kb /usr/lib64/libstdc++.so.6.0.13
132 kb 0 kb 4 kb
132 kb 0 kb 4 kb
132 kb 0 kb 4 kb
132 kb 0 kb 4 kb
4 kb 0 kb 4 kb /usr/local/mysql/lib/plugin/keyring_file.so
4 kb 0 kb 4 kb /lib64/libnss_files-2.12.so
4 kb 0 kb 4 kb /lib64/libnss_files-2.12.so
4 kb 0 kb 4 kb /lib64/libfreebl3.so
4 kb 0 kb 4 kb /lib64/libfreebl3.so
4 kb 0 kb 4 kb /lib64/libgcc_s-4.4.7-20120601.so.1
4 kb 0 kb 4 kb /lib64/libm-2.12.so
4 kb 0 kb 4 kb /lib64/libm-2.12.so
4 kb 0 kb 4 kb /lib64/librt-2.12.so
4 kb 0 kb 4 kb /lib64/librt-2.12.so
4 kb 0 kb 4 kb /lib64/libdl-2.12.so
4 kb 0 kb 4 kb /lib64/libdl-2.12.so
4 kb 0 kb 4 kb /lib64/libcrypt-2.12.so
4 kb 0 kb 4 kb /lib64/libcrypt-2.12.so
4 kb 0 kb 4 kb /lib64/libaio.so.1.0.1
4 kb 0 kb 4 kb /lib64/libpthread-2.12.so
4 kb 0 kb 4 kb /lib64/libpthread-2.12.so
16 kb 0 kb 4 kb
20 kb 0 kb 4 kb
4 kb 0 kb 4 kb /lib64/ld-2.12.so
4 kb 0 kb 4 kb /lib64/ld-2.12.so
4 kb 0 kb 4 kb
23312 kb 9380 kb 0 kb /usr/local/mysql/bin/mysqld
48 kb 44 kb 0 kb /usr/local/mysql/lib/plugin/keyring_file.so
1576 kb 8 kb 0 kb /lib64/libc-2.12.so
88 kb 28 kb 0 kb /lib64/libgcc_s-4.4.7-20120601.so.1
524 kb 4 kb 0 kb /lib64/libm-2.12.so
928 kb 484 kb 0 kb /usr/lib64/libstdc++.so.6.0.13
4 kb 4 kb 0 kb /lib64/libaio.so.1.0.1
92 kb 12 kb 0 kb /lib64/libpthread-2.12.so
SHARED MAPPINGS
vmsize rss clean rss dirty file
1576 kb 624 kb 0 kb /lib64/libc-2.12.so
128 kb 116 kb 0 kb /lib64/ld-2.12.so
92 kb 72 kb 0 kb /lib64/libpthread-2.12.so
52 kb 24 kb 0 kb /lib64/libnss_files-2.12.so
524 kb 20 kb 0 kb /lib64/libm-2.12.so
28 kb 20 kb 0 kb /lib64/librt-2.12.so
88 kb 16 kb 0 kb /lib64/libgcc_s-4.4.7-20120601.so.1
8 kb 8 kb 0 kb /lib64/libfreebl3.so
8 kb 8 kb 0 kb /lib64/libdl-2.12.so
28 kb 8 kb 0 kb /lib64/libcrypt-2.12.so
4 kb 4 kb 0 kb [vdso]
2017年12月12日星期二
2017年12月8日星期五
MySQL FlameGraph
MySQL FlameGraph
https://poormansprofiler.org/
http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#perf
https://github.com/brendangregg/FlameGraph/
http://queue.acm.org/detail.cfm?id=2927301
method1 gdb
https://github.com/brendangregg/FlameGraph/blob/master/stackcollapse-gdb.pl
#!/bin/sh
for x in $(seq 1 5)
do
gdb -ex "set pagination 0" -ex "thread apply all bt" -batch -p `pidof mysqld` >> gdb.txt
sleep 0.01
done
cat gdb.txt | perl stackcollapse-gdb.pl > out.gdb-folded
perl flamegraph.pl out.gdb-folded > gdb-mysql.svg
method2 perf
https://github.com/brendangregg/FlameGraph/blob/master/stackcollapse-perf.pl
https://github.com/torvalds/linux/tree/master/tools/perf/Documentation
perf record -a -g -F 997 --pid `pidof mysqld` sleep 60
perf script | /home/soft/FlameGraph/stackcollapse-perf.pl > out.perf-folded
/home/soft/FlameGraph/flamegraph.pl out.perf-folded > perf-mysql.svg
Off-CPU
http://www.brendangregg.com/blog/2015-02-26/linux-perf-off-cpu-flame-graph.html
http://oliveryang.net/2015/07/linux-scheduler-profiling-2/
https://github.com/openresty/stapxx
https://github.com/openresty/nginx-systemtap-toolkit
perf script -F comm,pid,tid,cpu,time,period,event,ip,sym,dso | awk '
NF > 4 { exec = $1; period_ms = int($5 / 1000000) }
NF > 1 && NF <= 4 && period_ms > 0 { print $2 }
NF < 2 && period_ms > 0 { printf "%s\n%d\n\n", exec, period_ms }' | \
/home/soft/FlameGraph/stackcollapse.pl | \
/home/soft/FlameGraph/flamegraph.pl --countname=ms --title="Off-CPU Time Flame Graph" --colors=io > offcpu.svg
https://poormansprofiler.org/
http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#perf
https://github.com/brendangregg/FlameGraph/
http://queue.acm.org/detail.cfm?id=2927301
method1 gdb
https://github.com/brendangregg/FlameGraph/blob/master/stackcollapse-gdb.pl
#!/bin/sh
for x in $(seq 1 5)
do
gdb -ex "set pagination 0" -ex "thread apply all bt" -batch -p `pidof mysqld` >> gdb.txt
sleep 0.01
done
cat gdb.txt | perl stackcollapse-gdb.pl > out.gdb-folded
perl flamegraph.pl out.gdb-folded > gdb-mysql.svg
method2 perf
https://github.com/brendangregg/FlameGraph/blob/master/stackcollapse-perf.pl
https://github.com/torvalds/linux/tree/master/tools/perf/Documentation
perf record -a -g -F 997 --pid `pidof mysqld` sleep 60
perf script | /home/soft/FlameGraph/stackcollapse-perf.pl > out.perf-folded
/home/soft/FlameGraph/flamegraph.pl out.perf-folded > perf-mysql.svg
Off-CPU
http://www.brendangregg.com/blog/2015-02-26/linux-perf-off-cpu-flame-graph.html
http://oliveryang.net/2015/07/linux-scheduler-profiling-2/
https://github.com/openresty/stapxx
https://github.com/openresty/nginx-systemtap-toolkit
perf script -F comm,pid,tid,cpu,time,period,event,ip,sym,dso | awk '
NF > 4 { exec = $1; period_ms = int($5 / 1000000) }
NF > 1 && NF <= 4 && period_ms > 0 { print $2 }
NF < 2 && period_ms > 0 { printf "%s\n%d\n\n", exec, period_ms }' | \
/home/soft/FlameGraph/stackcollapse.pl | \
/home/soft/FlameGraph/flamegraph.pl --countname=ms --title="Off-CPU Time Flame Graph" --colors=io > offcpu.svg
订阅:
评论 (Atom)