History

timers/migration: Handle capacity in connect tracepoints

This let tracers know to which hierarchy a CPU belongs to.

Frederic Weisbecker committed 6 months ago

Commit 5a7dfbc1 parent 098cbaa2 files · +16 −12Browse files

Unified · Split

2 files
  1. include/trace/events/timer_migration.h +14 −10
  2. kernel/time/timer_migration.c +2 −2
include/trace/events/timer_migration.h+14−10
@@ -33,15 +33,16 @@ TRACE_EVENT(tmigr_group_set, · 32 unmodified lines
33 33
34TRACE_EVENT(tmigr_connect_child_parent,34TRACE_EVENT(tmigr_connect_child_parent,
35 35
36 TP_PROTO(struct tmigr_group *child),36 TP_PROTO(struct tmigr_hierarchy *hier, struct tmigr_group *child),
37 37
38 TP_ARGS(child),38 TP_ARGS(hier, child),
39 39
40 TP_STRUCT__entry(40 TP_STRUCT__entry(
41 __field( void *, child )41 __field( void *, child )
42 __field( void *, parent )42 __field( void *, parent )
43 __field( unsigned int, lvl )43 __field( unsigned int, lvl )
44 __field( unsigned int, numa_node )44 __field( unsigned int, numa_node )
45 __field( unsigned int, capacity )
45 __field( unsigned int, num_children )46 __field( unsigned int, num_children )
46 __field( u32, groupmask )47 __field( u32, groupmask )
47 ),48 ),
@@ -51,26 +52,28 @@ TRACE_EVENT(tmigr_connect_child_parent, · 3 unmodified lines
51 __entry->parent = child->parent;52 __entry->parent = child->parent;
52 __entry->lvl = child->parent->level;53 __entry->lvl = child->parent->level;
53 __entry->numa_node = child->parent->numa_node;54 __entry->numa_node = child->parent->numa_node;
55 __entry->capacity = hier->capacity;
54 __entry->num_children = child->parent->num_children;56 __entry->num_children = child->parent->num_children;
55 __entry->groupmask = child->groupmask;57 __entry->groupmask = child->groupmask;
56 ),58 ),
57 59
58 TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",60 TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d capacity=%d num_children=%d",
59 __entry->child, __entry->groupmask, __entry->parent,61 __entry->child, __entry->groupmask, __entry->parent, __entry->lvl,
60 __entry->lvl, __entry->numa_node, __entry->num_children)62 __entry->numa_node, __entry->capacity, __entry->num_children)
61);63);
62 64
63TRACE_EVENT(tmigr_connect_cpu_parent,65TRACE_EVENT(tmigr_connect_cpu_parent,
64 66
65 TP_PROTO(struct tmigr_cpu *tmc),67 TP_PROTO(struct tmigr_hierarchy *hier, struct tmigr_cpu *tmc),
66 68
67 TP_ARGS(tmc),69 TP_ARGS(hier, tmc),
68 70
69 TP_STRUCT__entry(71 TP_STRUCT__entry(
70 __field( void *, parent )72 __field( void *, parent )
71 __field( unsigned int, cpu )73 __field( unsigned int, cpu )
72 __field( unsigned int, lvl )74 __field( unsigned int, lvl )
73 __field( unsigned int, numa_node )75 __field( unsigned int, numa_node )
76 __field( unsigned int, capacity )
74 __field( unsigned int, num_children )77 __field( unsigned int, num_children )
75 __field( u32, groupmask )78 __field( u32, groupmask )
76 ),79 ),
@@ -80,13 +83,14 @@ TRACE_EVENT(tmigr_connect_cpu_parent, · 3 unmodified lines
80 __entry->cpu = tmc->cpuevt.cpu;83 __entry->cpu = tmc->cpuevt.cpu;
81 __entry->lvl = tmc->tmgroup->level;84 __entry->lvl = tmc->tmgroup->level;
82 __entry->numa_node = tmc->tmgroup->numa_node;85 __entry->numa_node = tmc->tmgroup->numa_node;
86 __entry->capacity = hier->capacity;
83 __entry->num_children = tmc->tmgroup->num_children;87 __entry->num_children = tmc->tmgroup->num_children;
84 __entry->groupmask = tmc->groupmask;88 __entry->groupmask = tmc->groupmask;
85 ),89 ),
86 90
87 TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",91 TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d capacity=%d num_children=%d",
88 __entry->cpu, __entry->groupmask, __entry->parent,92 __entry->cpu, __entry->groupmask, __entry->parent, __entry->lvl,
89 __entry->lvl, __entry->numa_node, __entry->num_children)93 __entry->numa_node, __entry->capacity, __entry->num_children)
90);94);
91 95
92DECLARE_EVENT_CLASS(tmigr_group_and_cpu,96DECLARE_EVENT_CLASS(tmigr_group_and_cpu,
kernel/time/timer_migration.c+2−2
@@ -1752,7 +1752,7 @@ static void tmigr_connect_child_parent(struct tmigr_hierarchy *hier, struct tmig · 1751 unmodified lines
1752 */1752 */
1753 smp_store_release(&child->parent, parent);1753 smp_store_release(&child->parent, parent);
1754 1754
1755 trace_tmigr_connect_child_parent(child);1755 trace_tmigr_connect_child_parent(hier, child);
1756}1756}
1757 1757
1758static int tmigr_setup_groups(struct tmigr_hierarchy *hier, unsigned int cpu,1758static int tmigr_setup_groups(struct tmigr_hierarchy *hier, unsigned int cpu,
@@ -1827,7 +1827,7 @@ static int tmigr_setup_groups(struct tmigr_hierarchy *hier, unsigned int cpu, · 68 unmodified lines
1827 1827
1828 tmigr_init_root(hier, group, activate);1828 tmigr_init_root(hier, group, activate);
1829 1829
1830 trace_tmigr_connect_cpu_parent(tmc);1830 trace_tmigr_connect_cpu_parent(hier, tmc);
1831 1831
1832 /* There are no children that need to be connected */1832 /* There are no children that need to be connected */
1833 continue;1833 continue;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t