Document the BPF cost model attachment in the io.cost.model section
of the cgroup v2 documentation: attaching an iocost_model_ops
struct_ops to a device by its major:minor, the model=bpf readback
while attached (ctrl keeps describing the coefficients), that
detaching restores the builtin model, and that ctrl= writes never
select a model.

Signed-off-by: Tao Cui <[email protected]>
---
 Documentation/admin-guide/cgroup-v2.rst | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/Documentation/admin-guide/cgroup-v2.rst 
b/Documentation/admin-guide/cgroup-v2.rst
index 7fe950425216..5e780bdcf324 100644
--- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -2117,8 +2117,27 @@ IO Interface Files
          =====         ================================
          ctrl          "auto" or "user"
          model         The cost model in use - "linear"
+                       or "bpf" while the BPF model
+                       is in use
          =====         ================================
 
+       When CONFIG_BLK_CGROUP_IOCOST_BPF is enabled, a BPF cost model
+       can be attached to a device by loading an "iocost_model_ops"
+       struct_ops with the whole disk's major:minor in its "dev" member
+       (a partition's major:minor is rejected).  Attaching creates the
+       controller if needed, like an io.cost.model write does, and
+       switches the device's pricing to the model; enabling and
+       disabling the controller stays with io.cost.qos.  While a model
+       is attached, "model" selects between it and the builtin model:
+       "model=bpf" switches to the attached model and "model=linear"
+       switches back to the builtin model, and neither detaches the
+       struct_ops; only detaching removes the model, after which
+       "model=bpf" fails.  "ctrl" keeps describing the builtin
+       coefficients, which are kept while the BPF model is in use and
+       take effect again when switched back, and the automatic profile
+       stepping does not switch profiles while the BPF model is in
+       use.
+
        When "ctrl" is "auto", the kernel may change all parameters
        dynamically.  When "ctrl" is set to "user" or any other
        parameters are written to, "ctrl" become "user" and the
-- 
2.43.0


Reply via email to