1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

For #307, for realtime, change wait messages from 0 to 2

This commit is contained in:
winlin 2020-04-14 13:55:55 +08:00
parent 03a03e4174
commit fdc0c44b7e
5 changed files with 40 additions and 34 deletions

View file

@ -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];

View file

@ -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);

View file

@ -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);

View file

@ -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));
}

View file

@ -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