writeback: trace global_dirty_state
Subsystems (4)
PATCH 1/1 writeback: trace global_dirty_state
[It seems beneficial to queue this simple trace event for
next/upstream after the review?]
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.
--- include/trace/events/writeback.h | 36 +++++++++++++++++++++++++++++ mm/page-writeback.c | 1 2 files changed, 37 insertions(+)
mm/page-writeback.c +1 -0
@@ -430,6 +430,7 @@ void global_dirty_limits(unsigned long * } *pbackground = background; *pdirty = dirty; +trace_global_dirty_state (background, dirty); }/**
include/trace/events/writeback.h +36 -0
@@ -187,6 +187,42 @@ TRACE_EVENT(writeback_queue_io, __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) + ), + +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->background_thresh = background_thresh; + __entry->dirty_thresh = dirty_thresh; + ), + +TP_printk ("dirty=%lu writeback=%lu unstable=%lu " +"bg_thresh=%lu thresh=%lu" , + __entry->nr_dirty, + __entry->nr_writeback, + __entry->nr_unstable, + __entry->background_thresh, + __entry->dirty_thresh + ) +); + DECLARE_EVENT_CLASS(writeback_congest_waited_template, TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Jan Kara
maintainerQuoted 7 lines · Wu Fengguang
[It seems beneficial to queue this simple trace event for
next/upstream after the review?]Add trace event
balance_dirty_statefor showing the global dirty page counts and thresholds at eachglobal_dirty_limits()invocation. This will cover the callersthrottle_vm_writeout(),over_bground_thresh()and eachbalance_dirty_pages()loop.
OK, this might be useful. But shouldn't we also add similar trace point
for bdi limits? Otherwise the information is of limited use...
Honza
Quoted 62 lines
Signed-off-by Wu Fengguang <[email protected]>--- include/trace/events/writeback.h | 36 +++++++++++++++++++++++++++++ mm/page-writeback.c | 1 2 files changed, 37 insertions(+)mm/page-writeback.c +1
-0@@ -430,6 +430,7 @@ void global_dirty_limits(unsigned long * } *pbackground = background; *pdirty = dirty; +trace_global_dirty_state (background, dirty); }/** include/trace/events/writeback.h +36
-0@@ -187,6 +187,42 @@ TRACE_EVENT(writeback_queue_io, __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) + ), + +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->background_thresh = background_thresh; + __entry->dirty_thresh = dirty_thresh; + ), + +TP_printk ("dirty=%lu writeback=%lu unstable=%lu " +"bg_thresh=%lu thresh=%lu" , + __entry->nr_dirty, + __entry->nr_writeback, + __entry->nr_unstable, + __entry->background_thresh, + __entry->dirty_thresh + ) +); + DECLARE_EVENT_CLASS(writeback_congest_waited_template, TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
Signature · 9 lines
Jan Kara <[email protected]> SUSE Labs, CR -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 10 lines · Jan Kara
Quoted 7 lines · Wu Fengguang
[It seems beneficial to queue this simple trace event for
next/upstream after the review?]Add trace event
balance_dirty_statefor showing the global dirty page counts and thresholds at eachglobal_dirty_limits()invocation. This will cover the callersthrottle_vm_writeout(),over_bground_thresh()and eachbalance_dirty_pages()loop.OK, this might be useful. But shouldn't we also add similar trace point
for bdi limits? Otherwise the information is of limited use...
Good point. The bdi limits will be exported in another balance_dirty_pages trace point.
Thanks,
Fengguang