[Haskell-cafe] ANNOUNCE: greg-client - a scalable distributed logger with a high-precision global time axis

Eugene Kirpichov ekirpichov at gmail.com
Mon Dec 27 13:02:08 CET 2010

Hi cafe,

Let me bring to your attention this package developed by me and Dmitry Astapov:


It is a Haskell binding to the "greg" logger (
http://code.google.com/p/greg , http://github.com/jkff/greg - "global
registrator" ).

You can read the project's description and motivation at the homepage
http://code.google.com/p/greg , but here are some highlights:

 * It's designed for debugging lattency bottlenecks or synchronization
issues in distributed systems. I've been using it on small and large
clusters, Dmitry has been using it for debugging haskell-mpi if I'm
correct (Dmitry, can you elaborate a bit?).

 * It's a client/server logger - you launch a server and clients log
messages to it
 * It provides a high-precision global time axis by computing clock
offset between server and each client (this allows to register events
with their occurence timestamps, not arrival-to-server timestamps)
 * It's very fast (I squeezed 400,000 messages/sec = 20Mb/s out of the
Java binding)
 * It can handle a huge number of clients (a much less scalable
implementation was tested on a 2000-core cluster)
 * It's robust to intermittent deaths of clients, server or the link
between them
 * It's very lightweight - no persistence infrastructure, piles of
config files or whatever - just send him the messages, it will align
them on the global axis and log them to console

I found it especially useful in conjunction with the log visualization
tools described here
http://slideshare.net/jkff/two-visualization-tools .

P.S. How to use it (while hackage hasn't yet rebuilt the docs):

import System.Log.Greg

main = withGregDo defaultConfiguration $ do ....
...logMessage "Something happened"...

Eugene Kirpichov
Senior Software Engineer,
Grid Dynamics http://www.griddynamics.com/

More information about the Haskell-Cafe mailing list