On 4 July 2013 13:56, Manik Surtani <msurt...@redhat.com> wrote:
> Interesting and convoluted thread.  I'll try and summarise my thoughts on one 
> email:
>
> * I agree with Sanne that a cheat sheet will be extremely useful.  Sanne, 
> feel like kicking this off with your use case as described here, on the wiki? 
>  I like your ideas but just ranting about them won't help anybody.  ;) Maybe 
> then others can follow your template for more use cases, such as the one Erik 
> has detailed.

+1 and sorry for the rant. But still even after all my whining nobody
explained why we want to prioritise synchronous cachestore :-)
My point is not being against doing it, but to identify eagerly what
else is needed to accomodate such a use case: having the CacheStore
implementation is not enough to make such a configuration usable.

> * An SPI redesign has been on the cards for a while.  I believe Mircea is 
> working on this, a part of this redesign will involve directly involving 
> cache stores in JTA transactions where possible (e.g., JDBC cache stores).  I 
> recommend kicking off a separate thread to discuss that SPI.  Galder, I think 
> you can consider he JSR 107 CacheLoader/Writer interfaces as stable by now.
>
> * I agree with Galder as well, that we do need a filesystem-based cache store 
> that performs decently well OOTB when used both synchronously and 
> asynchronously, regardless of the outcome of any use case analysis.  Sanne, I 
> don't think Cassandra is the right answer here - too much setup/maintenance.  
> Maybe Karsten's FCS impl for smaller caches and then LevelDB/JNI is a valid 
> combination.

I wasn't serious on Cassandra being the ultimate solution, as I said I
just sketched an example use case.

>
> * Sanne, re: mmapped files, yes, very nice, but I'm holding back on that for 
> a number of reasons (see an earlier thread on the subject), one of them being 
> some rework in JGroups to be able to pass handles to direct buffers from the 
> network stack to Infinispan.

I thought we had agreed to hold back until the mayor version change..
!? That's the better solution, would be sad to waste time on temporary
compromises.

Sanne

>
> - M
>
> On 3 Jul 2013, at 15:26, Sanne Grinovero <sa...@infinispan.org> wrote:
>
>> Hi Galder,
>> you make many interesting points but I am not interested in discussing
>> my specific design ideas in detail, I just sketched that quickly as an
>> example of requirements description.
>> My intervention in this thread is all about demanding what the use
>> case is for such a synchronous cachestore.
>>
>> It is my understanding that lots of people are currently discussing
>> how to best make a synchronous cachestore mostly efficient, but I yet
>> have to see what the requirements are. My use case - although
>> expecting an asynchronous one - is just an example of how I would like
>> to see the general architecture described first before we waste time
>> on a useless component.
>>
>> I am not stating that nobody wants a strictly synchronous CacheStore,
>> but I would like to challenge the arguments who made someone (who?)
>> ask for this, as I believe there are many other things that would need
>> to be addressed.
>>
>> Therefore, my suggestion for describing the main use cases we expect
>> to support is not off-topic at all, it's the first thing any engineer
>> would have requested, and I would not spend a minute more of our
>> engineers in coding without a clear description of the expected
>> architecture, expected reliability, expected operations to be used.
>>
>> Sanne
>>
>> On 3 July 2013 14:59, Galder Zamarreño <gal...@redhat.com> wrote:
>>> Sanne, let me comment on some of the points you raised that didn't comment 
>>> on in an earlier comment...
>>>
>>> On Jul 2, 2013, at 2:47 PM, Sanne Grinovero <sa...@infinispan.org> wrote:
>>>
>>>> It would be nice to have a deck of "cheat sheets" on the expected use
>>>> cases and guarantees: to me it looks like everyone is trying to solve
>>>> a different problem / having a different problem in mind.
>>>>
>>>> My own take on it:
>>>>
>>>> Scenario #1
>>>> I'll primarily use Infinispan with DIST, and I don't care much for
>>>> other options. Reliability is guaranteed via numOwners>1, NOT by
>>>> persisting to disk: if a node fails, I kill the VM (the machine, not
>>>> the Java process) and start new ones to compensate: I'm assuming cloud
>>>> nodes, so it's likely that when a failed node is gone, the disk is
>>>> gone as well, with all the carefully stored data.
>>>> I will use Infinispan primarily to absorb write spikes - so a "synch
>>>> flush" is no good for me - and to boost read performance by as much
>>>> memory I can throw at it.
>>>> CacheStore is used for two reasons:
>>>> - overflow (LIRS+passivation) for then the memory is not enough
>>>> - clean shutdown: you can think of it as a way to be able to upgrade
>>>> some component in the system (Infinispan or my own); I would expect
>>>> some kind of "JMX flush" operation to do a clean shutdown without data
>>>> loss.
>>>
>>> ^ Should this really be implemented at the Infinispan level? In the 
>>> AS/EAP/Wildfly case, they take care that all transactions have finished 
>>> before shutting down, and Infinispan benefits from that.
>>>
>>>> Given such a scenario, I am not interested at all in synchronous
>>>> storage. Before we commit into a design which is basically assuming
>>>> the need for synchronous storage guarantees, I'd like to understand
>>>> what kind of use case it's aiming to solve.
>>>
>>> Sanne, any **strict** synchronous storage guarantees (e.g. to force or to 
>>> not) will be configurable and most likely they'll be disabled, just like 
>>> Level DB JNI, or Karsten's file cache store by default. A case where 
>>> someone might want to enable this is when it just has a local cache and 
>>> wants to persist data for recovery. Of course, the whole node and the disk 
>>> could die…, but this is not so far fetched IMO.
>>>
>>> The whole discussion about **strict** synchronous storage guarantees in 
>>> this thread is to make sure we're comparing apples with apples. IOW, it 
>>> doesn't make sense to compare performance when each has different 
>>> **strict** synchronous storage guarantee settings.
>>>
>>>> It would be great to document each such use case and put down a table
>>>> of things which can be expected, which features should not be expected
>>>> (be very explicit on the limitations), and how basic operations are
>>>> expected to be performed in the scenario: like how do you do a rolling
>>>> upgrade in Scenario 1# ? How do you do a backup? And of course some
>>>> configurations & code examples.
>>>
>>> ^ Hmmm, these operations are not really specific to the file cache store 
>>> per-se. They are valid points, for sure, but out of the scope of this IMO.
>>>
>>>> Only then we would be able to pick a design (or multiple ones); for my
>>>> use case the proposal from Karsten seems excellent, so I'm wondering
>>>> why I should be looking for alternatives, and wondering why everyone
>>>> is still wasting time on different discussions :-D
>>>>
>>>> I'm pretty sure there is people looking forward for a synch-CacheStore
>>>> too: if you could nail down such a scenario however I'm pretty sure
>>>> that some other considerations would not be taken into account (like
>>>> consistency of data when reactivating a dormant node), so I suspect
>>>> that just implementing such a component would actually not make any
>>>> new architecture possible, as you would get blocked by other problems
>>>> which need to be solved too.. better define all expectations asap!
>>>>
>>>> To me this thread smells of needing the off-heap Direct Memory buffers
>>>> which I suggested [long time ago] to efficiently offload internal
>>>> buffers,
>>>
>>> ^ Hmmm, if we have a file based cache store is to provide data survival 
>>> beyond shutting down a machine or it crashing it (assuming no disk 
>>> failure). So, I can't see how this off-heap memory buffers help here? 
>>> Unless you've got it mapped to a file or something else?
>>>
>>>> but failing to recognise this we're pushing responsibility to
>>>> an epic level complex CacheStore.. guys let's not forget that a mayor
>>>> bottleneck of CacheStores today is the SPI it has to implement, we
>>>> identified several limitations in the contract in the past which
>>>> prevent a superior efficiency: we're working towards a mayor release
>>>> now so I'd rather focus on the API changes which will make it possible
>>>> to get decent performance even without changing any storage engine..
>>>
>>> If you haven't already done so, the place to suggest/comment on this is for 
>>> sure [1].
>>>
>>> [1] https://community.jboss.org/wiki/CacheLoaderAndCacheStoreSPIRedesign
>>>
>>>> I'm pretty sure Cassandra (to pick one) doesn't scale too bad.
>>>
>>> ^ Requires a separate process and much more complex to set up. Not really 
>>> what we're looking for a simple local cache store that you can use for 
>>> example for passivation EJB3 SFSBs or HTTP sessions.
>>>
>>>>
>>>> Cheers,
>>>> Sanne
>>>>
>>>>
>>>>
>>>> On 2 July 2013 10:09, Radim Vansa <rva...@redhat.com> wrote:
>>>>> Hi,
>>>>>
>>>>> I've written down this proposal for the implementation of new cache store.
>>>>>
>>>>> https://community.jboss.org/wiki/BrnoCacheStoreDesignProposal
>>>>>
>>>>> WDYT?
>>>>>
>>>>> Radim
>>>>>
>>>>> ----- Original Message -----
>>>>> | From: "Radim Vansa" <rva...@redhat.com>
>>>>> | To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>>>>> | Sent: Thursday, June 27, 2013 2:37:43 PM
>>>>> | Subject: Re: [infinispan-dev] Cachestores performance
>>>>> |
>>>>> |
>>>>> |
>>>>> | ----- Original Message -----
>>>>> | | From: "Galder Zamarreño" <gal...@redhat.com>
>>>>> | | To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>>>>> | | Sent: Thursday, June 27, 2013 1:52:11 PM
>>>>> | | Subject: Re: [infinispan-dev] Cachestores performance
>>>>> | |
>>>>> | | > As for Karsten's FCS implementation, I too have issues with the key 
>>>>> set
>>>>> | | > and
>>>>> | | > value offsets being solely in memory.  However I think that could be
>>>>> | | > improved by storing only a certain number of keys/offsets in 
>>>>> memory, and
>>>>> | | > flushing the rest to disk again into an index file.
>>>>> | |
>>>>> | | ^ Karsten's implementation makes this relatively easy to achieve 
>>>>> because it
>>>>> | | already keeps this mapping in a LinkedHashMap (with a given max 
>>>>> entries
>>>>> | | limit [1]) assuming removeEldestEntry() is overriden to flush to disk 
>>>>> older
>>>>> | | entries. Some extra logic would be needed to bring back data from the 
>>>>> disk
>>>>> | | too… but your suggestion below is also quite interesting...
>>>>> |
>>>>> | I certainly wouldn't call this easy task, because the most problematic 
>>>>> part
>>>>> | is what we will do when the whole entry (both key and value) are gone 
>>>>> from
>>>>> | memory and we want to read them - that requires keeping some searchable
>>>>> | structure on-disk. And that's the hard stuff.
>>>>> |
>>>>> | |
>>>>> | | > I believe LevelDB follows a similar design, but I think Karsten's 
>>>>> FCS
>>>>> | | > will
>>>>> | | > perform better than LevelDB since it doesn't attempt to maintain a 
>>>>> sorted
>>>>> | | > structure on disk.
>>>>> | |
>>>>> | | ^ In-memory, the structure can optionally be ordered if it's bound 
>>>>> [1],
>>>>> | | otherwise it's just a normal map. How would be store it at the disk 
>>>>> level?
>>>>> | | B+ tree with hashes of keys and then linked lists?
>>>>> |
>>>>> | Before choosing "I love B#@& trees, let's use B#@& trees!", I'd find 
>>>>> out what
>>>>> | requirements do we have for the structure. I believe that the index 
>>>>> itself
>>>>> | should not be considered persistent, as it can be rebuilt when 
>>>>> preloading
>>>>> | the data (sequentially reading the data is fast, therefore we can 
>>>>> afford do
>>>>> | this indexing preload), the reason of the index being on-disk is that we
>>>>> | don't have enough memory to store all keys, or even key hashes. 
>>>>> Therefore it
>>>>> | does not have to be updated synchronously with the writes. It should be
>>>>> | mostly read-optimized then, because that's the thing where we need
>>>>> | synchronous access to this structure.
>>>>> |
>>>>> | |
>>>>> | | > One approach to maintaining keys and offsets in memory could be a
>>>>> | | > WeakReference that points to the key stored in the in-memory
>>>>> | | > DataContainer.  Once evicted from the DC, then the CacheStore impl 
>>>>> would
>>>>> | | > need to fetch the key again from the index file before looking up 
>>>>> the
>>>>> | | > value in the actual store.
>>>>> | |
>>>>> | | ^ Hmmm, interesting idea… has the potential to safe the memory space 
>>>>> by not
>>>>> | | having to keep that extra data structure in the cache store.
>>>>> |
>>>>> | You mean to mix the DataContainer with xCacheEntry implementation and 
>>>>> the
>>>>> | cache store implementation? Is that possible from design perspective?
>>>>> | Speaking about different kind of references, we may even optimize
>>>>> | not-well-tuned eviction by SoftReferences, so that even if the entry was
>>>>> | evicted from main DataContainer, we'd keep the value referenced from the
>>>>> | cache-store (and this does not have to be loaded from disk if referenced
>>>>> | before garbage collection). But such thought may be premature 
>>>>> optimization.
>>>>> | For having eviction managed in relation with GC we should rather combine
>>>>> | this with PhantomReferences, where entries would be written to cache 
>>>>> upon
>>>>> | finalization.
>>>>> |
>>>>> | |
>>>>> | | > This way we have hot items always in memory, semi-hot items with 
>>>>> offsets
>>>>> | | > in
>>>>> | | > memory and values on disk, and cold items needing to be read off 
>>>>> disk
>>>>> | | > entirely (both offset and value).  Also for write-through and
>>>>> | | > write-behind, as long as the item is hot or warm (key and offset in
>>>>> | | > memory), writing will be pretty fast.
>>>>> | |
>>>>> | | My worry about Karsten's impl is writing actually. If you look at the 
>>>>> last
>>>>> | | performance numbers in [2], where we see the performance difference of
>>>>> | | force=true and force=false in Karsten's cache store compared with 
>>>>> LevelDB
>>>>> | | JNI, you see that force=false is fastest, then JNI LevelDB, and the
>>>>> | | force=true. Me wonders what kind of write guarantees LevelDB JNI 
>>>>> provides
>>>>> | | (and the JAVA version)...
>>>>> |
>>>>> | Just for clarification: the fast implementation is without force at 
>>>>> all, the
>>>>> | slower is with force(false). Force(true) means updating metadata (such 
>>>>> as
>>>>> | access times?) which is not required for cache-store.
>>>>> | But the numbers suggest that the random access with syncing is really 
>>>>> not a
>>>>> | good option, and that we should rather use the temporary append-only 
>>>>> log,
>>>>> | which would be persisted into structured DB by different thread (as 
>>>>> LevelDB
>>>>> | does, I suppose).
>>>>> |
>>>>> | Thinking about all the levels and cache structures optimizing the read
>>>>> | access, I can see four levels of search structures: key + value (usual
>>>>> | DataContainer), key + offset, hash + offset, all on disk. The "hash +
>>>>> | offset" may seem superflous but for some use-cases with big keys it may 
>>>>> be
>>>>> | worth sparing a few disk look-ups.
>>>>> |
>>>>> | Radim
>>>>> |
>>>>> | | >
>>>>> | | > On 27 Jun 2013, at 10:33, Radim Vansa <rva...@redhat.com> wrote:
>>>>> | | >
>>>>> | | >> Oops, by the cache store I mean the previously-superfast
>>>>> | | >> KarstenFileCacheStore implementation.
>>>>> | | >>
>>>>> | | >> ----- Original Message -----
>>>>> | | >> | From: "Radim Vansa" <rva...@redhat.com>
>>>>> | | >> | To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>>>>> | | >> | Sent: Thursday, June 27, 2013 11:30:53 AM
>>>>> | | >> | Subject: Re: [infinispan-dev] Cachestores performance
>>>>> | | >> |
>>>>> | | >> | I have added FileChannel.force(false) flushes after all write
>>>>> | | >> | operations
>>>>> | | >> | in
>>>>> | | >> | the cache store, and now the comparison is also updated with 
>>>>> these
>>>>> | | >> | values.
>>>>> | | >> |
>>>>> | | >> | Radim
>>>>> | | >> |
>>>>> | | >> | ----- Original Message -----
>>>>> | | >> | | From: "Radim Vansa" <rva...@redhat.com>
>>>>> | | >> | | To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>>>>> | | >> | | Sent: Thursday, June 27, 2013 8:54:25 AM
>>>>> | | >> | | Subject: Re: [infinispan-dev] Cachestores performance
>>>>> | | >> | |
>>>>> | | >> | | Yep, write-through. LevelDB JAVA used FileChannelTable
>>>>> | | >> | | implementation
>>>>> | | >> | | (-Dleveldb.mmap), because Mmaping is not implemented very well 
>>>>> and
>>>>> | | >> | | causes
>>>>> | | >> | | JVM crashes (I believe it's because of calling non-public API 
>>>>> via
>>>>> | | >> | | reflection
>>>>> | | >> | | - I've found post from the Oracle JVM guys discouraging the
>>>>> | | >> | | particular
>>>>> | | >> | | trick
>>>>> | | >> | | it uses). After writing the record to the log, it calls
>>>>> | | >> | | FileChannel.force(true), therefore, it should be really on the 
>>>>> disc
>>>>> | | >> | | by
>>>>> | | >> | | that
>>>>> | | >> | | moment.
>>>>> | | >> | | I have not looked into the JNI implementation but I expect the 
>>>>> same.
>>>>> | | >> | |
>>>>> | | >> | | By the way, I have updated [1] with numbers when running on 
>>>>> more
>>>>> | | >> | | data
>>>>> | | >> | | (2 GB
>>>>> | | >> | | instead of 100 MB). I won't retype it here, so look there. The
>>>>> | | >> | | performance
>>>>> | | >> | | is much lower.
>>>>> | | >> | | I may try also increase JVM heap size and try with a bit more 
>>>>> data
>>>>> | | >> | | yet.
>>>>> | | >> | |
>>>>> | | >> | | Radim
>>>>> | | >> | |
>>>>> | | >> | | [1] https://community.jboss.org/wiki/FileCacheStoreRedesign
>>>>> | | >> | |
>>>>> | | >> | | ----- Original Message -----
>>>>> | | >> | | | From: "Erik Salter" <an1...@hotmail.com>
>>>>> | | >> | | | To: "infinispan -Dev List" <infinispan-dev@lists.jboss.org>
>>>>> | | >> | | | Sent: Wednesday, June 26, 2013 7:40:19 PM
>>>>> | | >> | | | Subject: Re: [infinispan-dev] Cachestores performance
>>>>> | | >> | | |
>>>>> | | >> | | | These were write-through cache stores, right?  And with 
>>>>> LevelDB,
>>>>> | | >> | | | this was
>>>>> | | >> | | | through to the database file itself?
>>>>> | | >> | | |
>>>>> | | >> | | | Erik
>>>>> | | >> | | |
>>>>> | | >> | | | -----Original Message-----
>>>>> | | >> | | | From: infinispan-dev-boun...@lists.jboss.org
>>>>> | | >> | | | [mailto:infinispan-dev-boun...@lists.jboss.org] On Behalf Of 
>>>>> Radim
>>>>> | | >> | | | Vansa
>>>>> | | >> | | | Sent: Wednesday, June 26, 2013 11:24 AM
>>>>> | | >> | | | To: infinispan -Dev List
>>>>> | | >> | | | Subject: [infinispan-dev] Cachestores performance
>>>>> | | >> | | |
>>>>> | | >> | | | Hi all,
>>>>> | | >> | | |
>>>>> | | >> | | | according to [1] I've created the comparison of performance 
>>>>> in
>>>>> | | >> | | | stress-tests.
>>>>> | | >> | | |
>>>>> | | >> | | | All setups used local-cache, benchmark was executed via 
>>>>> Radargun
>>>>> | | >> | | | (actually
>>>>> | | >> | | | version not merged into master yet [2]). I've used 4 nodes 
>>>>> just to
>>>>> | | >> | | | get
>>>>> | | >> | | | more
>>>>> | | >> | | | data - each slave was absolutely independent of the others.
>>>>> | | >> | | |
>>>>> | | >> | | | First test was preloading performance - the cache started and
>>>>> | | >> | | | tried
>>>>> | | >> | | | to
>>>>> | | >> | | | load
>>>>> | | >> | | | 1GB of data from harddrive. Without cachestore the startup 
>>>>> takes
>>>>> | | >> | | | about 2
>>>>> | | >> | | | -
>>>>> | | >> | | | 4
>>>>> | | >> | | | seconds, average numbers for the cachestores are below:
>>>>> | | >> | | |
>>>>> | | >> | | | FileCacheStore:        9.8 s
>>>>> | | >> | | | KarstenFileCacheStore:  14 s
>>>>> | | >> | | | LevelDB-JAVA impl.:   12.3 s
>>>>> | | >> | | | LevelDB-JNI impl.:    12.9 s
>>>>> | | >> | | |
>>>>> | | >> | | | IMO nothing special, all times seem affordable. We don't 
>>>>> benchmark
>>>>> | | >> | | | exactly
>>>>> | | >> | | | storing the data into the cachestore, here FileCacheStore 
>>>>> took
>>>>> | | >> | | | about
>>>>> | | >> | | | 44
>>>>> | | >> | | | minutes, while Karsten about 38 seconds, LevelDB-JAVA 4 
>>>>> minutes
>>>>> | | >> | | | and
>>>>> | | >> | | | LevelDB-JNI 96 seconds. The units are right, it's minutes 
>>>>> compared
>>>>> | | >> | | | to
>>>>> | | >> | | | seconds. But we all know that FileCacheStore is bloody slow.
>>>>> | | >> | | |
>>>>> | | >> | | | Second test is stress test (5 minutes, preceded by 2 minute
>>>>> | | >> | | | warmup)
>>>>> | | >> | | | where
>>>>> | | >> | | | each of 10 threads works on 10k entries with 1kB values 
>>>>> (~100 MB
>>>>> | | >> | | | in
>>>>> | | >> | | | total).
>>>>> | | >> | | | 20 % writes, 80 % reads, as usual. No eviction is configured,
>>>>> | | >> | | | therefore
>>>>> | | >> | | | the
>>>>> | | >> | | | cache-store works as a persistent storage only for case of 
>>>>> crash.
>>>>> | | >> | | |
>>>>> | | >> | | | FileCacheStore:         3.1M reads/s   112 writes/s  // on 
>>>>> one
>>>>> | | >> | | | node
>>>>> | | >> | | | the
>>>>> | | >> | | | performance was only 2.96M reads/s 75 writes/s
>>>>> | | >> | | | KarstenFileCacheStore:  9.2M reads/s  226k writes/s  // 
>>>>> yikes!
>>>>> | | >> | | | LevelDB-JAVA impl.:     3.9M reads/s  5100 writes/s
>>>>> | | >> | | | LevelDB-JNI impl.:      6.6M reads/s   14k writes/s  // on 
>>>>> one
>>>>> | | >> | | | node
>>>>> | | >> | | | the
>>>>> | | >> | | | performance was 3.9M/8.3k - about half of the others
>>>>> | | >> | | | Without cache store:   15.5M reads/s  4.4M writes/s
>>>>> | | >> | | |
>>>>> | | >> | | | Karsten implementation pretty rules here for two reasons. 
>>>>> First of
>>>>> | | >> | | | all,
>>>>> | | >> | | | it
>>>>> | | >> | | | does not flush the data (it calls only 
>>>>> RandomAccessFile.write()).
>>>>> | | >> | | | Other
>>>>> | | >> | | | cheat is that it stores in-memory the keys and offsets of 
>>>>> data
>>>>> | | >> | | | values in
>>>>> | | >> | | | the
>>>>> | | >> | | | database file. Therefore, it's definitely the best choice 
>>>>> for this
>>>>> | | >> | | | scenario,
>>>>> | | >> | | | but it does not allow to scale the cache-store, especially in
>>>>> | | >> | | | cases
>>>>> | | >> | | | where
>>>>> | | >> | | | the keys are big and values small. However, this performance 
>>>>> boost
>>>>> | | >> | | | is
>>>>> | | >> | | | definitely worth checking - I could think of caching the disk
>>>>> | | >> | | | offsets in
>>>>> | | >> | | | memory and querying persistent index only in case of missing
>>>>> | | >> | | | record,
>>>>> | | >> | | | with
>>>>> | | >> | | | part of the persistent index flushed asynchronously (the 
>>>>> index can
>>>>> | | >> | | | be
>>>>> | | >> | | | always
>>>>> | | >> | | | rebuilt during the preloading for case of crash).
>>>>> | | >> | | |
>>>>> | | >> | | | The third test should have tested the scenario with more 
>>>>> data to
>>>>> | | >> | | | be
>>>>> | | >> | | | stored
>>>>> | | >> | | | than memory - therefore, the stressors operated on 100k 
>>>>> entries
>>>>> | | >> | | | (~100 MB
>>>>> | | >> | | | of
>>>>> | | >> | | | data) but eviction was set to 10k entries (9216 entries 
>>>>> ended up
>>>>> | | >> | | | in
>>>>> | | >> | | | memory
>>>>> | | >> | | | after the test has ended).
>>>>> | | >> | | |
>>>>> | | >> | | | FileCacheStore:            750 reads/s         285 writes/s  
>>>>> //
>>>>> | | >> | | | one
>>>>> | | >> | | | node
>>>>> | | >> | | | had
>>>>> | | >> | | | only 524 reads and 213 writes per second
>>>>> | | >> | | | KarstenFileCacheStore:    458k reads/s        137k writes/s
>>>>> | | >> | | | LevelDB-JAVA impl.:        21k reads/s          9k writes/s  
>>>>> // a
>>>>> | | >> | | | bit
>>>>> | | >> | | | varying
>>>>> | | >> | | | performance
>>>>> | | >> | | | LevelDB-JNI impl.:     13k-46k reads/s  6.6k-15.2k writes/s  
>>>>> //
>>>>> | | >> | | | the
>>>>> | | >> | | | performance varied a lot!
>>>>> | | >> | | |
>>>>> | | >> | | | 100 MB of data is not much, but it takes so long to push it 
>>>>> into
>>>>> | | >> | | | FileCacheStore that I won't use more unless we exclude this 
>>>>> loser
>>>>> | | >> | | | from
>>>>> | | >> | | | the
>>>>> | | >> | | | comparison :)
>>>>> | | >> | | |
>>>>> | | >> | | | Radim
>>>>> | | >> | | |
>>>>> | | >> | | | [1] https://community.jboss.org/wiki/FileCacheStoreRedesign
>>>>> | | >> | | | [2] https://github.com/rvansa/radargun/tree/t_keygen
>>>>> | | >> | | |
>>>>> | | >> | | | -----------------------------------------------------------
>>>>> | | >> | | | Radim Vansa
>>>>> | | >> | | | Quality Assurance Engineer
>>>>> | | >> | | | JBoss Datagrid
>>>>> | | >> | | | tel. +420532294559 ext. 62559
>>>>> | | >> | | |
>>>>> | | >> | | | Red Hat Czech, s.r.o.
>>>>> | | >> | | | Brno, Purkyňova 99/71, PSČ 612 45
>>>>> | | >> | | | Czech Republic
>>>>> | | >> | | |
>>>>> | | >> | | |
>>>>> | | >> | | | _______________________________________________
>>>>> | | >> | | | infinispan-dev mailing list
>>>>> | | >> | | | infinispan-dev@lists.jboss.org
>>>>> | | >> | | | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | | >> | | |
>>>>> | | >> | | |
>>>>> | | >> | | | _______________________________________________
>>>>> | | >> | | | infinispan-dev mailing list
>>>>> | | >> | | | infinispan-dev@lists.jboss.org
>>>>> | | >> | | | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | | >> | |
>>>>> | | >> | | _______________________________________________
>>>>> | | >> | | infinispan-dev mailing list
>>>>> | | >> | | infinispan-dev@lists.jboss.org
>>>>> | | >> | | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | | >> |
>>>>> | | >> | _______________________________________________
>>>>> | | >> | infinispan-dev mailing list
>>>>> | | >> | infinispan-dev@lists.jboss.org
>>>>> | | >> | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | | >>
>>>>> | | >> _______________________________________________
>>>>> | | >> infinispan-dev mailing list
>>>>> | | >> infinispan-dev@lists.jboss.org
>>>>> | | >> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | | >
>>>>> | | > --
>>>>> | | > Manik Surtani
>>>>> | | > ma...@jboss.org
>>>>> | | > twitter.com/maniksurtani
>>>>> | | >
>>>>> | | > Platform Architect, JBoss Data Grid
>>>>> | | > http://red.ht/data-grid
>>>>> | | >
>>>>> | | >
>>>>> | | > _______________________________________________
>>>>> | | > infinispan-dev mailing list
>>>>> | | > infinispan-dev@lists.jboss.org
>>>>> | | > https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> | |
>>>>> | |
>>>>> | | --
>>>>> | | Galder Zamarreño
>>>>> | | gal...@redhat.com
>>>>> | | twitter.com/galderz
>>>>> | |
>>>>> | | Project Lead, Escalante
>>>>> | | http://escalante.io
>>>>> | |
>>>>> | | Engineer, Infinispan
>>>>> | | http://infinispan.org
>>>>> | |
>>>>> | |
>>>>> | | _______________________________________________
>>>>> | | infinispan-dev mailing list
>>>>> | | infinispan-dev@lists.jboss.org
>>>>> | | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>> |
>>>>> | _______________________________________________
>>>>> | infinispan-dev mailing list
>>>>> | infinispan-dev@lists.jboss.org
>>>>> | https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>>
>>>>> _______________________________________________
>>>>> infinispan-dev mailing list
>>>>> infinispan-dev@lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>>
>>>> _______________________________________________
>>>> infinispan-dev mailing list
>>>> infinispan-dev@lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>>
>>>
>>> --
>>> Galder Zamarreño
>>> gal...@redhat.com
>>> twitter.com/galderz
>>>
>>> Project Lead, Escalante
>>> http://escalante.io
>>>
>>> Engineer, Infinispan
>>> http://infinispan.org
>>>
>>>
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> --
> Manik Surtani
> ma...@jboss.org
> twitter.com/maniksurtani
>
> Platform Architect, JBoss Data Grid
> http://red.ht/data-grid
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to