Skip to content

Commit

Permalink
perf, x86: Use NUMA aware allocations for PEBS/BTS/DS allocations
Browse files Browse the repository at this point in the history
For performance reasons its best to use memory node local memory for
per-cpu buffers.

This logic comes from a much larger patch proposed by Stephane.

Suggested-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Stephane Eranian <eranian@google.com>
LKML-Reference: <20101019134808.514465326@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Peter Zijlstra authored and Ingo Molnar committed Oct 22, 2010
1 parent f80c9e3 commit 96681fc
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions arch/x86/kernel/cpu/perf_event_intel_ds.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,14 @@ static void fini_debug_store_on_cpu(int cpu)
static int alloc_pebs_buffer(int cpu)
{
struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds;
int node = cpu_to_node(cpu);
int max, thresh = 1; /* always use a single PEBS record */
void *buffer;

if (!x86_pmu.pebs)
return 0;

buffer = kzalloc(PEBS_BUFFER_SIZE, GFP_KERNEL);
buffer = kmalloc_node(PEBS_BUFFER_SIZE, GFP_KERNEL | __GFP_ZERO, node);
if (unlikely(!buffer))
return -ENOMEM;

Expand Down Expand Up @@ -114,13 +115,14 @@ static void release_pebs_buffer(int cpu)
static int alloc_bts_buffer(int cpu)
{
struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds;
int node = cpu_to_node(cpu);
int max, thresh;
void *buffer;

if (!x86_pmu.bts)
return 0;

buffer = kzalloc(BTS_BUFFER_SIZE, GFP_KERNEL);
buffer = kmalloc_node(BTS_BUFFER_SIZE, GFP_KERNEL | __GFP_ZERO, node);
if (unlikely(!buffer))
return -ENOMEM;

Expand Down Expand Up @@ -150,9 +152,10 @@ static void release_bts_buffer(int cpu)

static int alloc_ds_buffer(int cpu)
{
int node = cpu_to_node(cpu);
struct debug_store *ds;

ds = kzalloc(sizeof(*ds), GFP_KERNEL);
ds = kmalloc_node(sizeof(*ds), GFP_KERNEL | __GFP_ZERO, node);
if (unlikely(!ds))
return -ENOMEM;

Expand Down

0 comments on commit 96681fc

Please sign in to comment.