]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd/scheduler/mClockScheduler: Use same profile and client ids for all clients
authorSridhar Seshasayee <sseshasa@redhat.com>
Thu, 3 Aug 2023 20:32:06 +0000 (02:02 +0530)
committerSridhar Seshasayee <sseshasa@redhat.com>
Wed, 23 Aug 2023 11:17:52 +0000 (16:47 +0530)
commitdfc021ac6968f54e9182a7c21cdae94cac20113c
treeaa52b8ae98243f15bce70d9aa06dfd3025e35fb2
parent0c03d21c3d8d7c44476f1a62822421e6b5615cbf
osd/scheduler/mClockScheduler: Use same profile and client ids for all clients

Currently, without the distributed mClock (dmClock) feature, all external
clients classified under op_scheduler_class::client must share the
allocated reservation and limit as set within default_external_client_info.
This is realized only if all the external clients are assigned the same
id. This was not true because the client_id field within the
client_profile_id_t was set to item.get_owner() which uniquely identified
each client. As a result, an increase in the client count resulted in a
proportional increase in the consumption of the allocated limit which is
not the desired outcome in the current implementation.

The fix is to use the same client_id and profile_id within the
client_profile_id_t structure for all clients. These fields are set to '0'.
This ensures that all such clients get the same QoS controls which means
reservation and limit is shared between them. In other words, regardless
of the number of clients active, the reservation and limit consumption
remains constant as per the mClock profile setting and is shared amongst
them.

NOTE: When dmClock feature (client vs client QoS) is implemented, the
above fields would change with client_id set to the global id (client.####)
and the profile_id set to the id generated by the client's QoS profile.

Fixes: https://tracker.ceph.com/issues/62293
Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
(cherry picked from commit 79a123c2b969e98c87bcadb38aee9562bc58472d)
src/osd/scheduler/mClockScheduler.h