mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Perf: Add stat for sched of ST.
This commit is contained in:
parent
7b913b1115
commit
a46debb4bb
3 changed files with 118 additions and 18 deletions
32
trunk/3rdparty/st-srs/event.c
vendored
32
trunk/3rdparty/st-srs/event.c
vendored
|
@ -47,6 +47,14 @@
|
|||
#include <sys/epoll.h>
|
||||
#endif
|
||||
|
||||
// Global stat.
|
||||
#ifdef DEBUG
|
||||
unsigned long long _st_stat_epoll = 0;
|
||||
unsigned long long _st_stat_epoll_zero = 0;
|
||||
unsigned long long _st_stat_epoll_shake = 0;
|
||||
unsigned long long _st_stat_epoll_spin = 0;
|
||||
#endif
|
||||
|
||||
#if defined(USE_POLL) && !defined(MD_HAVE_POLL)
|
||||
/* Force poll usage if explicitly asked for it */
|
||||
#define MD_HAVE_POLL
|
||||
|
@ -1205,6 +1213,10 @@ ST_HIDDEN void _st_epoll_dispatch(void)
|
|||
int events, op;
|
||||
short revents;
|
||||
|
||||
#ifdef DEBUG
|
||||
++_st_stat_epoll;
|
||||
#endif
|
||||
|
||||
if (_ST_SLEEPQ == NULL) {
|
||||
timeout = -1;
|
||||
} else {
|
||||
|
@ -1212,8 +1224,18 @@ ST_HIDDEN void _st_epoll_dispatch(void)
|
|||
timeout = (int) (min_timeout / 1000);
|
||||
|
||||
// At least wait 1ms when <1ms, to avoid epoll_wait spin loop.
|
||||
if (min_timeout > 0 && timeout == 0) {
|
||||
timeout = 1;
|
||||
if (timeout == 0) {
|
||||
#ifdef DEBUG
|
||||
++_st_stat_epoll_zero;
|
||||
#endif
|
||||
|
||||
if (min_timeout > 0) {
|
||||
#ifdef DEBUG
|
||||
++_st_stat_epoll_shake;
|
||||
#endif
|
||||
|
||||
timeout = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1240,6 +1262,12 @@ ST_HIDDEN void _st_epoll_dispatch(void)
|
|||
/* Check for I/O operations */
|
||||
nfd = epoll_wait(_st_epoll_data->epfd, _st_epoll_data->evtlist, _st_epoll_data->evtlist_size, timeout);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (nfd <= 0) {
|
||||
++_st_stat_epoll_spin;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (nfd > 0) {
|
||||
for (i = 0; i < nfd; i++) {
|
||||
osfd = _st_epoll_data->evtlist[i].data.fd;
|
||||
|
|
35
trunk/3rdparty/st-srs/sched.c
vendored
35
trunk/3rdparty/st-srs/sched.c
vendored
|
@ -52,6 +52,19 @@
|
|||
#include <valgrind/valgrind.h>
|
||||
#endif
|
||||
|
||||
// Global stat.
|
||||
#ifdef DEBUG
|
||||
unsigned long long _st_stat_clock_us = 0;
|
||||
unsigned long long _st_stat_clock_10ms = 0;
|
||||
unsigned long long _st_stat_clock_20ms = 0;
|
||||
unsigned long long _st_stat_clock_40ms = 0;
|
||||
unsigned long long _st_stat_clock_80ms = 0;
|
||||
unsigned long long _st_stat_clock_160ms = 0;
|
||||
unsigned long long _st_stat_clock_320ms = 0;
|
||||
unsigned long long _st_stat_clock_1000ms = 0;
|
||||
unsigned long long _st_stat_clock_s = 0;
|
||||
#endif
|
||||
|
||||
|
||||
/* Global data */
|
||||
_st_vp_t _st_this_vp; /* This VP */
|
||||
|
@ -482,6 +495,28 @@ void _st_vp_check_clock(void)
|
|||
now = st_utime();
|
||||
elapsed = now - _ST_LAST_CLOCK;
|
||||
_ST_LAST_CLOCK = now;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (elapsed < 1000) {
|
||||
++_st_stat_clock_us;
|
||||
} else if (elapsed < 10000) {
|
||||
++_st_stat_clock_10ms;
|
||||
} else if (elapsed < 20000) {
|
||||
++_st_stat_clock_20ms;
|
||||
} else if (elapsed < 40000) {
|
||||
++_st_stat_clock_40ms;
|
||||
} else if (elapsed < 80000) {
|
||||
++_st_stat_clock_80ms;
|
||||
} else if (elapsed < 160000) {
|
||||
++_st_stat_clock_160ms;
|
||||
} else if (elapsed < 320000) {
|
||||
++_st_stat_clock_320ms;
|
||||
} else if (elapsed < 1000000) {
|
||||
++_st_stat_clock_1000ms;
|
||||
} else {
|
||||
++_st_stat_clock_s;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (_st_curr_time && now - _st_last_tset > 999000) {
|
||||
_st_curr_time = time(NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue