]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm/nvmeof: Add QOS timeslice field to NVMeOF configuration 61814/head
authorGil Bregman <gbregman@il.ibm.com>
Thu, 13 Feb 2025 19:42:48 +0000 (21:42 +0200)
committerGil Bregman <gbregman@il.ibm.com>
Mon, 17 Feb 2025 12:03:05 +0000 (14:03 +0200)
Fixes https://tracker.ceph.com/issues/69952

Signed-off-by: Gil Bregman <gbregman@il.ibm.com>
src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2
src/pybind/mgr/cephadm/tests/test_services.py
src/python-common/ceph/deployment/service_spec.py

index ad6574786a3c5817a715e077967f5c36ef32cee8..cbfc2a8a0756968eca655b735fbbc94141a3cf90 100644 (file)
@@ -90,6 +90,7 @@ tgt_cmd_extra_args = {{ spec.tgt_cmd_extra_args }}
 {% if iobuf_options %}
 iobuf_options = {{ iobuf_options }}
 {% endif %}
+qos_timeslice_in_usecs = {{ spec.qos_timeslice_in_usecs }}
 
 [monitor]
 timeout = {{ spec.monitor_timeout }}
index ebdbcc4991d04e81269343c9851c779b8ec3910a..84d015a1c246903bb3aee88ace827b39a958d84b 100644 (file)
@@ -421,6 +421,7 @@ conn_retries = 10
 transports = tcp
 transport_tcp_options = {{"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7}}
 tgt_cmd_extra_args = {tgt_cmd_extra_args}
+qos_timeslice_in_usecs = 0
 
 [monitor]
 timeout = 1.0\n"""
index 054f90e55f45cb96e0398ba43c6d425f5602fa24..3daa09a4c58ed3fb63f15644e53fcc75917fafa6 100644 (file)
@@ -1388,6 +1388,7 @@ class NvmeofServiceSpec(ServiceSpec):
                  {"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7},
                  tgt_cmd_extra_args: Optional[str] = None,
                  iobuf_options: Optional[Dict[str, int]] = None,
+                 qos_timeslice_in_usecs: Optional[int] = 0,
                  discovery_addr: Optional[str] = None,
                  discovery_addr_map: Optional[Dict[str, str]] = None,
                  discovery_port: Optional[int] = None,
@@ -1528,6 +1529,8 @@ class NvmeofServiceSpec(ServiceSpec):
         self.tgt_cmd_extra_args = tgt_cmd_extra_args
         #: List of extra arguments for SPDK iobuf in the form opt=value
         self.iobuf_options: Optional[Dict[str, int]] = iobuf_options
+        #: ``qos_timeslice_in_usecs`` timeslice for QOS code, in micro seconds
+        self.qos_timeslice_in_usecs = qos_timeslice_in_usecs
         #: ``discovery_addr`` address of the discovery service
         self.discovery_addr = discovery_addr
         #: ``discovery_addr_map`` per node address map of the discovery service
@@ -1590,6 +1593,7 @@ class NvmeofServiceSpec(ServiceSpec):
         verify_positive_int(self.bdevs_per_cluster, "Bdevs per cluster")
         if self.bdevs_per_cluster is not None and self.bdevs_per_cluster < 1:
             raise SpecValidationError("Bdevs per cluster should be at least 1")
+        verify_non_negative_int(self.qos_timeslice_in_usecs, "QOS timeslice")
 
         verify_non_negative_number(self.spdk_ping_interval_in_seconds, "SPDK ping interval")
         if (