Re: copyOnRead to false
Hi Colin, I would suggest you send a new message to user list with a detailed description of your use case, I think the community could check it and give some comments. Evgenii -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Re: copyOnRead to false
Benchmarks I've run on this flag and tests on mutating the entry (acknowledging that this would be bad practice in production) - agree with Evgenii's comments. Namely that this attribute has an effect for on-heap caches (I'm using 2.1). I find it has more of an effect in cases where he same records are read multiple times - as compared with a single scan type operation. The effect is about 50% faster than when using off heap storage only. Having said this, it is still 100 times slower than a hashmap for local read operations. For the benefit of my understanding, what is likely to be taking the time in this case? The mutation test suggests that there is no marshalling/copying. Is there anything we can configure to improve on this? Regards, Colin. -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Re: copyOnRead to false
HI,I am using 1.9 and according to your explanation neither does it make sense to me. Thanks anyway for explaining the precise semantics. I will try to change some parameters of the tests to see if I can come up with some meaningful explanation.Thanks againSteve Original Message Subject: Re: copyOnRead to falseFrom: Evgenii ZhuravlevTo: user@ignite.apache.orgCC: Hi,I want to clarify about usage copyOnRead=False:As far as I know, It should help in 1.x releases, with the default configuration, when entries stored in onheap and in 2.x releases, with _onHeapCacheEnabled_=true(it's not default). I think we should mention this in the documentation.Also, it shouldn't affect behavior in 2.x without enabled on heap cache, so, It's not clear to me why you get performance degradation.Evgenii2017-09-05 10:36 GMT+03:00 steve.hostettler :Hello, thanks for the answer. The benchmark is actually our application stressed with several volumes. Some quite complex to describe. However, for these benchmarks we are only using one node. Basically we are loading a set of caches from the database, do a lot of querying both ScanQuery (on BinaryObjects) and SQLQueries. Most of what we are doing is read only with lot of computations (at least we segregated the caches that are r/w) Based on what you described, I should witness an performance improvment. -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Re: copyOnRead to false
Hi, I want to clarify about usage copyOnRead=False: As far as I know, It should help in 1.x releases, with the default configuration, when entries stored in onheap and in 2.x releases, with onHeapCacheEnabled=true(it's not default). I think we should mention this in the documentation. Also, it shouldn't affect behavior in 2.x without enabled on heap cache, so, It's not clear to me why you get performance degradation. Evgenii 2017-09-05 10:36 GMT+03:00 steve.hostettler <steve.hostett...@gmail.com>: > Hello, > > thanks for the answer. The benchmark is actually our application stressed > with several volumes. Some quite complex to describe. However, for these > benchmarks we are only using one node. > > Basically we are loading a set of caches from the database, do a lot of > querying both ScanQuery (on BinaryObjects) and SQLQueries. > > Most of what we are doing is read only with lot of computations (at least > we > segregated the caches that are r/w) > > Based on what you described, I should witness an performance improvment. > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >
Re: copyOnRead to false
Hello, thanks for the answer. The benchmark is actually our application stressed with several volumes. Some quite complex to describe. However, for these benchmarks we are only using one node. Basically we are loading a set of caches from the database, do a lot of querying both ScanQuery (on BinaryObjects) and SQLQueries. Most of what we are doing is read only with lot of computations (at least we segregated the caches that are r/w) Based on what you described, I should witness an performance improvment. -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Re: copyOnRead to false
Hi, Could you describe your benchmarks? So we can understand whats could be wrong here. If the value is fetched from a remote node, you will always get a copy. If you get the value locally, you can force Ignite to return the stored instance by setting CacheConfiguration.setCopyOnRead(false) property, but this should be used only in read-only scenario. It's not safe to modify this instance because the serialized form will not be updated until you call cache.put(), so the one that reads it will potentially get the old value. Additionally, it can be concurrently serialized which can cause data corruption. If you use BinaryMarshaller, with copyOnRead flag, Ignite stores serialized copy in heap and do not copy object on each "get" (if the object does not change after "get"): Please share info about your benchmarks(or code) to investigation of this problem. Evgenii -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
copyOnRead to false
Hello, we did some benchmarks and did set the copyOnRead flag to false and it did increase the processing time and the memory a little bit (10%). I cannot figure out why this would be case since my understanding is that if anything it should reduce the processing time by avoiding a clone. One note: we heavely use the BinaryMarshaller and BinaryObjects without deserializalation. Maybe this has an impact. Many Thanks in advance Steve -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/