lkml.org 
[lkml]   [2018]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 14/62] perf tools: Allow overriding MAX_NR_CPUS at compile time
    Date
    From: Christophe Leroy <christophe.leroy@c-s.fr>

    [ Upstream commit 21b8732eb4479b579bda9ee38e62b2c312c2a0e5 ]

    After update of kernel, the perf tool doesn't run anymore on my 32MB RAM
    powerpc board, but still runs on a 128MB RAM board:

    ~# strace perf
    execve("/usr/sbin/perf", ["perf"], [/* 12 vars */]) = -1 ENOMEM (Cannot allocate memory)
    --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
    +++ killed by SIGSEGV +++
    Segmentation fault

    objdump -x shows that .bss section has a huge size of 24Mbytes:

    27 .bss 016baca8 101cebb8 101cebb8 001cd988 2**3

    With especially the following objects having quite big size:

    10205f80 l O .bss 00140000 runtime_cycles_stats
    10345f80 l O .bss 00140000 runtime_stalled_cycles_front_stats
    10485f80 l O .bss 00140000 runtime_stalled_cycles_back_stats
    105c5f80 l O .bss 00140000 runtime_branches_stats
    10705f80 l O .bss 00140000 runtime_cacherefs_stats
    10845f80 l O .bss 00140000 runtime_l1_dcache_stats
    10985f80 l O .bss 00140000 runtime_l1_icache_stats
    10ac5f80 l O .bss 00140000 runtime_ll_cache_stats
    10c05f80 l O .bss 00140000 runtime_itlb_cache_stats
    10d45f80 l O .bss 00140000 runtime_dtlb_cache_stats
    10e85f80 l O .bss 00140000 runtime_cycles_in_tx_stats
    10fc5f80 l O .bss 00140000 runtime_transaction_stats
    11105f80 l O .bss 00140000 runtime_elision_stats
    11245f80 l O .bss 00140000 runtime_topdown_total_slots
    11385f80 l O .bss 00140000 runtime_topdown_slots_retired
    114c5f80 l O .bss 00140000 runtime_topdown_slots_issued
    11605f80 l O .bss 00140000 runtime_topdown_fetch_bubbles
    11745f80 l O .bss 00140000 runtime_topdown_recovery_bubbles

    This is due to commit 4d255766d28b1 ("perf: Bump max number of cpus
    to 1024"), because many tables are sized with MAX_NR_CPUS

    This patch gives the opportunity to redefine MAX_NR_CPUS via

    $ make EXTRA_CFLAGS=-DMAX_NR_CPUS=1

    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/20170922112043.8349468C57@po15668-vm-win7.idsi0.si.c-s.fr
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    tools/perf/perf.h | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/tools/perf/perf.h b/tools/perf/perf.h
    index 9a0236a4cf95..8f8d895d5b74 100644
    --- a/tools/perf/perf.h
    +++ b/tools/perf/perf.h
    @@ -22,7 +22,9 @@ static inline unsigned long long rdclock(void)
    return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
    }

    +#ifndef MAX_NR_CPUS
    #define MAX_NR_CPUS 1024
    +#endif

    extern const char *input_name;
    extern bool perf_host, perf_guest;
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-09-02 15:25    [W:7.138 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site