Hello,

I am encountering an issue where the pfm_get_os_event_encoding() API could
not find l3_misses or l3_accesses perf events by running the following
simple code:
~$ pfm_test l3_misses 0
pfm_test: cannot get encoding: event not found
~$ pfm_test cache-misses 0
cache-misses event supported by libpfm

```
#include <err.h>
#include <inttypes.h>
#include <perfmon/pfmlib.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv)
{
    pfm_pmu_encode_arg_t arg;
    int ret;
    char *event_name;
    int os_encoding;

    if (argc != 3) {
         fprintf(stderr, "Usage: %s <event_name> <os_encoding>\n", argv[0]);
         return 1;
    }

    event_name =argv[1];
    os_encoding = atoi(argv[2]);

     ret = pfm_initialize();
     if (ret != PFM_SUCCESS)
           errx(1, "cannot initialize library %s", pfm_strerror(ret));

    memset(&arg, 0, sizeof(arg));
    char* fqstr = malloc(256);
    if (!fqstr) {
           errx(1, "Failed to allocate memory for fully qualified string");
    }

    arg.fstr = &fqstr;
    arg.size = sizeof(arg);

    ret = pfm_get_os_event_encoding(event_name, PFM_PLM0|PFM_PLM3,
os_encoding, &arg);
    if (ret != PFM_SUCCESS)
           errx(1, "cannot get encoding: %s", pfm_strerror(ret));
    else
           printf("%s event supported by libpfm\n", event_name);

       free(fqstr);
       return 0;
}


However, these events can be successfully monitored using the perf CLI tool:

```
 ~$sudo perf stat -a -e l3_misses,l3_accesses -- sleep 1

 Performance counter stats for 'system wide':

     1,122,395,814      l3_misses

     4,398,985,531      l3_accesses


       1.005054759 seconds time elapsed
```
The environment is running on a kernel version 6.1 with an AMD EPYC 7642
48-Core Processor.

Any suggestions?
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to