mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Clock: Update stat. Insert timer to execute first
This commit is contained in:
parent
f987198af0
commit
d8563398b2
10 changed files with 112 additions and 65 deletions
|
|
@ -3640,7 +3640,7 @@ srs_error_t SrsConfig::check_normal_config()
|
|||
SrsConfDirective* conf = get_stats();
|
||||
for (int i = 0; conf && i < (int)conf->directives.size(); i++) {
|
||||
string n = conf->at(i)->name;
|
||||
if (n != "network" && n != "disk") {
|
||||
if (n != "enabled" && n != "network" && n != "disk") {
|
||||
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal stats.%s", n.c_str());
|
||||
}
|
||||
}
|
||||
|
|
@ -8353,6 +8353,23 @@ SrsConfDirective* SrsConfig::get_stats()
|
|||
return root->get("stats");
|
||||
}
|
||||
|
||||
bool SrsConfig::get_stats_enabled()
|
||||
{
|
||||
static bool DEFAULT = true;
|
||||
|
||||
SrsConfDirective* conf = get_stats();
|
||||
if (!conf) {
|
||||
return DEFAULT;
|
||||
}
|
||||
|
||||
conf = conf->get("enabled");
|
||||
if (!conf || conf->arg0().empty()) {
|
||||
return DEFAULT;
|
||||
}
|
||||
|
||||
return SRS_CONF_PERFER_TRUE(conf->arg0());
|
||||
}
|
||||
|
||||
int SrsConfig::get_stats_network()
|
||||
{
|
||||
static int DEFAULT = 0;
|
||||
|
|
|
|||
|
|
@ -1084,6 +1084,8 @@ private:
|
|||
// Get the stats directive.
|
||||
virtual SrsConfDirective* get_stats();
|
||||
public:
|
||||
// Whether enabled stats.
|
||||
virtual bool get_stats_enabled();
|
||||
// Get the network device index, used to retrieve the ip of device,
|
||||
// For heartbeat to report to server, or to get the local ip.
|
||||
// For example, 0 means the eth0 maybe.
|
||||
|
|
|
|||
|
|
@ -83,23 +83,23 @@ SrsPps* _srs_pps_epoll_zero = new SrsPps(_srs_clock);
|
|||
SrsPps* _srs_pps_epoll_shake = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_epoll_spin = new SrsPps(_srs_clock);
|
||||
|
||||
extern unsigned long long _st_stat_sched_us;
|
||||
extern unsigned long long _st_stat_sched_10ms;
|
||||
extern unsigned long long _st_stat_sched_15ms;
|
||||
extern unsigned long long _st_stat_sched_20ms;
|
||||
extern unsigned long long _st_stat_sched_25ms;
|
||||
extern unsigned long long _st_stat_sched_30ms;
|
||||
extern unsigned long long _st_stat_sched_35ms;
|
||||
extern unsigned long long _st_stat_sched_40ms;
|
||||
extern unsigned long long _st_stat_sched_80ms;
|
||||
extern unsigned long long _st_stat_sched_160ms;
|
||||
extern unsigned long long _st_stat_sched_320ms;
|
||||
extern unsigned long long _st_stat_sched_1000ms;
|
||||
extern unsigned long long _st_stat_sched_s;
|
||||
SrsPps* _srs_pps_sched_us = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_10ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_15ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_20ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_25ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_30ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_35ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_40ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_80ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_160ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_320ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_1000ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_sched_s = new SrsPps(_srs_clock);
|
||||
|
||||
SrsPps* _srs_pps_clock_15ms = new SrsPps(_srs_clock);
|
||||
|
|
@ -112,6 +112,7 @@ SrsPps* _srs_pps_clock_80ms = new SrsPps(_srs_clock);
|
|||
SrsPps* _srs_pps_clock_160ms = new SrsPps(_srs_clock);
|
||||
SrsPps* _srs_pps_timer_s = new SrsPps(_srs_clock);
|
||||
|
||||
extern int _st_active_count;
|
||||
extern unsigned long long _st_stat_thread_run;
|
||||
extern unsigned long long _st_stat_thread_idle;
|
||||
SrsPps* _srs_pps_thread_run = new SrsPps(_srs_clock);
|
||||
|
|
@ -277,6 +278,9 @@ SrsServerAdapter* SrsHybridServer::srs()
|
|||
return NULL;
|
||||
}
|
||||
|
||||
extern void _srs_coroutine_switch_in();
|
||||
extern void _srs_coroutine_switch_out();
|
||||
|
||||
srs_error_t SrsHybridServer::setup_ticks()
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
|
@ -401,13 +405,13 @@ srs_error_t SrsHybridServer::notify(int event, srs_utime_t interval, srs_utime_t
|
|||
}
|
||||
|
||||
string sched_desc;
|
||||
_srs_pps_sched_us->update(_st_stat_sched_us); _srs_pps_sched_s->update(_st_stat_sched_s);
|
||||
_srs_pps_sched_10ms->update(_st_stat_sched_10ms); _srs_pps_sched_20ms->update(_st_stat_sched_20ms);
|
||||
_srs_pps_sched_40ms->update(_st_stat_sched_40ms); _srs_pps_sched_80ms->update(_st_stat_sched_80ms);
|
||||
_srs_pps_sched_160ms->update(_st_stat_sched_160ms); _srs_pps_sched_320ms->update(_st_stat_sched_320ms);
|
||||
_srs_pps_sched_1000ms->update(_st_stat_sched_1000ms);
|
||||
if (_srs_pps_sched_us->r10s() || _srs_pps_sched_s->r10s() || _srs_pps_sched_10ms->r10s() || _srs_pps_sched_20ms->r10s() || _srs_pps_sched_40ms->r10s() || _srs_pps_sched_80ms->r10s() || _srs_pps_sched_160ms->r10s() || _srs_pps_sched_320ms->r10s() || _srs_pps_sched_1000ms->r10s()) {
|
||||
snprintf(buf, sizeof(buf), ", sched=%d,%d,%d,%d,%d,%d,%d,%d,%d", _srs_pps_sched_us->r10s(), _srs_pps_sched_10ms->r10s(), _srs_pps_sched_20ms->r10s(), _srs_pps_sched_40ms->r10s(), _srs_pps_sched_80ms->r10s(), _srs_pps_sched_160ms->r10s(), _srs_pps_sched_320ms->r10s(), _srs_pps_sched_1000ms->r10s(), _srs_pps_sched_s->r10s());
|
||||
_srs_pps_sched_160ms->update(_st_stat_sched_160ms); _srs_pps_sched_s->update(_st_stat_sched_s);
|
||||
_srs_pps_sched_15ms->update(_st_stat_sched_15ms); _srs_pps_sched_20ms->update(_st_stat_sched_20ms);
|
||||
_srs_pps_sched_25ms->update(_st_stat_sched_25ms); _srs_pps_sched_30ms->update(_st_stat_sched_30ms);
|
||||
_srs_pps_sched_35ms->update(_st_stat_sched_35ms); _srs_pps_sched_40ms->update(_st_stat_sched_40ms);
|
||||
_srs_pps_sched_80ms->update(_st_stat_sched_80ms);
|
||||
if (_srs_pps_sched_160ms->r10s() || _srs_pps_sched_s->r10s() || _srs_pps_sched_15ms->r10s() || _srs_pps_sched_20ms->r10s() || _srs_pps_sched_25ms->r10s() || _srs_pps_sched_30ms->r10s() || _srs_pps_sched_35ms->r10s() || _srs_pps_sched_40ms->r10s() || _srs_pps_sched_80ms->r10s()) {
|
||||
snprintf(buf, sizeof(buf), ", sched=%d,%d,%d,%d,%d,%d,%d,%d,%d", _srs_pps_sched_15ms->r10s(), _srs_pps_sched_20ms->r10s(), _srs_pps_sched_25ms->r10s(), _srs_pps_sched_30ms->r10s(), _srs_pps_sched_35ms->r10s(), _srs_pps_sched_40ms->r10s(), _srs_pps_sched_80ms->r10s(), _srs_pps_sched_160ms->r10s(), _srs_pps_sched_s->r10s());
|
||||
sched_desc = buf;
|
||||
}
|
||||
|
||||
|
|
@ -424,8 +428,8 @@ srs_error_t SrsHybridServer::notify(int event, srs_utime_t interval, srs_utime_t
|
|||
|
||||
string thread_desc;
|
||||
_srs_pps_thread_run->update(_st_stat_thread_run); _srs_pps_thread_idle->update(_st_stat_thread_idle);
|
||||
if (_srs_pps_thread_run->r10s() || _srs_pps_thread_idle->r10s()) {
|
||||
snprintf(buf, sizeof(buf), ", co=%d,%d", _srs_pps_thread_run->r10s(), _srs_pps_thread_idle->r10s());
|
||||
if (_st_active_count > 0 || _srs_pps_thread_run->r10s() || _srs_pps_thread_idle->r10s()) {
|
||||
snprintf(buf, sizeof(buf), ", co=%d,%d,%d", _st_active_count, _srs_pps_thread_run->r10s(), _srs_pps_thread_idle->r10s());
|
||||
thread_desc = buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1270,27 +1270,31 @@ srs_error_t SrsServer::setup_ticks()
|
|||
srs_freep(timer_);
|
||||
timer_ = new SrsHourGlass("srs", this, 1 * SRS_UTIME_SECONDS);
|
||||
|
||||
if ((err = timer_->tick(2, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(3, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(4, 6 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(5, 6 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(6, 9 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(7, 9 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(8, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
if (_srs_config->get_stats_enabled()) {
|
||||
if ((err = timer_->tick(2, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(3, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(4, 6 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(5, 6 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(6, 9 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
if ((err = timer_->tick(7, 9 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
|
||||
if ((err = timer_->tick(8, 3 * SRS_UTIME_SECONDS)) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
}
|
||||
}
|
||||
|
||||
if (_srs_config->get_heartbeat_enabled()) {
|
||||
if ((err = timer_->tick(9, _srs_config->get_heartbeat_interval())) != srs_success) {
|
||||
return srs_error_wrap(err, "tick");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue