Scalability of transient Prevayler
Christian Stein <[email protected]> Fri, 24 Oct 2014 21:54:22 +0200
| Newsgroups | gmane.comp.java.prevayler |
|---|---|
| Message-ID | <CAJi8+g4M=pbSHs8cXHvM-_Kwp2ck12aHmsx5KCKHHVbXr9JvWA@mail.gmail.com> |
--===============2272258114604342599==
Content-Type: multipart/alternative; boundary=001a11c39fd21bc17e0506308cc0
--001a11c39fd21bc17e0506308cc0
Content-Type: text/plain; charset=UTF-8
Hallo!
What do you expect, when you switch the default Prevayler implementation
into *transient mode*, skip deep copies (and turn disk sync off, just in
case)? Here is the snippet from
PrevaylerTransactionSubject#initializePrevayler()
factory = new PrevaylerFactory<>();
factory.configurePrevalentSystem(new TransactionSystem());
factory.configurePrevalenceDirectory(_journalDirectory);
factory.configureJournalSerializer("journal", ...);
factory.configureTransientMode(true);
factory.configureTransactionDeepCopy(false);
factory.configureJournalDiskSync(false);
prevayler = factory.create(); // No snapshot is generated.
I expected well performing and according to my hardware (4 cores, 8 logical
processors) scaling numbers. But I got this:
Each round will take approx. 20 seconds to run...
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 20.564
Operations total: 912580
--------- Round Result: 44377,55 operations/second (1 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 20.376
Operations total: 997549
--------- Round Result: 4170,05 operations/second (2 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 21.299
Operations total: 1009875
--------- Round Result: 578,71 operations/second (3 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 23.175
Operations total: 1011376
--------- Round Result: 64,77 operations/second (4 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 33.357
Operations total: 1011385
--------- Round Result: 0,27 operations/second (5 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 54.35
Operations total: 1011416
--------- Round Result: 0,57 operations/second (6 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 52.195
Operations total: 1011437
--------- Round Result: 0,40 operations/second (7 threads)
Memory used : 1758986240
Disk space used : 0
Seconds ellapsed: 65.352
Operations total: 1011464
--------- Round Result: 0,41 operations/second (8 threads)
----------- BEST ROUND: 44377,55 operations/second (1 threads)
...so, if the persisting task takes virtually no time, the benchmark is
acting not as I expected. This actually could explain why the P8 test runs
are producing such low throughput results.
Cheers,
Christian
--001a11c39fd21bc17e0506308cc0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hallo!<div><br></div><div>What do you expect, when you swi=
tch the default Prevayler implementation into <b>transient mode</b>, skip d=
eep copies (and turn disk sync off, just in case)? Here is the snippet from=
=C2=A0<font face=3D"courier new, monospace">PrevaylerTransactionSubject#ini=
tializePrevayler()</font></div><div><br></div><div><div><font face=3D"couri=
er new, monospace">factory =3D new PrevaylerFactory<>();</font></div>=
<div><font face=3D"courier new, monospace">factory.configurePrevalentSystem=
(new TransactionSystem());</font></div><div><font face=3D"courier new, mono=
space">factory.configurePrevalenceDirectory(_journalDirectory);</font></div=
><div><font face=3D"courier new, monospace">factory.configureJournalSeriali=
zer("journal", ...);</font></div><div><font face=3D"courier new, =
monospace">factory.configureTransientMode(true);</font></div><div><font fac=
e=3D"courier new, monospace">factory.configureTransactionDeepCopy(false);</=
font></div><div><font face=3D"courier new, monospace">factory.configureJour=
nalDiskSync(false);</font></div><div><font face=3D"courier new, monospace">=
prevayler =3D factory.create(); // No snapshot is generated.</font></div></=
div><div><br></div><div>I expected well performing and according to my hard=
ware (4 cores, 8 logical processors) scaling numbers. But I got this:</div>=
<div><br></div><div><div>Each round will take approx. 20 seconds to run...<=
/div><div><br></div><div>Memory used =C2=A0 =C2=A0 : 1758986240</div><div>D=
isk space used : 0</div><div>Seconds ellapsed: 20.564</div><div>Operations =
total: 912580</div><div>--------- Round Result: 44377,55 operations/second =
(1 threads)</div><div><br></div><div>Memory used =C2=A0 =C2=A0 : 1758986240=
</div><div>Disk space used : 0</div><div>Seconds ellapsed: 20.376</div><div=
>Operations total: 997549</div><div>--------- Round Result: 4170,05 operati=
ons/second (2 threads)</div><div><br></div><div>Memory used =C2=A0 =C2=A0 :=
1758986240</div><div>Disk space used : 0</div><div>Seconds ellapsed: 21.29=
9</div><div>Operations total: 1009875</div><div>--------- Round Result: 578=
,71 operations/second (3 threads)</div><div><br></div><div>Memory used =C2=
=A0 =C2=A0 : 1758986240</div><div>Disk space used : 0</div><div>Seconds ell=
apsed: 23.175</div><div>Operations total: 1011376</div><div>--------- Round=
Result: 64,77 operations/second (4 threads)</div><div><br></div><div>Memor=
y used =C2=A0 =C2=A0 : 1758986240</div><div>Disk space used : 0</div><div>S=
econds ellapsed: 33.357</div><div>Operations total: 1011385</div><div>-----=
---- Round Result: 0,27 operations/second (5 threads)</div><div><br></div><=
div>Memory used =C2=A0 =C2=A0 : 1758986240</div><div>Disk space used : 0</d=
iv><div>Seconds ellapsed: 54.35</div><div>Operations total: 1011416</div><d=
iv>--------- Round Result: 0,57 operations/second (6 threads)</div><div><br=
></div><div>Memory used =C2=A0 =C2=A0 : 1758986240</div><div>Disk space use=
d : 0</div><div>Seconds ellapsed: 52.195</div><div>Operations total: 101143=
7</div><div>--------- Round Result: 0,40 operations/second (7 threads)</div=
><div><br></div><div>Memory used =C2=A0 =C2=A0 : 1758986240</div><div>Disk =
space used : 0</div><div>Seconds ellapsed: 65.352</div><div>Operations tota=
l: 1011464</div><div>--------- Round Result: 0,41 operations/second (8 thre=
ads)</div><div><br></div><div>----------- BEST ROUND: 44377,55 operations/s=
econd (1 threads)</div></div><div><br></div><div><br></div><div>...so, if t=
he persisting task takes virtually no time, the benchmark is acting not as =
I expected. This actually could explain why the P8 test runs are producing =
such low throughput results.</div><div><br></div><div>Cheers,</div><div>Chr=
istian</div></div>
--001a11c39fd21bc17e0506308cc0--
--===============2272258114604342599==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
------------------------------------------------------------------------------
--===============2272258114604342599==
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
--===============2272258114604342599==--