Implementation PrevaylerEight

Christian Stein <[email protected]> Thu, 16 Oct 2014 12:13:12 +0200
Newsgroups gmane.comp.java.prevayler
Message-ID <CAJi8+g5+ZqebpUCY4Rd+fG=7uGcC+gL_DxnSfAVF_TVq9QdUsQ@mail.gmail.com>
--===============5075471002783550281==
Content-Type: multipart/alternative; boundary=001a113435dcf6b3250505877ecd

--001a113435dcf6b3250505877ecd
Content-Type: text/plain; charset=UTF-8

Hi folks,

I recently found some spare time and made the scalability test use
the PrevaylerEight implementation. See [0] for the outline of its source. A
single-system-wide lock facade prevayler implementation is used for
synchronization, at the moment.

The initial results are promising in terms of performance and consistency:

   - Default Prevayler: 1511,00 operations/second (8 threads)
   - PrevaylerEight implementation: 89189,50 operations/second (2 threads)


These microbenchmarks are, especially when the consistency checks kicks in,
very garbage collection dependent. I had to set
the TransactionTestCheckConsistency to NO, because replaying more the
1.000.000 transactions into the prevalent system would still be running...
Ran the benchmark with -verbose:gc and saw after an hour that every 10
deserialized transactions a full GC.

So, I had to lower the round duration from 20 to 2 seconds. This change
makes the results even more dependent on the gc, jit, et al. But, now some
results are shown. See console output at [0] and [1]. Query runs and JDBC
runs are switched off.

Next time, I'll integrate Caliper[3] to show more details.

Cheers,
Christian

[0] PrevaylerEight.java
https://gist.github.com/sormuras/3fea6f6ade327b2a4249
[1] Result PrevaylerImpl
https://gist.github.com/sormuras/ef279705d5838a757964
[2] Result PrevaylerEight
https://gist.github.com/sormuras/6f61c6af2066d5f8bf87
[3] Caliper https://code.google.com/p/caliper/

--001a113435dcf6b3250505877ecd
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi folks,<div><br></div><div>I recently found some spare t=
ime and made the scalability test use the=C2=A0PrevaylerEight implementatio=
n. See [0] for the outline of its source. A single-system-wide lock facade =
prevayler implementation is used for synchronization, at the moment.</div><=
div><br></div><div>The initial results are promising in terms of performanc=
e and consistency:</div><div><ul><li>Default Prevayler: 1511,00 operations/=
second (8 threads)</li><li>PrevaylerEight implementation: 89189,50 operatio=
ns/second (2 threads)</li></ul></div><div><br></div><div>These microbenchma=
rks are, especially when the consistency checks kicks in, very garbage coll=
ection dependent. I had to set the=C2=A0TransactionTestCheckConsistency to =
NO, because replaying more the 1.000.000 transactions into the prevalent sy=
stem would still be running... Ran the benchmark with=C2=A0<span style=3D"c=
olor:rgb(0,0,0);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,=
&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sa=
ns Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-heig=
ht:17.8048000335693px;white-space:pre-wrap;background-color:rgb(238,238,238=
)">-verbose:gc</span>=C2=A0and saw after an hour that every 10 deserialized=
 transactions a full GC.=C2=A0</div><div><br></div><div>So, I had to lower =
the round duration from 20 to 2 seconds. This change makes the results even=
 more dependent on the gc, jit, et al. But, now some results are shown. See=
 console output at [0] and [1]. Query runs and JDBC runs are switched off.<=
/div><div><br></div><div>Next time, I&#39;ll integrate Caliper[3] to show m=
ore details.=C2=A0</div><div><br></div><div>Cheers,</div><div>Christian</di=
v><div><br></div><div>[0] PrevaylerEight.java <a href=3D"https://gist.githu=
b.com/sormuras/3fea6f6ade327b2a4249">https://gist.github.com/sormuras/3fea6=
f6ade327b2a4249</a></div><div>[1] Result PrevaylerImpl=C2=A0<a href=3D"http=
s://gist.github.com/sormuras/ef279705d5838a757964">https://gist.github.com/=
sormuras/ef279705d5838a757964</a></div><div>[2] Result PrevaylerEight=C2=A0=
<a href=3D"https://gist.github.com/sormuras/6f61c6af2066d5f8bf87">https://g=
ist.github.com/sormuras/6f61c6af2066d5f8bf87</a></div><div>[3] Caliper <a h=
ref=3D"https://code.google.com/p/caliper/">https://code.google.com/p/calipe=
r/</a></div></div>

--001a113435dcf6b3250505877ecd--


--===============5075471002783550281==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
--===============5075471002783550281==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org

--===============5075471002783550281==--