qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0/6] crypto: improve performance of XTS cipher m


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 0/6] crypto: improve performance of XTS cipher mode
Date: Tue, 9 Oct 2018 17:59:46 +0400

Hi

On Tue, Oct 9, 2018 at 4:57 PM Daniel P. Berrangé <address@hidden> wrote:
>
> The XTS cipher mode is significantly slower than CBC mode. This series
> approximately doubles the XTS performance which will improve the I/O
> rate for LUKS disks.
>
> Daniel P. Berrangé (6):
>   crypto: expand algorithm coverage for cipher benchmark
>   crypto: remove code duplication in tweak encrypt/decrypt
>   crypto: introduce a xts_uint128 data type
>   crypto: convert xts_tweak_encdec to use xts_uint128 type
>   crypto: convert xts_mult_x to use xts_uint128 type
>   crypto: annotate xts_tweak_encdec as inlineable
>
>  crypto/xts.c                    | 147 ++++++++++++++-----------------
>  tests/benchmark-crypto-cipher.c | 149 +++++++++++++++++++++++++++-----
>  2 files changed, 191 insertions(+), 105 deletions(-)

By using a constant amount of data to process, it's easier to measure
perfomance with perf stat:

diff --git a/tests/benchmark-crypto-cipher.c b/tests/benchmark-crypto-cipher.c
index a8325a9510..32a19987e6 100644
--- a/tests/benchmark-crypto-cipher.c
+++ b/tests/benchmark-crypto-cipher.c
@@ -65,7 +65,7 @@ static void test_cipher_speed(size_t chunk_size,
                                         chunk_size,
                                         &err) == 0);
         total += chunk_size;
-    } while (g_test_timer_elapsed() < 1.0);
+    } while (total / MiB < 500);

     total /= MiB;
     g_print("Enc chunk %zu bytes ", chunk_size);
@@ -80,7 +80,7 @@ static void test_cipher_speed(size_t chunk_size,
                                         chunk_size,
                                         &err) == 0);
         total += chunk_size;
-    } while (g_test_timer_elapsed() < 1.0);
+    } while (total / MiB < 500);

On my laptop: before your series:
       3701.625051      task-clock:u (msec)       #    0.997 CPUs
utilized
                 0      context-switches:u        #    0.000 K/sec
                 0      cpu-migrations:u          #    0.000 K/sec
               438      page-faults:u             #    0.118 K/sec
    10,823,305,761      cycles:u                  #    2.924 GHz
    29,774,419,538      instructions:u            #    2.75  insn per
cycle
     4,919,267,782      branches:u                # 1328.948 M/sec
        32,923,105      branch-misses:u           #    0.67% of all
branches

       3.712998264 seconds time elapsed

Ater:
       2151.201355      task-clock:u (msec)       #    1.000 CPUs
utilized
                 0      context-switches:u        #    0.000 K/sec
                 0      cpu-migrations:u          #    0.000 K/sec
               431      page-faults:u             #    0.200 K/sec
     7,073,869,618      cycles:u                  #    3.288 GHz
     8,573,595,534      instructions:u            #    1.21  insn per
cycle
     1,576,926,668      branches:u                #  733.045 M/sec
           148,987      branch-misses:u           #    0.01% of all
branches

       2.151520872 seconds time elapsed


-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]