You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geode.apache.org by Real Wes Williams <Th...@outlook.com> on 2016/05/10 20:00:10 UTC

PutAll performance between client vs peer

I am looking at a client that is writing 1 million puts in ~5 milliseconds across 2 nodes.

To boost performance, I wrote a peer with local-max-memory=0 to write the same 1M puts. After some time to let the buckets warm up, the puts took ~29 millis.

In GemFire XD the peer driver was more performant than the client driver and so I expected the Geode peer to write faster than a client because it is “bucket-aware”. 

What am I missing in that I expect a peer to write faster than a client but the reality is reversed?

Thanks,
Wes Williams

Re: PutAll performance between client vs peer

Posted by Real Wes Williams <Th...@outlook.com>.
Darryl,

I did do .putAll but in micro-batches.

Dan, I put in the sneaky conserve-sockets=false per your memory jog. I always forget that thing. I’m sure there’s a reason it doesn’t default to false. I am not using multiple threads.  The timings reduced from 29ms to 20ms.  Is the reason that the peer is still significantly slower perhaps due to the client dispatching using multiple threads in the pool, whereas the peer is somehow single threaded on the dispatch?

The logic to do the putAll is exactly the same since after creating the cache I delegate the puts to the region in a common class.


[info 2016/05/10 22:36:38.839 EDT <main> tid=0x1] Startup Configuration:
 ### GemFire Properties defined with api ###
cache-xml-file=./target/classes/config/gemfire/peerCache.xml
conserve-sockets=false
locators=localhost[10334]

Seconds to write 1 million quotes in peer mode=19.999




> On May 10, 2016, at 5:21 PM, Dan Smith <ds...@pivotal.io> wrote:
> 
> The geode client is also "bucket-aware", so the writes will go directly to the primary from the geode client once it's warmed up and discovered the PR metadata.
> 
> Are you using multiple threads? What are your conserve-sockets settings? With the defaults on pool size and conserve-sockets, the geode client might actually use more sockets and have less contention on the sender.
> 
> 
> -Dan
> 
> On Tue, May 10, 2016 at 1:25 PM, Darrel Schneider <dschneider@pivotal.io <ma...@pivotal.io>> wrote:
> Did you do the puts in both cases using putAll?
> 
> On Tue, May 10, 2016 at 1:00 PM, Real Wes Williams <TheRealWes@outlook.com <ma...@outlook.com>> wrote:
> I am looking at a client that is writing 1 million puts in ~5 milliseconds across 2 nodes.
> 
> To boost performance, I wrote a peer with local-max-memory=0 to write the same 1M puts. After some time to let the buckets warm up, the puts took ~29 millis.
> 
> In GemFire XD the peer driver was more performant than the client driver and so I expected the Geode peer to write faster than a client because it is “bucket-aware”.
> 
> What am I missing in that I expect a peer to write faster than a client but the reality is reversed?
> 
> Thanks,
> Wes Williams
> 
> 


Re: PutAll performance between client vs peer

Posted by Dan Smith <ds...@pivotal.io>.
The geode client is also "bucket-aware", so the writes will go directly to
the primary from the geode client once it's warmed up and discovered the PR
metadata.

Are you using multiple threads? What are your conserve-sockets settings?
With the defaults on pool size and conserve-sockets, the geode client might
actually use more sockets and have less contention on the sender.


-Dan

On Tue, May 10, 2016 at 1:25 PM, Darrel Schneider <ds...@pivotal.io>
wrote:

> Did you do the puts in both cases using putAll?
>
> On Tue, May 10, 2016 at 1:00 PM, Real Wes Williams <TheRealWes@outlook.com
> > wrote:
>
>> I am looking at a client that is writing 1 million puts in ~5
>> milliseconds across 2 nodes.
>>
>> To boost performance, I wrote a peer with local-max-memory=0 to write the
>> same 1M puts. After some time to let the buckets warm up, the puts took ~29
>> millis.
>>
>> In GemFire XD the peer driver was more performant than the client driver
>> and so I expected the Geode peer to write faster than a client because it
>> is “bucket-aware”.
>>
>> What am I missing in that I expect a peer to write faster than a client
>> but the reality is reversed?
>>
>> Thanks,
>> Wes Williams
>
>
>

Re: PutAll performance between client vs peer

Posted by Darrel Schneider <ds...@pivotal.io>.
Did you do the puts in both cases using putAll?

On Tue, May 10, 2016 at 1:00 PM, Real Wes Williams <Th...@outlook.com>
wrote:

> I am looking at a client that is writing 1 million puts in ~5 milliseconds
> across 2 nodes.
>
> To boost performance, I wrote a peer with local-max-memory=0 to write the
> same 1M puts. After some time to let the buckets warm up, the puts took ~29
> millis.
>
> In GemFire XD the peer driver was more performant than the client driver
> and so I expected the Geode peer to write faster than a client because it
> is “bucket-aware”.
>
> What am I missing in that I expect a peer to write faster than a client
> but the reality is reversed?
>
> Thanks,
> Wes Williams