diff options
author | Tejun Heo <tj@kernel.org> | 2019-08-30 00:47:19 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-08-30 15:42:49 +0200 |
commit | 3a8e9ac89e6a5106cfb6b85d4c9cf9bfa3519bc7 (patch) | |
tree | 690ba707f1bd5b427751ff434fc27ae7fd022ab0 /mm | |
parent | blkcg: add missing NULL check in ioc_cpd_alloc() (diff) | |
download | linux-3a8e9ac89e6a5106cfb6b85d4c9cf9bfa3519bc7.tar.xz linux-3a8e9ac89e6a5106cfb6b85d4c9cf9bfa3519bc7.zip |
writeback: add tracepoints for cgroup foreign writebacks
cgroup foreign inode handling has quite a bit of heuristics and
internal states which sometimes makes it difficult to understand
what's going on. Add tracepoints to improve visibility.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memcontrol.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 89b65f5ca634..4390994e8be9 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4066,6 +4066,8 @@ static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css, #ifdef CONFIG_CGROUP_WRITEBACK +#include <trace/events/writeback.h> + static int memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp) { return wb_domain_init(&memcg->cgwb_domain, gfp); @@ -4203,6 +4205,8 @@ void mem_cgroup_track_foreign_dirty_slowpath(struct page *page, int oldest = -1; int i; + trace_track_foreign_dirty(page, wb); + /* * Pick the slot to use. If there is already a slot for @wb, keep * using it. If not replace the oldest one which isn't being @@ -4263,6 +4267,7 @@ void mem_cgroup_flush_foreign(struct bdi_writeback *wb) if (time_after64(frn->at, now - intv) && atomic_read(&frn->done.cnt) == 1) { frn->at = 0; + trace_flush_foreign(wb, frn->bdi_id, frn->memcg_id); cgroup_writeback_by_id(frn->bdi_id, frn->memcg_id, 0, WB_REASON_FOREIGN_FLUSH, &frn->done); |