Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pacific: bluestore: set upper and lower bounds on rocksdb omap iterators #45963

Merged
merged 3 commits into from
Apr 26, 2022

Conversation

cfsnyder
Copy link
Contributor

Limits RocksDB omap Seek operations to the relevant key range of the object's omap.
This prevents RocksDB from unnecessarily iterating over delete range tombstones in
irrelevant omap CF shards. Avoids extreme performance degradation commonly caused
by tombstones generated from RGW bucket resharding cleanup. Also prefer CFIteratorImpl
over ShardMergeIteratorImpl when we can determine that all keys within specified
IteratorBounds must be in a single CF.

backport of #45904
parent tracker: https://tracker.ceph.com/issues/55324

Limits RocksDB omap Seek operations to the relevant key range of the object's omap.
This prevents RocksDB from unnecessarily iterating over delete range tombstones in
irrelevant omap CF shards. Avoids extreme performance degradation commonly caused
by tombstones generated from RGW bucket resharding cleanup. Also prefer CFIteratorImpl
over ShardMergeIteratorImpl when we can determine that all keys within specified
IteratorBounds must be in a single CF.

Fixes: https://tracker.ceph.com/issues/55324
Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit 850c16c)
@cfsnyder
Copy link
Contributor Author

@yuriw this is the Pacific backport of #45904

@ljflores
Copy link
Contributor

Adding a note here to document that this PR needs to backport ca3ccd9 from the master PR.

@cfsnyder
Copy link
Contributor Author

backported and included ca3ccd9 @ljflores

…isabled

Add osd_rocksdb_iterator_bounds_enabled config option to allow rocksdb iterator bounds to be disabled.
Also includes minor refactoring to shorten code associated with IteratorBounds initialization in bluestore.

Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit ca3ccd9)

Conflicts:
	src/common/options/osd.yaml.in

Cherry-pick notes:
- Conflicts due to option definition in common/options.cc in Pacific vs. common/options/osd.yaml.in in later releases
…rBounds)

Adds a precondition to RocksDBStore::get_cf_handle(string, IteratorBounds)
to avoid duplicating logic of the only caller (RocksDBStore::get_iterator).
Assertions will fail if preconditions are not met.

Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit 55ef16f)
@cfsnyder
Copy link
Contributor Author

55ef16f also backported and included

@ljflores
Copy link
Contributor

jenkins test api

@ljflores
Copy link
Contributor

jenkins test make check

1 similar comment
@ljflores
Copy link
Contributor

jenkins test make check

@ljflores
Copy link
Contributor

jenkins test api

@ljflores
Copy link
Contributor

jenkins test make check

@ljflores
Copy link
Contributor

ljflores commented Apr 25, 2022

http://pulpito.front.sepia.ceph.com/lflores-2022-04-22_20:48:19-rados-wip-55324-pacific-backport-distro-default-smithi/
http://pulpito.front.sepia.ceph.com/yuriw-2022-04-23_16:12:08-rados-wip-55324-pacific-backport-distro-default-smithi/
http://pulpito.front.sepia.ceph.com/yuriw-2022-04-26_00:11:14-rados-wip-55324-pacific-backport-distro-default-smithi/

A few rados tests failed due to selinux denials.

Failures, unrelated:
https://tracker.ceph.com/issues/53501
https://tracker.ceph.com/issues/55444
https://tracker.ceph.com/issues/54071
https://tracker.ceph.com/issues/53939
https://tracker.ceph.com/issues/54360
https://tracker.ceph.com/issues/55446
https://tracker.ceph.com/issues/54992
https://tracker.ceph.com/issues/52124
https://tracker.ceph.com/issues/49754
https://tracker.ceph.com/issues/54411

Details:
1. Exception when running 'rook' task. - Ceph - Orchestrator -- known issue; needs to be backported to Pacific
2. test_cls_rbd.sh: multiple TestClsRbd failures during upgrade test - Ceph - RBD -- created a new one for this
3. rados/cephadm/osds: Invalid command: missing required parameter hostname() - Ceph - Orchstrator - known issue
4. ceph-nfs-upgrade, pacific: Upgrade Paused due to UPGRADE_REDEPLOY_DAEMON: Upgrading daemon osd.0 on host smithi103 failed - Ceph - Orchestrator - known issue
5. Dead job at "Finished running handlers" in rados/cephadm/osds/.../rm-zap-wait - Ceph - Orchestrator - known issue
6. mgr-nfs-ugrade and mds_upgrade_sequence tests fail on 'ceph versions | jq -e' command - Ceph - new issue I created today; it's frequent in this run but seems unrelated to this PR.
7. cannot stat '/etc/containers/registries.conf': No such file or directory - Ceph - Orchestrator - known issue.
8. Invalid read of size 8 in handle_recovery_delete() - Ceph - RADOS - known issue
9. osd/OSD.cc: ceph_abort_msg("abort() called") during OSD::shutdown() - Ceph - RADOS
10. mds_upgrade_sequence: "overall HEALTH_WARN 4 failed cephadm daemon(s); 1 filesystem is degraded; insufficient standby MDS daemons available; 33 daemons have recently crashed" during suites/fsstress.sh - Ceph - CephFS

(edited with a more detailed analysis)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants