[ 
https://issues.apache.org/jira/browse/KAFKA-3565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15252123#comment-15252123
 ] 

Jiangjie Qin commented on KAFKA-3565:
-------------------------------------

[~jkreps] The google doc should be accessible now. 

I think the change in uncompressed case is expected because of the 8-bytes 
additional cost. The MB/s reported in ProducerPerformance seems based on the 
actual message size which does not include the message header overhead.

I benchmarked the compression of bounded random integers in the producer with 
jmh:
{code}
Benchmark                         (bufferSize)  (recordSize)  (valueBound)  
Mode  Cnt       Score        Error  Units
ClientMicroBenchMark.compression          1024           100           500  
avgt   20  152745.539 ± 198435.342  ns/op
ClientMicroBenchMark.compression          1024           100          5000  
avgt   20  106698.904 ± 111624.120  ns/op
ClientMicroBenchMark.compression          1024           100         50000  
avgt   20  104670.802 ± 110694.704  ns/op
ClientMicroBenchMark.compression          1024          1000           500  
avgt   20  169223.272 ± 180063.271  ns/op
ClientMicroBenchMark.compression          1024          1000          5000  
avgt   20  118949.514 ± 122875.686  ns/op
ClientMicroBenchMark.compression          1024          1000         50000  
avgt   20  130193.581 ± 140485.913  ns/op
{code}

I benchmarked System.currentTimeMillis() some time ago as well, it took single 
digit nano seconds. So It seems ignorable compared with compression time.

>From [~ijuma] test, it seems the gap is around 8-10% in the throughput of user 
>bytes when message size is 100. Is this different from what we saw before 
>which has 17% gap? What was the integer range of the test? And how many 
>records were sent during the test? One thing I noticed is that it takes a few 
>seconds for the throughput to become stable, so if the tests finished very 
>quickly, the results may not be quite accurate. The tests I ran adjusted the 
>records number dynamically to let the testing time be at least 15 seconds.

> 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)

Reply via email to