diff mbox series

[RFC,v1,1/2] Documentation: btrfs: Document wq_cpu_set mount option

Message ID 20230226162639.20559-2-ammarfaizi2@gnuweeb.org (mailing list archive)
State New, archived
Headers show
Series Documentation: Introducing `wq_cpu_set` mount option for btrfs | expand

Commit Message

Ammar Faizi Feb. 26, 2023, 4:26 p.m. UTC
Document a new Btrfs mount option, wq_cpu_set.

Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
---
 Documentation/ch-mount-options.rst | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

Comments

Bagas Sanjaya Feb. 27, 2023, 2:24 a.m. UTC | #1
On Sun, Feb 26, 2023 at 11:26:38PM +0700, Ammar Faizi wrote:
> +wq_cpu_set=<cpu_set>
> +        (since: 6.5, default: all online CPUs)

Why will the knob be introduced in 6.5 instead?

> +
> +        Btrfs workqueues can slow sensitive user tasks down because they can use any
> +        online CPU to perform heavy workloads on an SMP system. This option is used to
> +        isolate the Btrfs workqueues to a set of CPUs. It is helpful to avoid
> +        sensitive user tasks being preempted by Btrfs heavy workqueues.
> +
> +        The *cpu_set* is a dot-separated list of decimal numbers and ranges. The
> +        numbers are CPU numbers, the ranges are inclusive. For example:

"*cpu_set* is a dot-separated list of CPU numbers. Both individual
number and range (inclusive) can be listed".

> +
> +                - *wq_cpu_set=0.3-7* will use CPUs 0, 3, 4, 5, 6 and 7.
> +
> +                - *wq_cpu_set=0.4.1.5* will use CPUs 0, 1, 4 and 5.
> +
> +        This option is similar to the taskset bitmask except that the comma separator
> +        is replaced with a dot. The reason for this is that the mount option parser
> +        uses commas to separate mount options.

"... replaced by dots, since commas has already been used as mount
options separator".

> +        If *wq_cpu_set* option is specificed and the *thread_pool* option is also
> +        specified, the thread pool size will be set to the value of *thread_pool*
> +        option.

"If both options are set ..."

Thanks.
Ammar Faizi Feb. 27, 2023, 10:12 a.m. UTC | #2
On Mon, Feb 27, 2023 at 09:24:16AM +0700, Bagas Sanjaya wrote:
> "*cpu_set* is a dot-separated list of CPU numbers. Both individual
> number and range (inclusive) can be listed".

Folded in.

> "... replaced by dots, since commas has already been used as mount
> options separator".

Folded in with s/commas/comma/.

> "If both options are set ..."

Folded in.

Thanks,
diff mbox series

Patch

diff --git a/Documentation/ch-mount-options.rst b/Documentation/ch-mount-options.rst
index f0f205dc20fa15ff..48fe63ee5e95c297 100644
--- a/Documentation/ch-mount-options.rst
+++ b/Documentation/ch-mount-options.rst
@@ -451,6 +451,35 @@  user_subvol_rm_allowed
                 ordinary directory. Whether this is possible can be detected at runtime, see
                 *rmdir_subvol* feature in *FILESYSTEM FEATURES*.
 
+wq_cpu_set=<cpu_set>
+        (since: 6.5, default: all online CPUs)
+
+        Btrfs workqueues can slow sensitive user tasks down because they can use any
+        online CPU to perform heavy workloads on an SMP system. This option is used to
+        isolate the Btrfs workqueues to a set of CPUs. It is helpful to avoid
+        sensitive user tasks being preempted by Btrfs heavy workqueues.
+
+        The *cpu_set* is a dot-separated list of decimal numbers and ranges. The
+        numbers are CPU numbers, the ranges are inclusive. For example:
+
+                - *wq_cpu_set=0.3-7* will use CPUs 0, 3, 4, 5, 6 and 7.
+
+                - *wq_cpu_set=0.4.1.5* will use CPUs 0, 1, 4 and 5.
+
+        This option is similar to the taskset bitmask except that the comma separator
+        is replaced with a dot. The reason for this is that the mount option parser
+        uses commas to separate mount options.
+
+        If *wq_cpu_set* option is specificed and the *thread_pool* option is not, the
+        number of default max thread pool size will be set to the number of online
+        CPUs in the specified CPU set plus 2, if and only if the resulting number is
+        less than 8.
+
+        If *wq_cpu_set* option is specificed and the *thread_pool* option is also
+        specified, the thread pool size will be set to the value of *thread_pool*
+        option.
+
+
 DEPRECATED MOUNT OPTIONS
 ^^^^^^^^^^^^^^^^^^^^^^^^