• Yunlong Song's avatar
    perf sched replay: Realloc the memory of pid_to_task stepwise to adapt to the... · 3a423a5c
    Yunlong Song authored
    perf sched replay: Realloc the memory of pid_to_task stepwise to adapt to the different pid_max configurations
    
    Although the memory of pid_to_task can be allocated via calloc according
    to the value of /proc/sys/kernel/pid_max, it cannot handle the case when
    pid_max is changed after 'perf sched record' has created its perf.data.
    
    If the new pid_max configured in 'perf sched replay' is smaller than the
    old pid_max configured in 'perf sched record', then it will cause the
    assertion failure problem.
    
    To solve this problem, we realloc the memory of pid_to_task stepwise
    once the passed-in pid parameter in register_pid is larger than the
    current pid_max.
    
    Example:
    
    Test environment: x86_64 with 160 cores
    
     $ cat /proc/sys/kernel/pid_max
     163840
     $ perf sched record ls
     $ echo 5000 > /proc/sys/kernel/pid_max
     $ cat /proc/sys/kernel/pid_max
     5000
    
    Before this patch:
    
     $ perf sched replay
     run measurement overhead: 221 nsecs
     sleep measurement overhead: 55356 nsecs
     the run test took 1000011 nsecs
     the sleep test took 1060940 nsecs
     perf: builtin-sched.c:337: register_pid: Assertion `!(pid >= (unsigned
     long)pid_max)' failed.
     Aborted
    
    After this patch:
    
     $ perf sched replay
     run measurement overhead: 221 nsecs
     sleep measurement overhead: 55611 nsecs
     the run test took 1000026 nsecs
     the sleep test took 1060486 nsecs
     nr_run_events:        10
     nr_sleep_events:      1562
     nr_wakeup_events:     5
     task      0 (                  :1:         1), nr_events: 1
     task      1 (                  :2:         2), nr_events: 1
     task      2 (                  :3:         3), nr_events: 1
     task      3 (                  :5:         5), nr_events: 1
     ...
    Signed-off-by: default avatarYunlong Song <yunlong.song@huawei.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1427809596-29559-5-git-send-email-yunlong.song@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    3a423a5c
builtin-sched.c 44.2 KB