JBTM-845 Include the Infinispan backed slot store in the object store…#204
Conversation
|
@mmusgrov the job is failing because the expected number or store benchmark is now 6 instead of 4: I think this check is quite counterintuitive but to change P.S. InfinispanSlotsStoreRestartBenchmark is not executed by the script because it ends with '*StoreRestartBenchmark' instead of '*StoreBenchmark'. If you want to include that too maybe the configuration number i mentioned above needs to be changed to |
48e385f to
bb9bdb5
Compare
Well spotted. I went for I agree this script is quite/very counterintuitive, I've tripped up over it before in other parts too. |
| let tc=$(wc -l < ${CSVF}) | ||
| let tc=tc-1 # subtract 1 to account for the header | ||
| if [ $tc != $3 ]; then | ||
| if [ $tc -lt $3 ]; then |
There was a problem hiding this comment.
I changed it to less than the expected number since that still implies at least one benchmark failed to finish
There was a problem hiding this comment.
This is another example of how non-intuitive/difficult to parse the script is. I ran it on my laptop and got:
Some benchmark tests did not finish. Expected: 4 Actual: 7
As you [Marco] mentioned elsewhere the pattern for the store benchmarks:
BM5="ArjunaJTA/jta com.arjuna.ats.jta.xa.performance.*StoreBenchmark.* 6"
had been incorrect but I couldn't figure out where the value 7 came from, lol!
There was a problem hiding this comment.
We used to have 4 store benchmarks, This PR is adding 3 InfiniSpan benchmarks. I think this is it.
I think BM5="ArjunaJTA/jta com.arjuna.ats.jta.xa.performance.StoreBenchmark. 7" should work, but I haven't checked.
There was a problem hiding this comment.
Ah you are correct, I forgot that I also added DiskSlotsStoreBenchmark.
I put the value as 6 since I have removed the InfinispanSlotsRestartStoreBenchmark.
|
I can see an interesting error in the infinispan restart benchmark: "Suppressed: org.infinispan.persistence.spi.PersistenceException: ISPN029025: Failed acquiring lock 'FileSystemLock{directory=null/infinispan-caches/node1/data/objectStoreCluster, file=objectStoreCluster.lck}' for SIFS" |
I've seen that one before, I'll investigate. I'll also modify the benchmark to see if we can fail it early (it's been running for 3 hrs. |
|
I also noticed many overlapping classes in the uber jar used for the benchmarking such as
and also
Not necessarily introduced in this PR but I'll investigate those too. |
|
Thanks @mmusgrov |
|
I've put this on Hold while I investigate "ARJUNA016053: Could not commit transaction". |
The failures were caused by the run that used 1600 threads which we know fails on when running on the github infrastructure (see pull/205). I fixed it by removing the run with that many threads, ie I set the env var in the PR description:
|
The benchmark that produces that error is InfinispanSlotsRestartStoreBenchmark (which I based on the test InfinispanSlotsRestartStoreBenchmark from the main narayana repo) and it uses write through caching backed by the filesystem and it stops and restarts an infinispan store. So when different JMH benchmark threads try to start stores backed by the same file system location it can find the lock held, ie I don't think that testing the performance of restarts, using JMH, is particularly good benchmark so I have deleted that particular benchmark. |
|
It looks like the |
Well spotted @jmfinelli . The SlotStore has a numberOfSlots configuration that must be configured correctly and the default configuration should be changed when running with 1600 threads. e.g. "configBean.setNumberOfSlots(1600);" Plus the disk read/write speed highly influences the results. May I suggest to disable this benchmark in the CI testing as with 1600 threads is quite unstable and keep it for reference? WDYT @mmusgrov ? |
|
If we want to keep the DiskSlotsStoreBenchmark to test the logic behind it (not the real scenario performance) we could configure it to run in memory so that we don't hit the disk bottleneck: i.e. |
The point of including it was to compare with the Infinispan Slot store and the other store types, not to test the absolute throughput. Depending upon what failures you saw @jmfinelli I would suggest either reducing the number of threads or tuning the number of slots since there are restrictions on that: https://github.com/jbosstm/narayana/blob/7.3.3.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/slot/SlotStoreEnvironmentBean.java#L44 |
|
Basically, it fails straight after it starts. The output of my local testing is similar to what happened here, even though I only tested 1600 threads and |
|
Yep, |
|
@mmusgrov Since you’re the author of the Infinispan store, you probably have the best context to fix this bug. Would you like to open the PR, or should I handle it? Just let me know what works best for you! |
I'll fix it since there may be other issues. |
|
@jmfinelli I will push a fix later today in readiness for the weekend runs. |
Sure, no problem at all. Narayana has been already released so nu rush at all. I'm completing the last steps before sending the announcement. Thanks Mike |
NARAYANA_REPO=mmusgrov
NARAYANA_BRANCH=JBTM-845
NY_BRANCH=JBTM-845
THREAD_COUNTS=1 24 240
github seems unable to support 1600 threads