[ 
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]

Reply via email to