diff options
author | Ben Pfaff <blp@nicira.com> | 2013-07-11 17:02:12 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2013-07-11 17:02:12 -0700 |
commit | 94f3e5269e93e85001b078fd475217c997bbba70 (patch) | |
tree | d5f2ce407cc50458ca69bf885ff21969b0a1987d /lib/poll-loop.c | |
parent | bc7ad7d4740b10d08249b2e8017c766396ff53ce (diff) | |
download | openvswitch-94f3e5269e93e85001b078fd475217c997bbba70.tar.gz |
timeval: Remove backtrace feature.
The backtrace feature of timeval is useful because it provides a "poor
man's profile" view of Open vSwitch. But it is not likely to be useful in
a multithreaded process, because signal delivery doesn't necessarily follow
the profile when there is more than one thread. (A signal in a
multithreaded process are delivered to an arbitrary thread.)
Another problem with the backtrace feature is that it is difficult for
format_backtraces() to synchronize properly with the signal handler in a
multithreaded process. In a single-threaded process, it can just block
the signal handler, but in a multithreaded process this does not prevent
signal delivery to threads other than the one running format_backtrace().
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ed Maste <emaste@freebsd.org>
Diffstat (limited to 'lib/poll-loop.c')
-rw-r--r-- | lib/poll-loop.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/lib/poll-loop.c b/lib/poll-loop.c index ea00d265a..5f4b16c84 100644 --- a/lib/poll-loop.c +++ b/lib/poll-loop.c @@ -156,7 +156,6 @@ 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,11 +199,6 @@ 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); |