[
https://issues.apache.org/jira/browse/KAFKA-3565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15268242#comment-15268242
]
Jiangjie Qin commented on KAFKA-3565:
-------------------------------------
[~junrao] I updated the results in the Google sheet. The results are in
test_run9 and test_run10
The linger.ms was run with 0 and 10000 ms. The batch size is set to 1000000.
The modified test will flush when the batch is almost full (calculated by
BatchSize/RecordSize - 10). Each test scenario runs at least 30 seconds.
Trunk performs better than 0.9 in all the tested cases. (max.in.flight.requests
actually does not matter here, though.)
{noformat}
run 9:
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=100, compression.type=gzip (2.19 > 1.83, 19%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=100, compression.type=snappy (18.17 > 14.96, 21%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=gzip (4.32 > 2.74, 57%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=snappy (28.66 > 20.59, 39%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=gzip (1.61 > 1.09,
47%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=snappy (10.77 > 8.41,
28%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.56 > 1.51,
69%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=snappy (21.37 >
16.24, 31%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=gzip (2.36 > 1.89, 24%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=snappy (19.25 > 14.99, 28%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.13 > 2.89, 77%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=snappy (32.24 > 21.95, 46%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.69 > 1.13,
49%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=snappy (12.34 > 9.61,
28%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.61,
66%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=snappy (23.70 >
18.03, 31%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=gzip (2.58 > 2.04, 26%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=snappy (19.44 > 16.20, 20%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.65 > 2.97, 90%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=snappy (33.82 > 26.91, 25%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.74 > 1.17,
48%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=snappy (12.67 >
10.60, 19%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.61 > 1.59,
64%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=snappy (24.06 >
21.71, 10%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=100, compression.type=gzip (2.06 > 1.88, 9%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=100, compression.type=snappy (16.77 > 13.71, 22%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=gzip (3.90 > 2.73, 42%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=snappy (29.85 > 19.11, 56%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=gzip (1.62 > 1.09,
48%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=snappy (11.18 > 8.68,
28%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.53 > 1.51,
67%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=snappy (21.45 >
16.14, 32%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=gzip (2.28 > 2.01, 13%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=snappy (18.67 > 14.18, 31%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.28 > 2.95, 78%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=snappy (34.24 > 22.01, 55%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.61 > 1.14,
41%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=snappy (12.95 > 9.82,
31%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.63,
64%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=snappy (24.54 >
18.31, 34%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=gzip (2.50 > 2.17, 15%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=snappy (18.78 > 15.79, 18%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.51 > 3.14, 75%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=snappy (35.34 > 28.92, 22%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.75 > 1.15,
52%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=snappy (13.41 >
11.02, 21%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.62 > 1.58,
65%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=snappy (25.40 >
22.47, 13%)
run 10:
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=100, compression.type=gzip (2.15 > 1.81, 18%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=100, compression.type=snappy (18.72 > 14.84, 26%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=gzip (3.94 > 2.74, 43%)
1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=snappy (29.69 > 20.33, 46%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=gzip (1.64 > 1.09,
50%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=snappy (10.93 > 8.41,
29%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.50 > 1.51,
65%)
1st: max.in.flight.requests.per.connection=1, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=snappy (21.25 >
16.19, 31%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=gzip (2.41 > 1.88, 28%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=snappy (18.96 > 14.97, 26%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.22 > 2.89, 80%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=snappy (32.47 > 22.00, 47%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.74 > 1.12,
55%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=snappy (11.86 > 9.60,
23%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.77 > 1.63,
69%)
1st: max.in.flight.requests.per.connection=1, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=snappy (24.10 >
17.71, 36%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=gzip (2.57 > 1.99, 29%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=snappy (19.95 > 16.77, 18%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.63 > 2.98, 88%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=snappy (32.94 > 27.33, 20%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.73 > 1.14,
51%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=snappy (12.82 >
10.85, 18%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.60 > 1.58,
64%)
1st: max.in.flight.requests.per.connection=1, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=snappy (24.29 >
21.69, 11%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=100, compression.type=gzip (2.01 > 1.90, 5%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=100, compression.type=snappy (17.93 > 13.49, 32%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=gzip (3.92 > 2.74, 43%)
1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0,
messageSize=1000, compression.type=snappy (28.23 > 19.01, 48%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=gzip (1.67 > 1.07,
56%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=100, compression.type=snappy (11.10 > 8.66,
28%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.48 > 1.52,
63%)
1st: max.in.flight.requests.per.connection=5, valueBound=500,
linger.ms=100000, messageSize=1000, compression.type=snappy (21.07 >
16.24, 29%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=gzip (2.30 > 2.00, 15%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=100, compression.type=snappy (18.85 > 14.39, 30%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.20 > 2.90, 79%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0,
messageSize=1000, compression.type=snappy (32.94 > 21.86, 50%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.54 > 1.14,
35%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=100, compression.type=snappy (13.09 > 9.65,
35%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.63,
64%)
1st: max.in.flight.requests.per.connection=5, valueBound=5000,
linger.ms=100000, messageSize=1000, compression.type=snappy (24.80 >
18.33, 35%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=gzip (2.49 > 2.15, 15%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=100, compression.type=snappy (17.77 > 15.84, 12%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=gzip (5.72 > 3.00, 90%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0,
messageSize=1000, compression.type=snappy (33.26 > 28.44, 16%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=gzip (1.73 > 1.15,
50%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=100, compression.type=snappy (13.14 >
11.11, 18%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=gzip (2.61 > 1.57,
66%)
1st: max.in.flight.requests.per.connection=5, valueBound=50000,
linger.ms=100000, messageSize=1000, compression.type=snappy (25.34 >
22.63, 11%)
{noformat}
> Producer's throughput lower with compressed data after KIP-31/32
> ----------------------------------------------------------------
>
> Key: KAFKA-3565
> URL: https://issues.apache.org/jira/browse/KAFKA-3565
> Project: Kafka
> Issue Type: Bug
> Reporter: Ismael Juma
> Priority: Critical
> Fix For: 0.10.0.0
>
>
> Relative offsets were introduced by KIP-31 so that the broker does not have
> to recompress data (this was previously required after offsets were
> assigned). The implicit assumption is that reducing CPU usage required by
> recompression would mean that producer throughput for compressed data would
> increase.
> However, this doesn't seem to be the case:
> {code}
> Commit: eee95228fabe1643baa016a2d49fb0a9fe2c66bd (one before KIP-31/32)
> test_id:
> 2016-04-15--012.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100.compression_type=snappy
> status: PASS
> run time: 59.030 seconds
> {"records_per_sec": 519418.343653, "mb_per_sec": 49.54}
> {code}
> Full results: https://gist.github.com/ijuma/0afada4ff51ad6a5ac2125714d748292
> {code}
> Commit: fa594c811e4e329b6e7b897bce910c6772c46c0f (KIP-31/32)
> test_id:
> 2016-04-15--013.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100.compression_type=snappy
> status: PASS
> run time: 1 minute 0.243 seconds
> {"records_per_sec": 427308.818848, "mb_per_sec": 40.75}
> {code}
> Full results: https://gist.github.com/ijuma/e49430f0548c4de5691ad47696f5c87d
> The difference for the uncompressed case is smaller (and within what one
> would expect given the additional size overhead caused by the timestamp
> field):
> {code}
> Commit: eee95228fabe1643baa016a2d49fb0a9fe2c66bd (one before KIP-31/32)
> test_id:
> 2016-04-15--010.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100
> status: PASS
> run time: 1 minute 4.176 seconds
> {"records_per_sec": 321018.17747, "mb_per_sec": 30.61}
> {code}
> Full results: https://gist.github.com/ijuma/5fec369d686751a2d84debae8f324d4f
> {code}
> Commit: fa594c811e4e329b6e7b897bce910c6772c46c0f (KIP-31/32)
> test_id:
> 2016-04-15--014.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100
> status: PASS
> run time: 1 minute 5.079 seconds
> {"records_per_sec": 291777.608696, "mb_per_sec": 27.83}
> {code}
> Full results: https://gist.github.com/ijuma/1d35bd831ff9931448b0294bd9b787ed
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)