• Eric Biggers's avatar
    fscrypt: use unbound workqueue for decryption · 63c7e58d
    Eric Biggers authored
    [ Upstream commit 36dd26e0 ]
    Improve fscrypt read performance by switching the decryption workqueue
    from bound to unbound.  With the bound workqueue, when multiple bios
    completed on the same CPU, they were decrypted on that same CPU.  But
    with the unbound queue, they are now decrypted in parallel on any CPU.
    Although fscrypt read performance can be tough to measure due to the
    many sources of variation, this change is most beneficial when
    decryption is slow, e.g. on CPUs without AES instructions.  For example,
    I timed tarring up encrypted directories on f2fs.  On x86 with AES-NI
    instructions disabled, the unbound workqueue improved performance by
    about 25-35%, using 1 to NUM_CPUs jobs with 4 or 8 CPUs available.  But
    with AES-NI enabled, performance was unchanged to within ~2%.
    I also did the same test on a quad-core ARM CPU using xts-speck128-neon
    encryption.  There performance was usually about 10% better with the
    unbound workqueue, bringing it closer to the unencrypted speed.
    The unbound workqueue may be worse in some cases due to worse locality,
    but I think it's still the better default.  dm-crypt uses an unbound
    workqueue by default too, so this change makes fscrypt match.
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>