-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
tele(taskbroker): check zlib compression viability #91693
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
Conversation
src/sentry/options/defaults.py
Outdated
register( | ||
"taskworker.try_compress.profile_metrics", | ||
default=False, | ||
type=Bool, |
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.
Shoulds this be a float, so we could sample instead of compressing all or nothing?
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.
Sounds good, I made it a float. Also moved the uncompress length metric to outside of this option flag so we can get a better picture of the sizes we're dealing with
acc3484
to
b75f430
Compare
start_time = time.perf_counter() | ||
metrics.distribution( | ||
"profiling.profile_metrics.compressed_bytes", | ||
len(b64encode(zlib.compress(message.payload.value))), |
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.
So zipping a base64 encoded msgpack payload 🤔 Wouldn't zlib.compress()
return bytes which also need to be b64 encoded, as not all bytes can be json encoded.
Should we be zipping the msgpack, and then b64 encoding the zip? That might entirely defeat the benefits of zip though.
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.
Oh I did not know that message.payload.value
is a msgpack payload. Why do we b64 encode it?
Ideally we should zip the bytes and then b64 encode the zipped values.
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.
We currently have to b64 encode the msgpack, as not all bytes can be json encoded 😢
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 think I got myself mixed up here 😵 . I see now that you're doing b64(zip(msgpack))
which is as good as we can get for now.
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.
all good
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.
Makes sense to me, excited to see the results!
b75f430
to
97d002b
Compare
97d002b
to
1acbc4f
Compare
1acbc4f
to
01b0a77
Compare
No description provided.