[infinispan-dev] [infinispan-internal] Performance based on contention
Radim Vansa
rvansa at redhat.com
Fri Jan 4 09:26:53 EST 2013
|
| As for the low contention cases, I think they're all about the same
| as the probability for contention is all very low given the number
| of threads used. Perhaps if these were cranked up to maybe 50 or 100
| threads, you'd see a bigger difference?
Right, I think that there should be no difference between 24k and 80k, but as you can see in the no-tx case there was some strange behaviour so I added one more case to see the trend in the rest of results. Perflab was bored during xmas anyway ;-)
Nevertheless the overall result is pretty surprising for me, as infinspan can handle contention so smoothly that except for really extreme cases (as number of keys == number of threads) contention rather improves the performance (Is there any explanation for this? Some memory caching stuff keeping the often accessed results still occupy near-CPU caches? Can this really affect such high-level thingie as ispn?).
Radim
| On 4 Jan 2013, at 09:23, Radim Vansa <rvansa at redhat.com> wrote:
|
| > Hi,
| >
| > I have created a comparison how JDG (library mode) behaves
| > depending on the contention on keys. The test runs standard (20%
| > puts, 80% gets) stress test on different amount of keys (while
| > there are always 80k keys loaded into the cache) with 10
| > concurrent threads on each of 8 nodes, for 10 minutes. Regarding
| > JVM heating there was 10 minute warmup on 80k shared keys, then
| > the tests were executed in the order from the table below. TCP was
| > used as JGroups stack base.
| >
| > The variants below use pessimistic transactions (one request per
| > transaction), or no transactions in 6.1.0 case (running w/o
| > transactions on JDG 6.0.1 with high contention wouldn't make any
| > sense). The last 'disjunct' case has slightly different key format
| > evading any contention. Before the slash is number of reads per
| > node (sum for all 10 threads) per second, the latter is number of
| > writes.
| >
| > Accessed keys | JDG 6.0.1 TX | JDG 6.1.0 TX | JDG 6.1.0 NO TX
| > 80 | 18824/2866 | 21671/3542 | 22264/5978
| > 800 | 18740/3625 | 23655/4971 | 20772/6018
| > 8000 | 18694/3583 | 21086/4478 | 19882/5748
| > 24000 | 18674/3493 | 19342/4078 | 19757/5630
| > 80000 | 18680/3459 | 18567/3799 | 22617/6416
| > 80k disjunct | 19023/3670 | 20941/4527 | 20877/6154
| >
| > I can't much explain why the disjunct sets of keys have so much
| > better performance than the low contention cases, the key format
| > is really just key_(number) for shared keys and
| > key_(node)_(thread)_(number) for disjunct ones (and the rest of
| > the code paths is the same). The exceptionally good performance
| > for 80k keys in non-tx case is also very strange, but I keep
| > getting these results consistently.
| > Nevertheless, I am really happy about the high performance increase
| > between 6.0.1 and 6.1.0 and that no-tx case works intuitively (no
| > deadlocks) and really fast :)
| >
| > Radim
| >
| > -----------------------------------------------------------
| > 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
| >
| >
|
More information about the infinispan-dev
mailing list