[DGD] Hydra
bart at wotf.org
bart at wotf.org
Tue Aug 21 14:20:55 CEST 2018
As an aside, the Linux amd64 archive on the hydra download site has a .zip
extension, but it is a tar.gz file.
Bart.
On Mon, 20 Aug 2018 00:18:53 +0200, Felix A. Croes wrote
> Today I released Hydra version 1.3.12.
>
> I have been working on DGD since 1992, and on Hydra since 2002. Although
> DGD muds peaked around 2005, I think there is still a case for LPC
> as a programming language, for error handling with atomic functions,
> for the event-driven model (it has been fun to watch the node.js
> folks rediscover old LPmud wisdom), and for object-oriented database
> management systems. So I continued developing DGD as a hobby after
> it stopped being my day job.
>
> Hydra was born from the realisation that DGD's event-driven tasks
> could be parallelized: let multiple tasks run concurrently on copies
> of objects, and when they finish, commit the changes when the objects
> have not been modified by any other task in the meanwhile; otherwise,
> lob off a Hydra's head (discard the task's changes) and let it grow
> back (reschedule the task to try again).
>
> What makes this especially interesting is that to the LPC developer,
> the concurrent execution of tasks is invisible, and it appears that tasks
> are still run in sequence because the commits are serial. The
> complex machinery of parallelization is hidden from view.
>
> Of course, the machinery of parallelization was not hidden from my view.
> Developing Hydra has been a very time-consuming hobby. For the past
> two years, I have been working on optimizing the locking
> architecture, culminating in today's release. The multiple CPU,
> multi-core future that I expected in 2002 has definitely arrived.
> Hydra is well suited to take advantage of the modern multi-core CPU
architecture.
>
> Not on all CPUs, however. As far as Hydra is concerned, hyper-threading
> is a mis-feature. Any type of feature sharing between hardware threads
> or cores is likely detrimental. Other features, such as "turbo boost"
> (increasing single-core performance when no other cores are in use)
> complicate measuring the benefits of multi-core execution
> accurately. Furthermore, Hydra has been hard hit by this year's
> speculative execution bugs. The mitigations for Meltdown, Spectre
> et al slow it down considerably.
>
> Additionally, Hydra does not perform equally well on all operating systems.
> I have been using macOS as my main development system; unfortunately,
> Hydra scales abysmally on macOS. I have run some tests on a 2008-
> era dual CPU system with a total of 8 cores, which thankfully lacks
> hyper-threading and a host of other features that modern CPUs are
> often blessed with. I see that Hydra scales well on Windows 10 and
> Solaris 10, but when using 4 or more threads dedicated to running
> LPC tasks, Linux is slightly faster. Interestingly, with fewer than
> 4 threads dedicated to LPC tasks, Linux is much faster than other
> operating systems I tested. Overall, I see best performance on
> Linux kernels without speculative execution bug mitigations.
>
> Since testing on a 10 year old system is hardly definitive, I want
> to ask for volunteers to test Hydra on such modern systems as they
> have available. The test should be run on bare hardware. Running it
> virtualized slows down Hydra a lot, and is also likely to have a
> large impact on other VMs running on the same hardware.
>
> The test itself is simple. Download Hydra from
>
> http://download.dworkin.nl/hydra/
>
> and the test from
>
> http://download.dworkin.nl/hydra/benchmarks/bm002.zip
>
> Edit test.dgd from bm002 to let the base directory point to wherever
> you put bm002/src, and run Hydra specifying the number of threads dedicated
> to LPC tasks, for example:
>
> hydra-1.3.12 -1 test.dgd > test-1
> hydra-1.3.12 -2 test.dgd > test-2
> hydra-1.3.12 -4 test.dgd > test-4
>
> Then post the results, plus CPU information (/proc/cpuinfo on Linux)
> to the mailing list.
>
> Test results for more than 4 cores are especially interesting.
> Hydra runs more threads internally than are used for LPC, and you
> should leave some room for the other OS tasks, so tests up to the
> number of cores minus two are meaningful. If your system has
> hyperthreading, divide the number of "cores" reported in
> /proc/cpuinfo by Linux by 2.
>
> The benchmark is synthetic and does not test Hydra's true
> performance; rather, it attempts to measure the performance of
> Hydra's locking architecture.
>
> Regards,
> Felix Croes
> ____________________________________________
> https://mail.dworkin.nl/mailman/listinfo/dgd
--
https://www.bartsplace.net/
https://wotf.org/
https://www.flickr.com/photos/mrobjective/
More information about the DGD
mailing list