45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
|
From a8a0d4b9f356610babe5b884500799310fe6dcdd Mon Sep 17 00:00:00 2001
|
||
|
From: Steven Barrett <steven@liquorix.net>
|
||
|
Date: Sat, 21 May 2022 15:15:09 -0500
|
||
|
Subject: ZEN: INTERACTIVE: dm-crypt: Disable workqueues for crypto ops
|
||
|
|
||
|
Queueing in dm-crypt for crypto operations reduces performance on modern
|
||
|
systems. As discussed in an article from Cloudflare, they discovered
|
||
|
that queuing was introduced because the crypto subsystem used to be
|
||
|
synchronous. Since it's now asynchronous, we get double queueing when
|
||
|
using the subsystem through dm-crypt. This is obviously undesirable and
|
||
|
reduces throughput and increases latency.
|
||
|
|
||
|
Disable queueing when using our Zen Interactive configuration.
|
||
|
|
||
|
Fixes: https://github.com/zen-kernel/zen-kernel/issues/282
|
||
|
---
|
||
|
drivers/md/dm-crypt.c | 5 +++++
|
||
|
init/Kconfig | 1 +
|
||
|
2 files changed, 6 insertions(+)
|
||
|
|
||
|
--- a/drivers/md/dm-crypt.c
|
||
|
+++ b/drivers/md/dm-crypt.c
|
||
|
@@ -3310,6 +3310,11 @@ static int crypt_ctr(struct dm_target *t
|
||
|
goto bad;
|
||
|
}
|
||
|
|
||
|
+#ifdef CONFIG_ZEN_INTERACTIVE
|
||
|
+ set_bit(DM_CRYPT_NO_READ_WORKQUEUE, &cc->flags);
|
||
|
+ set_bit(DM_CRYPT_NO_WRITE_WORKQUEUE, &cc->flags);
|
||
|
+#endif
|
||
|
+
|
||
|
ret = crypt_ctr_cipher(ti, argv[0], argv[1]);
|
||
|
if (ret < 0)
|
||
|
goto bad;
|
||
|
--- a/init/Kconfig
|
||
|
+++ b/init/Kconfig
|
||
|
@@ -144,6 +144,7 @@ config ZEN_INTERACTIVE
|
||
|
|
||
|
Default scheduler for SQ..: mq-deadline -> bfq
|
||
|
Default scheduler for MQ..: none -> kyber
|
||
|
+ DM-Crypt workqueues.......: yes -> no
|
||
|
|
||
|
--- Virtual Memory Subsystem ---------------------------
|
||
|
|