Skip to content

Large performance regression 1.14.0 -> 1.14.1 #899

@ctz

Description

@ctz

Downstream in rustls we have some simple performance tests that show a 26000% regression in full handshake performance when taking the aws-lc-rs 1.14.0 -> 1.14.1 upgrade.

This is measured in valgrind instruction-equivalents, and those go from approx 1,500,000 insns (1.14.0) to 423,000,000 insns (1.14.1).

I haven't looked into this in detail yet, but a few observations so far:

  • this is a non-FIPS use, so is jitterent the right thing to be using? I thought it was a legalistic work-around for FIPS requirements about having a standalone entropy source.
  • SHA3 has generally poor CPU performance compared to SHA2 (especially when SHA2 has wide CPU support, but SHA3 does not yet), so is that a good choice for a default entropy source?
  • It seems the jitter entropy code has its own SHA3 code? What's up with that?
  • It seems the jitter entropy code is compiled with -O0. Intentional?

At this point it's unclear to me whether this is "real" or specific to how valgrind measures things.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions