- What is the record size?
- Is this a local setup? i.e., producer/broker running local?
- Any overrides apart from batch size? E.g., linger time.
- Can you establish a baseline - with the old producer's sync-send?
Thanks,
Joel
On Wed, Apr 29, 2015 at 12:58:43AM +0000, Roshan Naik wrote:
> Based on recent suggestion by Joel, I am experimenting with using flush() to
> simulate batched-sync behavior.
> The essence of my single threaded producer code is :
>
> for (int i = 0; i < numRecords;) {
> // 1- Send a batch
> for(int batchCounter=0; batchCounter<batchSz; ++batchCounter) {
> Future<RecordMetadata> f = producer.send(record, null);
> futureList.add(f);
> i++;
> }
> // 2- Flush after sending batch
> producer.flush();
>
> // 3- Ensure all msgs were send
> for( Future<RecordMetadata> f : futureList) {
> f.get();
> }
> }
>
> There are actually two batch size in play here. One is the number of messages
> between every flush() call made by the client. The other is the batch.size
> setting which impacts the batching internally done by the underlying Async
> api.
>
> Intuitively .. we either want to
> A) Set both batch sizes to be Equal, OR
> B) Set the underlying batch.size to a sufficiently large number so as to
> effectively disable internal batch management
>
>
> Below numbers are in MB/s. The 'Batch' column indicate the number of events
> between each explicit client flush()
> Setup is 1-node broker and acks=1.
>
> 1 partition
> Batch=4k Batch=8k Batch=16k
> Equal batchSizes (a) 16 32 52
> large batch.Size (b) 140 123 124
>
> 4 partitions
> Batch=4k Batch=8k Batch=16k
> Equal batchSz (a) 35 61 82
> large batch.size (b) 7 7 7
> 8 partitions
> Batch=4k Batch=8k Batch=16k
> Equal batchSz (a) 49 70 99
> large batch.size (b) 7 8 7
>
>
> There are two issues noticeable in these number:
> 1 - Case A is much faster than case B for 4 and 8 partitions.
> 2 - Single partition mode outperforms all others and here case B is faster
> than case A.
>
>
>
>
> Side Note: I used the client APIs from the trunk while the broker is
> running 0.8.2 (I don't think it matters, but nevertheless wanted to point out)
>