summaryrefslogtreecommitdiff
path: root/include/linux/crush
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2020-08-17 14:45:04 +0300
committerIlya Dryomov <idryomov@gmail.com>2020-10-12 16:29:26 +0300
commit3986f9a42e993075af01c17dc8968cfb96a4fe53 (patch)
treef737033c3469e447f868acb37b6c2b1d32965a2e /include/linux/crush
parent1c30c90733879ea197dd29af54450a0f6cdcacb1 (diff)
downloadlinux-3986f9a42e993075af01c17dc8968cfb96a4fe53.tar.xz
libceph: multiple workspaces for CRUSH computations
Replace a global map->crush_workspace (protected by a global mutex) with a list of workspaces, up to the number of CPUs + 1. This is based on a patch from Robin Geuze <robing@nl.team.blue>. Robin and his team have observed a 10-20% increase in IOPS on all queue depths and lower CPU usage as well on a high-end all-NVMe 100GbE cluster. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'include/linux/crush')
-rw-r--r--include/linux/crush/crush.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/crush/crush.h b/include/linux/crush/crush.h
index 2f811baf78d2..30dba392b730 100644
--- a/include/linux/crush/crush.h
+++ b/include/linux/crush/crush.h
@@ -346,6 +346,9 @@ struct crush_work_bucket {
struct crush_work {
struct crush_work_bucket **work; /* Per-bucket working store */
+#ifdef __KERNEL__
+ struct list_head item;
+#endif
};
#ifdef __KERNEL__