Hello Adar Dembo, Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/4626
to look at the new patch set (#3).
Change subject: kernel_stack_watchdog: avoid blocking threads starting
......................................................................
kernel_stack_watchdog: avoid blocking threads starting
I've noticed recently that threads start particularly slowly in TSAN.
One culprit which seems to exacerbate this issue is the following:
- TSAN defers signal-handling in many cases, which causes the stack
watchdog to be slow at collecting stacks.
- The stack watchdog was holding a lock while collecting stacks from
stuck threads.
- This lock blocked other threads from starting, since every new thread
needs to register itself with the watchdog.
The fix here is to make the synchronization more fine-grained: we only
hold this lock long enough to make a copy of the current map of
registered threads. However, it's still important to prevent these
threads from _exiting_ while we are looking at their TLS. So, this patch
adds a new 'unregister_lock_' which is used to prevent such exits.
Since 'lock_' is now held for only short periods of time, I switched it
out for a spinlock instead of a mutex.
Additionally, the lock protecting the log collector was also separated
out.
No new tests are included, but the watchdog is already covered and runs
as part of nearly every test.
Change-Id: I7af85ade6ec9050843ec5b146d26c2549c503d8f
---
M src/kudu/util/kernel_stack_watchdog.cc
M src/kudu/util/kernel_stack_watchdog.h
2 files changed, 60 insertions(+), 32 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/26/4626/3
--
To view, visit http://gerrit.cloudera.org:8080/4626
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I7af85ade6ec9050843ec5b146d26c2549c503d8f
Gerrit-PatchSet: 3
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Todd Lipcon <[email protected]>
Gerrit-Reviewer: Adar Dembo <[email protected]>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <[email protected]>