2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

poll-loop: Log backtraces when CPU usage is high.

Often when debugging Open vSwitch, one will see in the logs that
CPU usage has been high for some period of time, but it's totally
unclear why.  In an attempt to remedy the situation, this patch
logs backtraces taken at regular intervals as a poor man's
profiling alternative.

Signed-off-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
Ethan Jackson
2012-10-22 16:53:54 -07:00
parent 7d1563e961
commit f43e80e023
3 changed files with 19 additions and 4 deletions

View File

@@ -157,6 +157,7 @@ poll_immediate_wake(const char *where)
static void
log_wakeup(const char *where, const struct pollfd *pollfd, int timeout)
{
static struct vlog_rate_limit trace_rl = VLOG_RATE_LIMIT_INIT(1, 1);
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(10, 10);
enum vlog_level level;
int cpu_usage;
@@ -200,6 +201,11 @@ log_wakeup(const char *where, const struct pollfd *pollfd, int timeout)
}
if (cpu_usage >= 0) {
ds_put_format(&s, " (%d%% CPU usage)", cpu_usage);
if (!vlog_should_drop(THIS_MODULE, level, &trace_rl)) {
ds_put_char(&s, '\n');
format_backtraces(&s, 2);
}
}
VLOG(level, "%s", ds_cstr(&s));
ds_destroy(&s);