SRS性能、內(nèi)存優(yōu)化工具用法
SRS提供了一系列工具來(lái)定位性能瓶頸和內(nèi)存泄漏,這些在./configure && make
后的summary
中是有給出來(lái)用法的,不過(guò)不是很方便,所以特地把用法寫到這個(gè)文章中。
文中所有的工具,對(duì)于其他的linux程序也是有用的。
GPERF備注:所有工具用起來(lái)都會(huì)導(dǎo)致SRS性能低下,所以除非是排查問(wèn)題,否則不要開啟這些選項(xiàng)。
GPERF是google tcmalloc提供的cpu和內(nèi)存工具,參考GPERF。
GMDGMD是GPERF提供的內(nèi)存Defense工具,檢測(cè)內(nèi)存越界和野指針。一般在越界寫入時(shí),可能不會(huì)立刻導(dǎo)致破壞,而是在切換到其他線程使用被破壞的對(duì)象時(shí)才會(huì)發(fā)現(xiàn)破壞了,所以這種內(nèi)存問(wèn)題很難排查;GMD能在越界和野指針使用時(shí)直接core dump,定位在那個(gè)出問(wèn)題的地方。參考GMD。
Usage:
# Build SRS with GMD.
./configure --with-gperf --with-gmd && make
# Start SRS with GMD.
env TCMALLOC_PAGE_FENCE=1 ./objs/srs -c conf/console.conf
GMCGMC是內(nèi)存泄漏檢測(cè)工具,參考GMC。
Usage:
# Build SRS with GMC
./configure --with-gperf --with-gmc && make
# Start SRS with GMC
env PPROF_PATH=./objs/pprof HEAPCHECK=normal ./objs/srs -c conf/console.conf 2>gmc.log
# Or CTRL+C to stop gmc
killall -2 srs
# To analysis memory leak
cat gmc.log
GMPGMP是內(nèi)存性能分析工具,譬如檢測(cè)是否有頻繁的申請(qǐng)和釋放堆內(nèi)存導(dǎo)致的性能問(wèn)題。參考GMP。
Usage:
# Build SRS with GMP
./configure --with-gperf --with-gmp && make
# Start SRS with GMP
./objs/srs -c conf/console.conf
# Or CTRL+C to stop gmp
killall -2 srs
# To analysis memory profile
./objs/pprof --text objs/srs gperf.srs.gmp*
GCPGCP是CPU性能分析工具,就是一般講的性能瓶頸,看哪個(gè)函數(shù)調(diào)用占用過(guò)多的CPU。參考GCP。
Usage:
# Build SRS with GCP
./configure --with-gperf --with-gcp && make
# Start SRS with GCP
./objs/srs -c conf/console.conf
# Or CTRL+C to stop GCP
killall -2 srs
# To analysis cpu profile
./objs/pprof --text objs/srs gperf.srs.gcp*
GPROFGPROF是個(gè)GNU的CPU性能分析工具。參考SRS GPROF,以及GNU GPROF。
Usage:
# Build SRS with GPROF
./configure --with-gprof && make
# Start SRS with GPROF
./objs/srs -c conf/console.conf
# Or CTRL+C to stop GPROF
killall -2 srs
# To analysis result.
gprof -b ./objs/srs gmon.out
VALGRINDVALGRIND是大名鼎鼎的C分析工具,SRS因?yàn)槭褂昧薙T所以最初不支持VALGRIND的分析,所以需要給ST打PATCH才能用,目前還沒(méi)有合并到SRS。
給ST打PATCH支持VALGRIND,參考state-threads,詳細(xì)的信息可以參考ST#2。
原文鏈接:https://blog.csdn.net/win_lin/article/details/53503869