1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

refine code, support configure to enable --memory-watch

This commit is contained in:
winlin 2015-06-13 15:45:25 +08:00
parent 0d6a574216
commit 0d66e92ab5
8 changed files with 22 additions and 17 deletions

View file

@ -136,6 +136,12 @@ else
echo "#undef SRS_AUTO_SSL" >> $SRS_AUTO_HEADERS_H echo "#undef SRS_AUTO_SSL" >> $SRS_AUTO_HEADERS_H
fi fi
if [ $SRS_MEM_WATCH = YES ]; then
echo "#define SRS_AUTO_MEM_WATCH" >> $SRS_AUTO_HEADERS_H
else
echo "#undef SRS_AUTO_MEM_WATCH" >> $SRS_AUTO_HEADERS_H
fi
# whether compile ffmpeg tool # whether compile ffmpeg tool
if [ $SRS_FFMPEG_TOOL = YES ]; then if [ $SRS_FFMPEG_TOOL = YES ]; then
echo "#define SRS_AUTO_FFMPEG_TOOL" >> $SRS_AUTO_HEADERS_H echo "#define SRS_AUTO_FFMPEG_TOOL" >> $SRS_AUTO_HEADERS_H

View file

@ -60,6 +60,9 @@ SRS_LOG_TRACE=RESERVED
# experts # experts
# donot compile ssl, use system ssl(-lssl) if required. # donot compile ssl, use system ssl(-lssl) if required.
SRS_USE_SYS_SSL=NO SRS_USE_SYS_SSL=NO
# enable memory watch, detect memory leak,
# similar to gmc, should disable in release version for hurts performance.
SRS_MEM_WATCH=NO
# export the srs-librtmp to specified project, NO to disable it. # export the srs-librtmp to specified project, NO to disable it.
SRS_EXPORT_LIBRTMP_PROJECT=NO SRS_EXPORT_LIBRTMP_PROJECT=NO
# export the srs-librtmp to a single .h and .c, NO to disable it. # export the srs-librtmp to a single .h and .c, NO to disable it.
@ -195,6 +198,7 @@ Conflicts:
Experts: Experts:
--use-sys-ssl donot compile ssl, use system ssl(-lssl) if required. --use-sys-ssl donot compile ssl, use system ssl(-lssl) if required.
--memory-watch enable memory watch to detect memory leaking(hurts performance).
--export-librtmp-project=<path> export srs-librtmp to specified project in path. --export-librtmp-project=<path> export srs-librtmp to specified project in path.
--export-librtmp-single=<path> export srs-librtmp to a single file(.h+.cpp) in path. --export-librtmp-single=<path> export srs-librtmp to a single file(.h+.cpp) in path.
@ -283,6 +287,7 @@ function parse_user_option() {
--full) SRS_ENABLE_ALL=YES ;; --full) SRS_ENABLE_ALL=YES ;;
--use-sys-ssl) SRS_USE_SYS_SSL=YES ;; --use-sys-ssl) SRS_USE_SYS_SSL=YES ;;
--memory-watch) SRS_MEM_WATCH=YES ;;
--export-librtmp-project) SRS_EXPORT_LIBRTMP_PROJECT=${value} ;; --export-librtmp-project) SRS_EXPORT_LIBRTMP_PROJECT=${value} ;;
--export-librtmp-single) SRS_EXPORT_LIBRTMP_SINGLE=${value} ;; --export-librtmp-single) SRS_EXPORT_LIBRTMP_SINGLE=${value} ;;

View file

@ -569,7 +569,7 @@ void SrsServer::dispose()
st_usleep(100 * 1000); st_usleep(100 * 1000);
} }
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
srs_memory_report(); srs_memory_report();
#endif #endif
} }
@ -893,7 +893,7 @@ void SrsServer::on_signal(int signo)
signal_gmc_stop = true; signal_gmc_stop = true;
#else #else
srs_trace("user terminate program"); srs_trace("user terminate program");
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
srs_memory_report(); srs_memory_report();
#endif #endif
exit(0); exit(0);

View file

@ -23,7 +23,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core_mem_watch.hpp> #include <srs_core_mem_watch.hpp>
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
#include <map> #include <map>
#include <stdio.h> #include <stdio.h>
@ -68,7 +68,7 @@ void srs_memory_unwatch(void* ptr)
void srs_memory_report() void srs_memory_report()
{ {
printf("srs memory leak report:\n"); printf("srs memory watch leak report:\n");
int total = 0; int total = 0;
std::map<void*, SrsMemoryObject*>::iterator it; std::map<void*, SrsMemoryObject*>::iterator it;
@ -79,6 +79,7 @@ void srs_memory_report()
} }
printf("%d objects leak %dKB.\n", (int)_srs_ptrs.size(), total / 1024); printf("%d objects leak %dKB.\n", (int)_srs_ptrs.size(), total / 1024);
printf("@remark use script to cleanup for memory watch: ./etc/init.d/srs stop\n");
} }
#endif #endif

View file

@ -30,7 +30,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core.hpp> #include <srs_core.hpp>
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
#include <string> #include <string>

View file

@ -174,7 +174,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* to force the server to send smaller tcp packet. * to force the server to send smaller tcp packet.
* @see https://github.com/simple-rtmp-server/srs/issues/320 * @see https://github.com/simple-rtmp-server/srs/issues/320
* @remark undef it to auto calc it by merged write sleep ms. * @remark undef it to auto calc it by merged write sleep ms.
* @remark only apply it when SRS_PERF_MW_SO_RCVBUF is defined. * @remark only apply it when SRS_PERF_MW_SO_SNDBUF is defined.
*/ */
#ifdef SRS_PERF_MW_SO_SNDBUF #ifdef SRS_PERF_MW_SO_SNDBUF
//#define SRS_PERF_SO_SNDBUF_SIZE 1024 //#define SRS_PERF_SO_SNDBUF_SIZE 1024
@ -188,12 +188,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#undef SRS_PERF_FAST_FLV_ENCODER #undef SRS_PERF_FAST_FLV_ENCODER
#define SRS_PERF_FAST_FLV_ENCODER #define SRS_PERF_FAST_FLV_ENCODER
/**
* whether enable the special memory watcher.
* which used for memory leak debug and hurts performance.
*/
#define SRS_MEM_WATCH
#undef SRS_MEM_WATCH
#endif #endif

View file

@ -160,7 +160,7 @@ SrsCommonMessage::SrsCommonMessage()
SrsCommonMessage::~SrsCommonMessage() SrsCommonMessage::~SrsCommonMessage()
{ {
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
srs_memory_unwatch(payload); srs_memory_unwatch(payload);
#endif #endif
srs_freep(payload); srs_freep(payload);
@ -173,7 +173,7 @@ void SrsCommonMessage::create_payload(int size)
payload = new char[size]; payload = new char[size];
srs_verbose("create payload for RTMP message. size=%d", size); srs_verbose("create payload for RTMP message. size=%d", size);
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
srs_memory_watch(payload, "RTMP.msg.payload", size); srs_memory_watch(payload, "RTMP.msg.payload", size);
#endif #endif
} }
@ -187,7 +187,7 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::SrsSharedPtrPayload()
SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload() SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
{ {
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
srs_memory_unwatch(payload); srs_memory_unwatch(payload);
#endif #endif
srs_freep(payload); srs_freep(payload);

View file

@ -212,7 +212,7 @@ void check_macro_features()
srs_warn("SRS %s is not stable, please use stable branch %s instead", RTMP_SIG_SRS_VERSION, VERSION_STABLE_BRANCH); srs_warn("SRS %s is not stable, please use stable branch %s instead", RTMP_SIG_SRS_VERSION, VERSION_STABLE_BRANCH);
#endif #endif
#ifdef SRS_MEM_WATCH #ifdef SRS_AUTO_MEM_WATCH
#warning "srs memory watcher will hurts performance. user should kill by SIGTERM or init.d script." #warning "srs memory watcher will hurts performance. user should kill by SIGTERM or init.d script."
srs_warn("srs memory watcher will hurts performance. user should kill by SIGTERM or init.d script."); srs_warn("srs memory watcher will hurts performance. user should kill by SIGTERM or init.d script.");
#endif #endif