-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some counters with more complex programming requirements don't work with libpfc #17
Comments
I did some of the more tedious work related to supporting a new MSR, and exposed it for reading, though not writing (because I suppose what's left is that if a counter gets programmed with an I still need to think of a way to systematize all of these MSR accesses. More broadly, I feel that the kernel module, kernel-userland ABI and libpfc.h API are all overdue for a refactoring. But it's hard to take into account all hardware generations' quirks, events lists, restrictions on which counter may count what, ... and to then encode this within both the kernel and userland. Then there is the issue of how to deal with counter virtualization. Making the counter values follow the thread would remove the limitation of pinning the thread to just one core, but would be a massive undertaking to support and I've no idea how to even begin. |
Indeed, I don't suggest a general solution because I think "it's complicated". Personally I wouldn't embark on the path of trying to virtualize counters: this already happens with Presumably |
Yes, I think so - and the API also needs a way to accept this additional info (since I don't think it all gets packed into the one raw code). |
Some counters have more complex programming requirements, e.g., setting two different MSRs.
Unfortunately, this includes pretty interesting counters such as the
L1I_MISS
counters. See here for a concrete example and a nasty workaround.It would be awesome if libpfc supported these (maybe I'll do it someday if no one gets to it).
The text was updated successfully, but these errors were encountered: