lkml.org 
[lkml]   [2023]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 14/29] selftests/resctrl: Remove nested calls in perf event handling
    Date
    Perf event handling has functions that are the sole caller of another
    perf event handling related function:
    - reset_enable_llc_perf() calls perf_event_open_llc_miss()
    - perf_event_measure() calls get_llc_perf()

    Remove the extra layer of calls to make the code easier to follow by
    moving the code into the calling function.

    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
    ---
    tools/testing/selftests/resctrl/cache.c | 64 ++++++-------------------
    1 file changed, 14 insertions(+), 50 deletions(-)

    diff --git a/tools/testing/selftests/resctrl/cache.c b/tools/testing/selftests/resctrl/cache.c
    index 11d1a6ce14c2..4f846a2e5e26 100644
    --- a/tools/testing/selftests/resctrl/cache.c
    +++ b/tools/testing/selftests/resctrl/cache.c
    @@ -29,24 +29,13 @@ static void initialize_perf_event_attr(void)
    pea_llc_miss.disabled = 1;
    }

    +/* Start counters to log values */
    static void ioctl_perf_event_ioc_reset_enable(void)
    {
    ioctl(fd_lm, PERF_EVENT_IOC_RESET, 0);
    ioctl(fd_lm, PERF_EVENT_IOC_ENABLE, 0);
    }

    -static int perf_event_open_llc_miss(pid_t pid, int cpu_no)
    -{
    - fd_lm = perf_event_open(&pea_llc_miss, pid, cpu_no, -1,
    - PERF_FLAG_FD_CLOEXEC);
    - if (fd_lm == -1) {
    - ksft_perror("Error opening leader");
    - return -1;
    - }
    -
    - return 0;
    -}
    -
    static void initialize_llc_perf(void)
    {
    memset(&pea_llc_miss, 0, sizeof(struct perf_event_attr));
    @@ -62,42 +51,13 @@ static void initialize_llc_perf(void)

    static int reset_enable_llc_perf(pid_t pid, int cpu_no)
    {
    - int ret = 0;
    -
    - ret = perf_event_open_llc_miss(pid, cpu_no);
    - if (ret < 0)
    - return ret;
    -
    - /* Start counters to log values */
    - ioctl_perf_event_ioc_reset_enable();
    -
    - return 0;
    -}
    -
    -/*
    - * get_llc_perf: llc cache miss through perf events
    - * @llc_perf_miss: LLC miss counter that is filled on success
    - *
    - * Perf events like HW_CACHE_MISSES could be used to validate number of
    - * cache lines allocated.
    - *
    - * Return: =0 on success. <0 on failure.
    - */
    -static int get_llc_perf(__u64 *llc_perf_miss)
    -{
    - int ret;
    -
    - /* Stop counters after one span to get miss rate */
    -
    - ioctl(fd_lm, PERF_EVENT_IOC_DISABLE, 0);
    -
    - ret = read(fd_lm, &rf_cqm, sizeof(struct read_format));
    - if (ret == -1) {
    - ksft_perror("Could not get llc misses through perf");
    + fd_lm = perf_event_open(&pea_llc_miss, pid, cpu_no, -1, PERF_FLAG_FD_CLOEXEC);
    + if (fd_lm == -1) {
    + ksft_perror("Error opening leader");
    return -1;
    }

    - *llc_perf_miss = rf_cqm.values[0].value;
    + ioctl_perf_event_ioc_reset_enable();

    return 0;
    }
    @@ -178,14 +138,18 @@ static int print_results_cache(const char *filename, int bm_pid, __u64 llc_value
    */
    static int perf_event_measure(const char *filename, int bm_pid)
    {
    - __u64 llc_perf_miss = 0;
    int ret;

    - ret = get_llc_perf(&llc_perf_miss);
    - if (ret < 0)
    - return ret;
    + /* Stop counters after one span to get miss rate */
    + ioctl(fd_lm, PERF_EVENT_IOC_DISABLE, 0);
    +
    + ret = read(fd_lm, &rf_cqm, sizeof(struct read_format));
    + if (ret == -1) {
    + ksft_perror("Could not get perf value");
    + return -1;
    + }

    - return print_results_cache(filename, bm_pid, llc_perf_miss);
    + return print_results_cache(filename, bm_pid, rf_cqm.values[0].value);
    }

    /*
    --
    2.30.2
    \
     
     \ /
      Last update: 2023-12-11 13:22    [W:4.676 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site