-
Notifications
You must be signed in to change notification settings - Fork 577
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
cloud_storage: segment_meta_cstore serde optimizations #10805
cloud_storage: segment_meta_cstore serde optimizations #10805
Conversation
c6f7eb6
to
c1ee47f
Compare
https://buildkite.com/redpanda/redpanda/builds/29345#01882bdd-48ca-4296-94c0-c7f1ff0c5281 failure is in debug is #10500 |
c1ee47f
to
4685e37
Compare
https://buildkite.com/redpanda/redpanda/builds/29377#01882f17-cd34-47bf-a778-f19dc0cd14df interesting failure:
edit: should be solved by #10852 the other is #10240 |
4685e37
to
9d22464
Compare
9d22464
to
2c8bf3c
Compare
just a bit of benchmark:
with this pr:
test size is 10000 segment_meta |
@@ -733,6 +734,16 @@ class column_store | |||
member_fields()); | |||
} | |||
|
|||
auto unsafe_alias() const -> column_store { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like the naming here
fixed conflict |
looks like CI fails to rebase it |
244c4c0
to
ce91f53
Compare
rebase - second attempt |
Failure is #10977 |
ce91f53
to
f7ad42d
Compare
/ci-repeat |
a16be1c
to
c818704
Compare
previously to_iobuf was achieved by constructing a temporary cstore, appending all the segments and serializing it. this is done so that to_iobuf can be const, in turn to be able to use it in base_manifest::serialize. To minimize operations and memory, this commits adds the ability to create a column_store that shares all the iobuf with the *this object, and then serialize it. sharing is done by constructing on top of deltafor_encoder::share() const a series of unsafe_alias() const methods, responsible to construct the subobjects. this new schema saves time by not re-encoding the segment_meta, and saves memory by sharing the underlying iobuf objects, to write them directly in the final serde iobuf
c818704
to
549a837
Compare
force push: rebase on dev |
previously to_iobuf was achieved by constructing a temporary cstore,
appending all the segments and serializing it. this is done so that
to_iobuf can be const, in turn to be able to use it in
base_manifest::serialize.
To minimize operations and memory, this commits adds the ability to
create a column_store that shares all the iobuf with the *this object,
and then serialize it.
sharing is done by constructing on top of deltafor_encoder::share()
const a series of unsafe_alias() const methods, responsible to construct
the subobjects.
this new schema saves time by not re-encoding the segment_meta, and
saves memory by sharing the underlying iobuf objects, to write them
directly in the final serde iobuf
Backports Required
Release Notes