Previously, non optimized database related flows on deletions caused Multicloud Object Gateway to spike in CPU usage and perform slowly on mass delete scenarios. For example, reclaiming a deleted object bucket claim (OBC). With this fix, indexes for the bucket reclaimer process are optimized, a new index is added to the database to speed up the database cleaner flows, and bucket reclaimer changes are introduced to work on batches of objects.
Verified this issue using ODF 4.12.3-16. With noobaa pods resources as below, CPU usage of noobaa-core and noobaa-db didn't reach over 100% when upload and list 1M objects. Backingstore is working as expected, obc and backingstore are deleting without any issue.
$oc get storagecluster -n openshift-storage ocs-storagecluster -oyaml | yq '.spec.resources'
mgr:
limits:
cpu: "3"
memory: 3Gi
requests:
cpu: "3"
memory: 3Gi
noobaa-core:
limits:
cpu: "3"
memory: 4Gi
requests:
cpu: "3"
memory: 4Gi
noobaa-db:
limits:
cpu: "3"
memory: 4Gi
requests:
cpu: "3"
memory: 4Gi
noobaa-endpoint:
limits:
cpu: "3"
memory: 4Gi
requests:
cpu: "3"
memory: 4Gi
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory (Moderate: Red Hat OpenShift Data Foundation 4.12.3 Security and Bug fix update), and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://access.redhat.com/errata/RHSA-2023:3265
Verified this issue using ODF 4.12.3-16. With noobaa pods resources as below, CPU usage of noobaa-core and noobaa-db didn't reach over 100% when upload and list 1M objects. Backingstore is working as expected, obc and backingstore are deleting without any issue. $oc get storagecluster -n openshift-storage ocs-storagecluster -oyaml | yq '.spec.resources' mgr: limits: cpu: "3" memory: 3Gi requests: cpu: "3" memory: 3Gi noobaa-core: limits: cpu: "3" memory: 4Gi requests: cpu: "3" memory: 4Gi noobaa-db: limits: cpu: "3" memory: 4Gi requests: cpu: "3" memory: 4Gi noobaa-endpoint: limits: cpu: "3" memory: 4Gi requests: cpu: "3" memory: 4Gi