2024-12-10 06:44:25 +03:00
|
|
|
From be57a2710aef65116767d26930dd1251ff6e060f Mon Sep 17 00:00:00 2001
|
2024-10-29 05:12:06 +03:00
|
|
|
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
|
2024-12-10 06:44:25 +03:00
|
|
|
@@ -3315,6 +3315,11 @@ static int crypt_ctr(struct dm_target *t
|
2024-10-29 05:12:06 +03:00
|
|
|
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
|
2024-12-10 06:44:25 +03:00
|
|
|
@@ -164,6 +164,7 @@ config ZEN_INTERACTIVE
|
2024-10-29 05:12:06 +03:00
|
|
|
|
|
|
|
Default scheduler for SQ..: mq-deadline -> bfq
|
|
|
|
Default scheduler for MQ..: none -> kyber
|
|
|
|
+ DM-Crypt workqueues.......: yes -> no
|
|
|
|
|
|
|
|
--- Virtual Memory Subsystem ---------------------------
|
|
|
|
|