-
Notifications
You must be signed in to change notification settings - Fork 589
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
tests: integration testing for compaction with compression #9594
Conversation
/cdt tests/rptest/scale_tests/many_clients_test.py tests/rptest/scale_tests/many_partitions_test.py |
4dd0bed
to
0b5a4ff
Compare
/cdt tests/rptest/scale_tests |
The new compacted variant of manyclientstest failed, needs investigation |
0b5a4ff
to
c7d2334
Compare
/cdt tests/rptest/scale_tests/many_clients_test.py |
c7d2334
to
167d215
Compare
/cdt tests/rptest/scale_tests/many_clients_test.py |
167d215
to
ff73f40
Compare
Clustered ducktape run of manyclientstest was OK -- rebased since #10235 merged, this should be good to go now. |
This test was designed to run with minimal memory, and it necessarily needs more memory when handling huge 32MiB batches that must be compressed+decompressed.
This adds support for --messages-per-second
Running all clients at max speed against a rate limited cluster results in a very unpredictable runtime, because some clients end up backing off for a very long time. Fixes redpanda-data#10092
- Use rate limiting in the client, so that it is not vulnerable to very long delays from rate limiting, causing rare timeouts due to statistical unfairness of which clients get limited. - Add a 'realistic' compaction case to accompany the pathological case. Realistic is incompressible data, so we're just paying the CPU tax, pathological is zeros, where we hit the memory inflation risk. - Make the test adaptively choose messages counts for a target runtime. - Configure a node rate limit that is aligned with the IOPs throughput of i3en.xlarge nodes when we are sending lots of tiny messages. - Set a heuristic "effective message size" for the pathological compaction/compression case, which reflects the equivalent uncompressed message size for throughput calculation purposes. Fixes redpanda-data#10092
ff73f40
to
2afdfc2
Compare
/cdt tests/rptest/scale_tests/many_clients_test.py |
1 similar comment
/cdt tests/rptest/scale_tests/many_clients_test.py |
Issue #9521 exposed a lack of coverage in this area.
The tests are separate to the fixes, because the fixes will be backportable and the tests won't.
In this PR:
mixed
mode that exercises several different codecs at the same time, and an optional highly-compressible payload that can enable huge records (100MB+) to sneak into the cluster under test by compressing below the batch size limit.ManyClientsTest
that uses compaction: this works well as a reproducer for issues like LZ4 decompression allocates contiguous memory for output buffer #9521, where many concurrent produce requests can try and get memory for their uncompressed batches at the same time.Fixes: #10092
Backports Required
Release Notes