mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 18:23:53 +08:00
btrfs: qgroup: Introduce trace event to analyse the number of dirty extents accounted
Number of qgroup dirty extents is directly linked to the performance overhead, so add a new trace event, trace_qgroup_num_dirty_extents(), to record how many dirty extents is processed in btrfs_qgroup_account_extents(). This will be pretty handy to analyze later balance performance improvement. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
fa6ac71524
commit
c337e7b02f
@ -2132,6 +2132,7 @@ int btrfs_qgroup_account_extents(struct btrfs_trans_handle *trans)
|
||||
struct btrfs_delayed_ref_root *delayed_refs;
|
||||
struct ulist *new_roots = NULL;
|
||||
struct rb_node *node;
|
||||
u64 num_dirty_extents = 0;
|
||||
u64 qgroup_to_skip;
|
||||
int ret = 0;
|
||||
|
||||
@ -2141,6 +2142,7 @@ int btrfs_qgroup_account_extents(struct btrfs_trans_handle *trans)
|
||||
record = rb_entry(node, struct btrfs_qgroup_extent_record,
|
||||
node);
|
||||
|
||||
num_dirty_extents++;
|
||||
trace_btrfs_qgroup_account_extents(fs_info, record);
|
||||
|
||||
if (!ret) {
|
||||
@ -2186,6 +2188,8 @@ cleanup:
|
||||
kfree(record);
|
||||
|
||||
}
|
||||
trace_qgroup_num_dirty_extents(fs_info, trans->transid,
|
||||
num_dirty_extents);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1576,6 +1576,27 @@ DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_trace_extent,
|
||||
TP_ARGS(fs_info, rec)
|
||||
);
|
||||
|
||||
TRACE_EVENT(qgroup_num_dirty_extents,
|
||||
|
||||
TP_PROTO(const struct btrfs_fs_info *fs_info, u64 transid,
|
||||
u64 num_dirty_extents),
|
||||
|
||||
TP_ARGS(fs_info, transid, num_dirty_extents),
|
||||
|
||||
TP_STRUCT__entry_btrfs(
|
||||
__field( u64, transid )
|
||||
__field( u64, num_dirty_extents )
|
||||
),
|
||||
|
||||
TP_fast_assign_btrfs(fs_info,
|
||||
__entry->transid = transid;
|
||||
__entry->num_dirty_extents = num_dirty_extents;
|
||||
),
|
||||
|
||||
TP_printk_btrfs("transid=%llu num_dirty_extents=%llu",
|
||||
__entry->transid, __entry->num_dirty_extents)
|
||||
);
|
||||
|
||||
TRACE_EVENT(btrfs_qgroup_account_extent,
|
||||
|
||||
TP_PROTO(const struct btrfs_fs_info *fs_info, u64 transid, u64 bytenr,
|
||||
|
Loading…
Reference in New Issue
Block a user