[
https://issues.apache.org/jira/browse/HDDS-15335?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HDDS-15335:
----------------------------------
Labels: pull-request-available (was: )
> Recon: parallelize NSSummaryTask sub-tasks and cache OmBucketInfo lookups
> -------------------------------------------------------------------------
>
> Key: HDDS-15335
> URL: https://issues.apache.org/jira/browse/HDDS-15335
> Project: Apache Ozone
> Issue Type: Improvement
> Components: Ozone Recon
> Reporter: Siyao Meng
> Assignee: Siyao Meng
> Priority: Major
> Labels: pull-request-available
> Attachments:
> 0002-HDDS-15335.-Recon-add-JMH-and-timing-benchmark-harne.patch
>
>
> NSSummaryTask.process() processes every batch of OM update events Recon
> ingests. On keyTable workloads (LEGACY or OBJECT_STORE bucket layout)
> it has two avoidable costs: every event triggers a fresh
> getBucketTable().getSkipCache(...) RocksDB point read even though
> bucket layout and objectID never change; and the three sub-tasks
> (FSO / Legacy / OBS) iterate the event list sequentially even though
> they operate on disjoint slices and write to disjoint NSSummary
> entries.
> This patch makes three changes:
> 1. NSSummaryTaskDbEventHandler caches OmBucketInfo lookups in a
> field-level Map. After the first lookup for a bucket, subsequent
> lookups become HashMap.get() calls.
> 2. NSSummaryTask.process() submits the three sub-tasks to a 3-thread
> pool and joins on all three. The threads see the same event list;
> each only processes events whose (table, bucket layout) matches
> its target. Target NSSummary entries are disjoint across
> sub-tasks so no cross-thread synchronization is needed, and the
> TaskResult contract is unchanged.
> 3. The OBS UPDATE path drops a redundant getKeyParentID(oldKeyInfo)
> call: the parent of an OBS key is its bucket, and an UPDATE event
> cannot move a key between buckets.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]