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:
Родитель
ffd1f609ab
Коммит
e1cbe23601
|
@ -204,6 +204,52 @@ 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)
|
||||
__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,
|
||||
|
||||
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;
|
||||
*pdirty = dirty;
|
||||
trace_global_dirty_state(background, dirty);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче