cgroup: add tracing points for cgroup v2 freezer
Add cgroup:cgroup_freeze and cgroup:cgroup_unfreeze events, which are using the existing cgroup tracing infrastructure. Add the cgroup_event event class, which is similar to the cgroup class, but contains an additional integer field to store a new value (the level field is dropped). Also add two tracing events: cgroup_notify_populated and cgroup_notify_frozen, which are raised in a generic way using the TRACE_CGROUP_PATH() macro. This allows to trace cgroup state transitions and is generally helpful for debugging the cgroup freezer code. Signed-off-by: Roman Gushchin <guro@fb.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:

committed by
Tejun Heo

parent
712e351787
commit
4c476d8cff
@@ -103,6 +103,20 @@ DEFINE_EVENT(cgroup, cgroup_rename,
|
||||
TP_ARGS(cgrp, path)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(cgroup, cgroup_freeze,
|
||||
|
||||
TP_PROTO(struct cgroup *cgrp, const char *path),
|
||||
|
||||
TP_ARGS(cgrp, path)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(cgroup, cgroup_unfreeze,
|
||||
|
||||
TP_PROTO(struct cgroup *cgrp, const char *path),
|
||||
|
||||
TP_ARGS(cgrp, path)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(cgroup_migrate,
|
||||
|
||||
TP_PROTO(struct cgroup *dst_cgrp, const char *path,
|
||||
@@ -149,6 +163,47 @@ DEFINE_EVENT(cgroup_migrate, cgroup_transfer_tasks,
|
||||
TP_ARGS(dst_cgrp, path, task, threadgroup)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(cgroup_event,
|
||||
|
||||
TP_PROTO(struct cgroup *cgrp, const char *path, int val),
|
||||
|
||||
TP_ARGS(cgrp, path, val),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( int, root )
|
||||
__field( int, id )
|
||||
__field( int, level )
|
||||
__string( path, path )
|
||||
__field( int, val )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->root = cgrp->root->hierarchy_id;
|
||||
__entry->id = cgrp->id;
|
||||
__entry->level = cgrp->level;
|
||||
__assign_str(path, path);
|
||||
__entry->val = val;
|
||||
),
|
||||
|
||||
TP_printk("root=%d id=%d level=%d path=%s val=%d",
|
||||
__entry->root, __entry->id, __entry->level, __get_str(path),
|
||||
__entry->val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(cgroup_event, cgroup_notify_populated,
|
||||
|
||||
TP_PROTO(struct cgroup *cgrp, const char *path, int val),
|
||||
|
||||
TP_ARGS(cgrp, path, val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(cgroup_event, cgroup_notify_frozen,
|
||||
|
||||
TP_PROTO(struct cgroup *cgrp, const char *path, int val),
|
||||
|
||||
TP_ARGS(cgrp, path, val)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_CGROUP_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
Reference in New Issue
Block a user