diff --git a/trunk/src/app/srs_app_http_stream.cpp b/trunk/src/app/srs_app_http_stream.cpp index 6609c3852..95c1f03fd 100755 --- a/trunk/src/app/srs_app_http_stream.cpp +++ b/trunk/src/app/srs_app_http_stream.cpp @@ -680,6 +680,8 @@ srs_error_t SrsLiveStream::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMess err = streaming_send_messages(enc, msgs.msgs, count); } + // TODO: FIXME: Update the stat. + // free the messages. for (int i = 0; i < count; i++) { SrsSharedPtrMessage* msg = msgs.msgs[i]; diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index f70cf279d..abee62bc0 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -619,7 +619,7 @@ srs_error_t SrsRtcSenderThread::cycle() #ifdef SRS_PERF_QUEUE_COND_WAIT if (realtime) { // for realtime, min required msgs is 0, send when got one+ msgs. - consumer->wait(0, mw_sleep); + consumer->wait(SRS_PERF_MW_MIN_MSGS_FOR_RTC_REALTIME, mw_sleep); } else { // for no-realtime, got some msgs then send. consumer->wait(SRS_PERF_MW_MIN_MSGS_FOR_RTC, mw_sleep); diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index d312d4ab2..d06d79a42 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -732,7 +732,7 @@ srs_error_t SrsRtmpConn::do_playing(SrsSource* source, SrsConsumer* consumer, Sr // @see https://github.com/ossrs/srs/issues/257 if (realtime) { // for realtime, min required msgs is 0, send when got one+ msgs. - consumer->wait(0, mw_sleep); + consumer->wait(SRS_PERF_MW_MIN_MSGS_REALTIME, mw_sleep); } else { // for no-realtime, got some msgs then send. consumer->wait(SRS_PERF_MW_MIN_MSGS, mw_sleep); diff --git a/trunk/src/app/srs_app_statistic.cpp b/trunk/src/app/srs_app_statistic.cpp index 228fa8344..62ba28764 100644 --- a/trunk/src/app/srs_app_statistic.cpp +++ b/trunk/src/app/srs_app_statistic.cpp @@ -588,31 +588,31 @@ srs_error_t SrsStatistic::dumps_clients(SrsJsonArray* arr, int start, int count) void SrsStatistic::perf_mw_on_msgs(int nb_msgs, int bytes_msgs, int nb_iovs) { // For perf msgs, the nb_msgs stat. - // a: =1 - // b: <3 - // c: <6 - // d: <12 - // e: <128 - // f: <256 - // g: <512 - // h: <600 + // a: <3 + // b: <5 + // c: <9 + // d: <16 + // e: <32 + // f: <64 + // g: <128 + // h: <256 // i: <1000 // j: >=1000 - if (nb_msgs == 1) { + if (nb_msgs < 3) { perf_msgs->a++; - } else if (nb_msgs < 3) { + } else if (nb_msgs < 5) { perf_msgs->b++; - } else if (nb_msgs < 6) { + } else if (nb_msgs < 9) { perf_msgs->c++; - } else if (nb_msgs < 12) { + } else if (nb_msgs < 16) { perf_msgs->d++; - } else if (nb_msgs < 128) { + } else if (nb_msgs < 32) { perf_msgs->e++; - } else if (nb_msgs < 256) { + } else if (nb_msgs < 64) { perf_msgs->f++; - } else if (nb_msgs < 512) { + } else if (nb_msgs < 128) { perf_msgs->g++; - } else if (nb_msgs < 600) { + } else if (nb_msgs < 256) { perf_msgs->h++; } else if (nb_msgs < 1000) { perf_msgs->i++; @@ -663,24 +663,24 @@ srs_error_t SrsStatistic::dumps_perf_writev(SrsJsonObject* obj) obj->set("msgs", p); // For perf msgs, the nb_msgs stat. - // a: =1 - // b: <3 - // c: <6 - // d: <12 - // e: <128 - // f: <256 - // g: <512 - // h: <600 + // a: <3 + // b: <5 + // c: <9 + // d: <16 + // e: <32 + // f: <64 + // g: <128 + // h: <256 // i: <1000 // j: >=1000 - p->set("lt_2", SrsJsonAny::integer(perf_msgs->a)); - p->set("lt_3", SrsJsonAny::integer(perf_msgs->b)); - p->set("lt_6", SrsJsonAny::integer(perf_msgs->c)); - p->set("lt_12", SrsJsonAny::integer(perf_msgs->d)); - p->set("lt_128", SrsJsonAny::integer(perf_msgs->e)); - p->set("lt_256", SrsJsonAny::integer(perf_msgs->f)); - p->set("lt_512", SrsJsonAny::integer(perf_msgs->g)); - p->set("lt_600", SrsJsonAny::integer(perf_msgs->h)); + p->set("lt_3", SrsJsonAny::integer(perf_msgs->a)); + p->set("lt_5", SrsJsonAny::integer(perf_msgs->b)); + p->set("lt_9", SrsJsonAny::integer(perf_msgs->c)); + p->set("lt_16", SrsJsonAny::integer(perf_msgs->d)); + p->set("lt_32", SrsJsonAny::integer(perf_msgs->e)); + p->set("lt_64", SrsJsonAny::integer(perf_msgs->f)); + p->set("lt_128", SrsJsonAny::integer(perf_msgs->g)); + p->set("lt_256", SrsJsonAny::integer(perf_msgs->h)); p->set("lt_1000", SrsJsonAny::integer(perf_msgs->i)); p->set("gt_1000", SrsJsonAny::integer(perf_msgs->j)); } diff --git a/trunk/src/core/srs_core_performance.hpp b/trunk/src/core/srs_core_performance.hpp index 07c1e1539..adc38f3fa 100644 --- a/trunk/src/core/srs_core_performance.hpp +++ b/trunk/src/core/srs_core_performance.hpp @@ -127,8 +127,12 @@ */ #define SRS_PERF_QUEUE_COND_WAIT #ifdef SRS_PERF_QUEUE_COND_WAIT + // For RTMP, use larger wait queue. #define SRS_PERF_MW_MIN_MSGS 8 + #define SRS_PERF_MW_MIN_MSGS_REALTIME 4 + // For RTC, use smaller wait queue. #define SRS_PERF_MW_MIN_MSGS_FOR_RTC 4 + #define SRS_PERF_MW_MIN_MSGS_FOR_RTC_REALTIME 2 #endif /** * the default value of vhost for