Add ratelimiting to more background daemons
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
In Progress
|
Wishlist
|
Unassigned |
Bug Description
Background daemons have two main ways to make sure they don't hog resources:
* sleep between cycles (with something like interval or the deprecated run_pause) and
* ratelimiting within a cycle (with *_per_second settings).
The former prevents busy loops in a mostly empty cluster but causes square waves where the process hammers disks as fast as it can, then leaves them idle a while, then hammers them, leaves them idle, etc.
Ratelimiting is nice because it smooths that usage out -- instead of eating all the available I/O 50% of the time, the process can use ~50% of available I/O all the time, keeping the same cycle time but leaving overhead available for things like client requests.
Currently, however, only the following background daemons support ratelimiting:
* object-auditor
* object-updater
* container-auditor
* container-
* container-sharder
* container-updater
* account-auditor
* account-replicator
It would be nice to have ratelimiting available for:
* object-
* object-replicator
* container-
Maybe it'd be nice to have for object-expirer and account-reaper, too? Not sure.
description: | updated |
Changed in swift: | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
There is also nice and ionice features or rather the
'nice_priority, ionice_priority and ionice_class. For completion of options
of how much they hog resources.. tho I guess in this case it's how well
they share.
On Wed, Aug 1, 2018 at 9:13 AM, Tim Burke <email address hidden> wrote:
> Public bug reported: reconstructor reconciler replicator /bugs.launchpad .net/bugs/ 1784753 reconstructor reconciler replicator
>
> Background daemons have two main ways to make sure they don't hog
> resources:
>
> * sleep between cycles (with something like interval or the deprecated
> run_pause) and
> * ratelimiting within a cycle (with *_per_second settings).
>
> The former prevents busy loops in a mostly empty cluster but causes
> square waves where the process hammers disks as fast as it can, then
> leaves them idle a while, then hammers them, leaves them idle, etc.
>
> Ratelimiting is nice because it smooths that usage out -- instead of
> eating all the available I/O 50% of the time, the process can use ~50%
> of available I/O all the time, keeping the same cycle time but leaving
> overhead available for things like client requests.
>
> Currently, however, only the following background daemons support
> ratelimiting:
>
> * object-auditor
> * object-updater
> * container-auditor
> * container-updater
> * account-auditor
>
> It would be nice to have ratelimiting available for:
>
> * object-
> * object-replicator
> * container-
> * container-
> * container-sharder
> * account-replicator
>
> Maybe it'd be nice to have for object-expirer and account-reaper, too?
> Not sure.
>
> ** Affects: swift
> Importance: Undecided
> Status: New
>
> --
> You received this bug notification because you are subscribed to
> OpenStack Object Storage (swift).
> Matching subscriptions: <email address hidden>
> https:/
>
> Title:
> Add ratelimiting to more background daemons
>
> Status in OpenStack Object Storage (swift):
> New
>
> Bug description:
> Background daemons have two main ways to make sure they don't hog
> resources:
>
> * sleep between cycles (with something like interval or the deprecated
> run_pause) and
> * ratelimiting within a cycle (with *_per_second settings).
>
> The former prevents busy loops in a mostly empty cluster but causes
> square waves where the process hammers disks as fast as it can, then
> leaves them idle a while, then hammers them, leaves them idle, etc.
>
> Ratelimiting is nice because it smooths that usage out -- instead of
> eating all the available I/O 50% of the time, the process can use ~50%
> of available I/O all the time, keeping the same cycle time but leaving
> overhead available for things like client requests.
>
> Currently, however, only the following background daemons support
> ratelimiting:
>
> * object-auditor
> * object-updater
> * container-auditor
> * container-updater
> * account-auditor
>
> It would be nice to have ratelimiting available for:
>
> * object-
> * object-replicator
> * container-
> * container-
> * container-sharder
> * account-replicator
>
> Maybe it'd be nice to have for object-expirer and account-reaper, too?
> Not sure.
>
> To manage notifications abo...