All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 0/9] qcow2: encryption threads
@ 2019-01-08 17:06 Vladimir Sementsov-Ogievskiy
  2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 1/9] qcow2.h: add missing include Vladimir Sementsov-Ogievskiy
                   ` (10 more replies)
  0 siblings, 11 replies; 26+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2019-01-08 17:06 UTC (permalink / raw)
  To: qemu-devel, qemu-block
  Cc: kwolf, mreitz, berrange, berto, vsementsov, den, pbonzini

Hi all!

The series brings threads to qcow2 encryption/decryption path,
like it is already done for compression.
Now, based on master

v3:
01: drop 'include block_int.h' lines not needed more [Alberto]
02: fix comments style (open/close on separate line), add Alberto's r-b
03: improve commit message, add Alberto's r-b
04: new, follows Paolo's comment


v2: (not very careful change list)
    - multiple cipher inside QCryptoBlock instead of multiple
      blocks inside qcow2, as suggested by Daniel, and it is
      done in separate series
    - use threaded encryption in do_perform_cow_encrypt() too
    - some renaming and refactoring and simplifications


== Performance testing ==

Hmm, do we have something like tests/qemu-iotests, but for performance?

[root@kvm up-qcow2-encrypt-threads]# cat test.sh 
    #!/bin/bash

    size=1G
    src=/ssd/src.raw
    dst=/ssd/dst.enc.qcow2

    # create source for tests
    ./qemu-img create -f raw "$src" $size > /dev/null
    ./qemu-io -f raw -c "write -P 0xa 0 $size" "$src" > /dev/null

    for w in "" "-W"; do
        echo -e "Test with additional paramter for qemu-img: '$w'"

        # create target
        ./qemu-img create -f qcow2 --object secret,id=sec0,data=test -o encrypt.format=luks,encrypt.key-secret=sec0 "$dst" $size > /dev/null

        time ./qemu-img convert $w -f raw --object secret,id=sec0,data=test --target-image-opts -n "$src" "driver=qcow2,file.filename=$dst,encrypt.key-secret=sec0"
        echo
    done


before the series:
    Test with additional paramter for qemu-img: ''

    real    0m14.318s
    user    0m13.637s
    sys     0m0.881s

    Test with additional paramter for qemu-img: '-W'

    real    0m13.962s
    user    0m13.681s
    sys     0m1.156s


after the series:
    Test with additional paramter for qemu-img: ''

    real    0m14.382s
    user    0m13.735s
    sys     0m0.835s

    Test with additional paramter for qemu-img: '-W'

    real    0m5.696s
    user    0m15.931s
    sys     0m1.144s

Vladimir Sementsov-Ogievskiy (9):
  qcow2.h: add missing include
  qcow2: add separate file for threaded data processing functions
  qcow2-threads: use thread_pool_submit_co
  qcow2-threads: qcow2_co_do_compress: protect queuing by mutex
  qcow2-threads: split out generic path
  qcow2: qcow2_co_preadv: improve locking
  qcow2: qcow2_co_preadv: skip using hd_qiov when possible
  qcow2: bdrv_co_pwritev: move encryption code out of the lock
  qcow2: do encryption in threads

 block/qcow2.h          |  20 ++-
 block/qcow2-bitmap.c   |   1 -
 block/qcow2-cache.c    |   1 -
 block/qcow2-cluster.c  |   8 +-
 block/qcow2-refcount.c |   1 -
 block/qcow2-snapshot.c |   1 -
 block/qcow2-threads.c  | 268 +++++++++++++++++++++++++++++++++++++++
 block/qcow2.c          | 277 ++++++++---------------------------------
 block/Makefile.objs    |   2 +-
 9 files changed, 343 insertions(+), 236 deletions(-)
 create mode 100644 block/qcow2-threads.c

-- 
2.18.0

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2019-01-28 11:54 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-08 17:06 [Qemu-devel] [PATCH v3 0/9] qcow2: encryption threads Vladimir Sementsov-Ogievskiy
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 1/9] qcow2.h: add missing include Vladimir Sementsov-Ogievskiy
2019-01-09 10:32   ` Alberto Garcia
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 2/9] qcow2: add separate file for threaded data processing functions Vladimir Sementsov-Ogievskiy
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 3/9] qcow2-threads: use thread_pool_submit_co Vladimir Sementsov-Ogievskiy
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 4/9] qcow2-threads: qcow2_co_do_compress: protect queuing by mutex Vladimir Sementsov-Ogievskiy
2019-01-15 23:29   ` Paolo Bonzini
2019-01-22 10:22     ` Vladimir Sementsov-Ogievskiy
2019-01-16 13:11   ` Alberto Garcia
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 5/9] qcow2-threads: split out generic path Vladimir Sementsov-Ogievskiy
2019-01-16 13:14   ` Alberto Garcia
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 6/9] qcow2: qcow2_co_preadv: improve locking Vladimir Sementsov-Ogievskiy
2019-01-16 13:53   ` Alberto Garcia
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 7/9] qcow2: qcow2_co_preadv: skip using hd_qiov when possible Vladimir Sementsov-Ogievskiy
2019-01-16 16:18   ` Alberto Garcia
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 8/9] qcow2: bdrv_co_pwritev: move encryption code out of the lock Vladimir Sementsov-Ogievskiy
2019-01-18  9:51   ` Alberto Garcia
2019-01-18 11:37     ` Vladimir Sementsov-Ogievskiy
2019-01-18 14:39       ` Alberto Garcia
2019-01-18 17:15         ` Vladimir Sementsov-Ogievskiy
2019-01-08 17:06 ` [Qemu-devel] [PATCH v3 9/9] qcow2: do encryption in threads Vladimir Sementsov-Ogievskiy
2019-01-18 12:41   ` Alberto Garcia
2019-01-23 14:54 ` [Qemu-devel] [PATCH v3 0/9] qcow2: encryption threads no-reply
2019-01-23 15:07   ` Vladimir Sementsov-Ogievskiy
2019-01-23 15:38     ` Eric Blake
2019-01-28 11:54 ` [Qemu-devel] ping " Vladimir Sementsov-Ogievskiy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.