• Ard Biesheuvel's avatar
    crypto: xor - use ktime for template benchmarking · c055e3ea
    Ard Biesheuvel authored
    Currently, we use the jiffies counter as a time source, by staring at
    it until a HZ period elapses, and then staring at it again and perform
    as many XOR operations as we can at the same time until another HZ
    period elapses, so that we can calculate the throughput. This takes
    longer than necessary, and depends on HZ, which is undesirable, since
    HZ is system dependent.
    
    Let's use the ktime interface instead, and use it to time a fixed
    number of XOR operations, which can be done much faster, and makes
    the time spent depend on the performance level of the system itself,
    which is much more reasonable. To ensure that we have the resolution
    we need even on systems with 32 kHz time sources, while not spending too
    much time in the benchmark on a slow CPU, let's switch to 3 attempts of
    800 repetitions each: that way, we will only misidentify algorithms that
    perform within 10% of each other as the fastest if they are faster than
    10 GB/s to begin with, which is not expected to occur on systems with
    such coarse clocks.
    
    On ThunderX2, I get the following results:
    
    Before:
    
      [72625.956765] xor: measuring software checksum speed
      [72625.993104]    8regs     : 10169.000 MB/sec
      [72626.033099]    32regs    : 12050.000 MB/sec
      [72626.073095]    arm64_neon: 11100.000 MB/sec
      [72626.073097] xor: using function: 32regs (12050.000 MB/sec)
    
    After:
    
      [72599.650216] xor: measuring software checksum speed
      [72599.651188]    8regs           : 10491 MB/sec
      [72599.652006]    32regs          : 12345 MB/sec
      [72599.652871]    arm64_neon      : 11402 MB/sec
      [72599.652873] xor: using function: 32regs (12345 MB/sec)
    
    Link: https://lore.kernel.org/linux-crypto/20200923182230.22715-3-ardb@kernel.org/Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    c055e3ea
xor.c 3.76 KB