[
https://issues.apache.org/jira/browse/HDDS-17079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siyao Meng updated HDDS-17079:
------------------------------
Status: Patch Available (was: Open)
> Skip SST file lists when loading snapshot local data YAMLs for the snapshot
> version graph
> -----------------------------------------------------------------------------------------
>
> Key: HDDS-17079
> URL: https://issues.apache.org/jira/browse/HDDS-17079
> Project: Apache Ozone
> Issue Type: Sub-task
> Components: Ozone Manager, Snapshot
> Reporter: Siyao Meng
> Assignee: Siyao Meng
> Priority: Major
> Labels: pull-request-available
>
> h3. Problem
> To build its snapshot version graph, OmSnapshotLocalDataManager only needs
> each YAML's snapshotId, previousSnapshotId, version and the
> previousSnapshotVersion of each version. Every load still builds all
> SstFileInfo entries, which make up almost the whole file, and then throws
> them away. With many snapshots this is most of the CPU cost of OM startup,
> even after HDDS-17078 (parse each YAML once at startup).
> h3. Analysis
> Timing one 9 MB YAML from a cluster with about 19k snapshots (one version,
> about 36.7k SstFileInfo entries):
> * Full load: 0.153 s per file (59 MB/s)
> * Load without SST file lists: 0.088 s per file (103 MB/s)
> h3. Proposed fix
> Add a load mode to OmSnapshotLocalDataYaml (YamlFactory(true)) that drops
> each version's sstFiles node before construction, so none of its entries are
> built. All other fields load as before. OmSnapshotLocalDataManager uses this
> mode only in init and in the previous snapshot walk. All other reads and
> every write still use the full serializer.
> The serializer used in this mode refuses to save, so data loaded without SST
> file lists cannot overwrite a YAML.
> h3. Compatibility
> The on disk format is unchanged. New code reads YAMLs written by existing
> releases, and nothing new is written.
> One behavior change: startup still parses the whole document, so files that
> are not valid YAML are still skipped as before. But invalid values inside SST
> file entries are no longer detected at startup; they show up on the next full
> load of that snapshot.
> h3. Testing
> Added TestOmSnapshotLocalDataYaml#testLoadWithoutSstFiles. A YAML written by
> the regular serializer loads in the new mode with the same snapshot ids,
> versions, previousSnapshotVersion values, checksum and transaction info, and
> with empty SST file lists.
> Related to HDDS-17078; independent change, the speedups combine.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]