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

osd: bluestore: Add per-pool compression capability #10556

Closed
wants to merge 8 commits into from

Conversation

ifed01
Copy link
Contributor

@ifed01 ifed01 commented Aug 3, 2016

This PR enables per-pool compression for BlueStore.
Following parameters were added to pool settings:
compress_hint - determines if pool contains compressible / incompressible data
compress_algorithm - permits to specify different compression algorithm
compress_ratio - specifies maximum compression ratio

ObjectStore::Transaction::Op was extended to pass these parameters for any write request.
And corresponding handling was added to BlueStore to support per-write compression parameter specification.

Signed-off-by: Igor Fedotov ifedotov@mirantis.com

@@ -77,9 +77,17 @@ const char *ceph_osd_alloc_hint_flag_name(int f)
return "shortlived";
case CEPH_OSD_ALLOC_HINT_FLAG_LONGLIVED:
return "longlived";
case CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, do we really want to remove the alloc_hint flags, or can they coexist? The nice thing about the existing ones is that they are persistent, so we have the [in]compressible information at any time (not just for a given write).

@liewegas
Copy link
Member

My original plan here, instead of adding something like write_params_t, was to add an ObjectStore method like collection_set_param(key, value) that would pass in semi-arbitrary options for a collection. Then the OSD could feed in these per-pool things for each PG collection from the PGPool update method in the OSD whenever the pool is changed, and we wouldn't need to add any new stuff to individual writes.

Adding per-write flags like incompressible is probably useful, but I think we can use the existing flags field for that?

Igor Fedotov added 8 commits August 18, 2016 17:31
…ompressor.h

Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
…ints and implement them as standalone flags for write op

Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
…on to be able to pass per-pool compression settings

Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
…ession

Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
…ssion was applied via statfs report

Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
@ifed01 ifed01 force-pushed the wip-bluestore-per-pool-compress branch from 4282286 to 8b6acb6 Compare August 19, 2016 12:31
@ifed01
Copy link
Contributor Author

ifed01 commented Sep 15, 2016

Replaced with PR #11094

@ifed01 ifed01 closed this Sep 15, 2016
@ifed01 ifed01 deleted the wip-bluestore-per-pool-compress branch September 16, 2016 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants