Skip to content
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

Implement improved Crc64 performance benchmark #111

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

samuel-lee-msft
Copy link
Contributor

As mentioned in #103, I wanted to share a performance benchmark which can be better used to investigate the performance characteristics of interest for CRC functions. The new crc64_funcs_perf_detailed binary is a direct iteration on the existing crc64_funcs_perf benchmark, with command line options to specify many parameters:

  1. The sizes of buffers to test. The user can specify a start and end size, a stride, and a number of strides to take before doubling the stride (to simply enable uniform and exponential distributions of size in ranges of interest).
  2. The CRC functions to test. The user can specify a subset of functions to test, for brevity.
  3. Whether to test the functions with buffers that are hot (use the same buffer repeatedly), cold (use a buffer that is highly unlikely to be in any level of cache or prefetched by HW), or both (default).
  4. The time to spend gathering data for each set of parameters (in seconds).
  5. The alignment and offset of buffers - I added these options as I observed some strange behaviour (see CRC performance on Skylake (prefetching tweaks) #103) from prefetching across a page boundary when running tests bare-metal in Windows.
  6. Verbosity - rather than having to format the output of the tool to visualise the data, by default the results are printed in a form which can be directly used for generating a pivot table.

The argument parsing is not very neat, but I thought I would share what I have, and see what you think in terms of steps needed to refine.

+ Create a more in depth performance exploration tool for CRC64
functions

Signed-off-by: Samuel Lee <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant