perf: reorder perf_event_context to remove 8 bytes of padding on 64 bit builds
PATCH 1/1 perf: reorder perf_event_context to remove 8 bytes of padding on 64 bit builds
Reorder structure perf_event_context to remove 8 bytes of padding on 64 bit builds, which also shrinks structure perf_cpu_context by 8 bytes. Reducing its size to 256 bytes so allowing it to fit into one fewer cache lines.
Signed-off-by Richard Kennedy <[email protected]>
----
patch against v3.4-rc7
compiled and tested on x86_64
I have given this patch some light testing and perf still seems to work OK.
perf_pin_task_context() increments both the pin_count and the refcount so it seems a sensible place to put pin_count so there isn't any padding after refcount. Obviously we can reorder this structure in other ways if you prefer.
regards
Richard
include/linux/perf_event.h +3 -3
@@ -1027,6 +1027,7 @@ struct perf_event_context {int nr_freq;int rotate_disable;atomic_t refcount; +int pin_count;struct task_struct *task;/*
@@ -1036,13 +1037,12 @@ struct perf_event_context {u64 timestamp;/* -* These fields let us detect when two contexts have both -* been cloned (inherited) from a common ancestor. +* These fields (with pin_count) let us detect when two contexts +* have both been cloned (inherited) from a common ancestor. */ struct perf_event_context *parent_ctx;u64 parent_gen;u64 generation; -int pin_count;int nr_cgroups;/* cgroup evts */ int nr_branch_stack;/* branch_stack evt */ struct rcu_head rcu_head;