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

For #307, allow dedicated cache for GSO.

This commit is contained in:
winlin 2020-04-14 09:20:21 +08:00
parent 89a247d9bc
commit 8a71ce62db
9 changed files with 303 additions and 48 deletions

View file

@ -267,6 +267,7 @@ SrsStatistic::SrsStatistic()
perf_msgs = new SrsStatisticCategory();
perf_sys = new SrsStatisticCategory();
perf_sendmmsg = new SrsStatisticCategory();
perf_gso = new SrsStatisticCategory();
}
SrsStatistic::~SrsStatistic()
@ -305,6 +306,7 @@ SrsStatistic::~SrsStatistic()
srs_freep(perf_msgs);
srs_freep(perf_sys);
srs_freep(perf_sendmmsg);
srs_freep(perf_gso);
}
SrsStatistic* SrsStatistic::instance()
@ -738,7 +740,7 @@ srs_error_t SrsStatistic::dumps_perf_writev(SrsJsonObject* obj)
return err;
}
void SrsStatistic::perf_mw_on_packets(int nb_msgs)
void SrsStatistic::perf_sendmmsg_on_packets(int nb_msgs)
{
// For perf msgs, the nb_msgs stat.
// a: =1
@ -808,6 +810,76 @@ srs_error_t SrsStatistic::dumps_perf_sendmmsg(SrsJsonObject* obj)
return err;
}
void SrsStatistic::perf_gso_on_packets(int nb_msgs)
{
// For perf msgs, the nb_msgs stat.
// a: =1
// b: <3
// c: <6
// d: <9
// e: <16
// f: <32
// g: <64
// h: <128
// i: <512
// j: >=512
if (nb_msgs == 1) {
perf_gso->a++;
} else if (nb_msgs < 3) {
perf_gso->b++;
} else if (nb_msgs < 6) {
perf_gso->c++;
} else if (nb_msgs < 9) {
perf_gso->d++;
} else if (nb_msgs < 16) {
perf_gso->e++;
} else if (nb_msgs < 32) {
perf_gso->f++;
} else if (nb_msgs < 64) {
perf_gso->g++;
} else if (nb_msgs < 128) {
perf_gso->h++;
} else if (nb_msgs < 512) {
perf_gso->i++;
} else {
perf_gso->j++;
}
}
srs_error_t SrsStatistic::dumps_perf_gso(SrsJsonObject* obj)
{
srs_error_t err = srs_success;
if (true) {
SrsJsonObject* p = SrsJsonAny::object();
obj->set("msgs", p);
// For perf msgs, the nb_msgs stat.
// a: =1
// b: <3
// c: <6
// d: <9
// e: <16
// f: <32
// g: <64
// h: <128
// i: <512
// j: >=512
p->set("lt_2", SrsJsonAny::integer(perf_gso->a));
p->set("lt_3", SrsJsonAny::integer(perf_gso->b));
p->set("lt_6", SrsJsonAny::integer(perf_gso->c));
p->set("lt_9", SrsJsonAny::integer(perf_gso->d));
p->set("lt_16", SrsJsonAny::integer(perf_gso->e));
p->set("lt_32", SrsJsonAny::integer(perf_gso->f));
p->set("lt_64", SrsJsonAny::integer(perf_gso->g));
p->set("lt_128", SrsJsonAny::integer(perf_gso->h));
p->set("lt_512", SrsJsonAny::integer(perf_gso->i));
p->set("gt_512", SrsJsonAny::integer(perf_gso->j));
}
return err;
}
SrsStatisticVhost* SrsStatistic::create_vhost(SrsRequest* req)
{
SrsStatisticVhost* vhost = NULL;