mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-23 22:25:40 +08:00
writeback: trace global_dirty_state
Add trace event balance_dirty_state for showing the global dirty page counts and thresholds at each global_dirty_limits() invocation. This will cover the callers throttle_vm_writeout(), over_bground_thresh() and each balance_dirty_pages() loop. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
This commit is contained in:
parent
ffd1f609ab
commit
e1cbe23601
@ -204,6 +204,52 @@ TRACE_EVENT(writeback_queue_io,
|
|||||||
__entry->moved)
|
__entry->moved)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(global_dirty_state,
|
||||||
|
|
||||||
|
TP_PROTO(unsigned long background_thresh,
|
||||||
|
unsigned long dirty_thresh
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_ARGS(background_thresh,
|
||||||
|
dirty_thresh
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(unsigned long, nr_dirty)
|
||||||
|
__field(unsigned long, nr_writeback)
|
||||||
|
__field(unsigned long, nr_unstable)
|
||||||
|
__field(unsigned long, background_thresh)
|
||||||
|
__field(unsigned long, dirty_thresh)
|
||||||
|
__field(unsigned long, dirty_limit)
|
||||||
|
__field(unsigned long, nr_dirtied)
|
||||||
|
__field(unsigned long, nr_written)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->nr_dirty = global_page_state(NR_FILE_DIRTY);
|
||||||
|
__entry->nr_writeback = global_page_state(NR_WRITEBACK);
|
||||||
|
__entry->nr_unstable = global_page_state(NR_UNSTABLE_NFS);
|
||||||
|
__entry->nr_dirtied = global_page_state(NR_DIRTIED);
|
||||||
|
__entry->nr_written = global_page_state(NR_WRITTEN);
|
||||||
|
__entry->background_thresh = background_thresh;
|
||||||
|
__entry->dirty_thresh = dirty_thresh;
|
||||||
|
__entry->dirty_limit = global_dirty_limit;
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk("dirty=%lu writeback=%lu unstable=%lu "
|
||||||
|
"bg_thresh=%lu thresh=%lu limit=%lu "
|
||||||
|
"dirtied=%lu written=%lu",
|
||||||
|
__entry->nr_dirty,
|
||||||
|
__entry->nr_writeback,
|
||||||
|
__entry->nr_unstable,
|
||||||
|
__entry->background_thresh,
|
||||||
|
__entry->dirty_thresh,
|
||||||
|
__entry->dirty_limit,
|
||||||
|
__entry->nr_dirtied,
|
||||||
|
__entry->nr_written
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
DECLARE_EVENT_CLASS(writeback_congest_waited_template,
|
DECLARE_EVENT_CLASS(writeback_congest_waited_template,
|
||||||
|
|
||||||
TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
|
TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
|
||||||
|
@ -447,6 +447,7 @@ void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty)
|
|||||||
}
|
}
|
||||||
*pbackground = background;
|
*pbackground = background;
|
||||||
*pdirty = dirty;
|
*pdirty = dirty;
|
||||||
|
trace_global_dirty_state(background, dirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user