Message ID | 20190415131525.20274-1-wqu@suse.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs: trace: Trace events for btrfs tree locking | expand |
On Mon, Apr 15, 2019 at 09:15:23PM +0800, Qu Wenruo wrote: > This branch can be fetched from github: > https://github.com/adam900710/linux/tree/trace_locking > Which is based on v5.1-rc4 tag. > > This patchset will introduce the following trace events for corresponding > functions: > btrfs_tree_lock (sleepable) > btrfs_tree_unlock > btrfs_tree_read_lock (sleepable) > btrfs_tree_read_unlock > btrfs_tree_read_unlock_blocking > btrfs_set_lock_blocking_read > btrfs_set_lock_blocking_write > btrfs_clear_lock_blocking_read > btrfs_clear_lock_blocking_write > btrfs_try_tree_read_lock > btrfs_try_tree_write_lock > btrfs_tree_read_lock_atomic > > The two sleepable ones will have extra info like start_ns, end_ns, > diff_ns. > Those two can be specially useful for tree lock wait time. > There is tool to utilize those two events already: > https://github.com/adam900710/btrfs-profiler/blob/master/tree_lock_wait.py > > The non-sleepable can be useful for possible user space based lock > leakage/dead lock detector. > > Changelog: > v2: > - Hide all ktime_get_ns() call out of trace events > So there will be no overhead if trace events are not enabled. > > v3: > - More output for human to take a glance > - More trace events for later bcc usage > Like lock leakage and deadlock detection. V3 looks good to me, thanks. The enhanced output of the sleepable lock is still sane.