[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2006-03-08 (20:44) |
From: | Brian Hurt <bhurt@s...> |
Subject: | Re: [Caml-list] STM support in OCaml |
On Wed, 8 Mar 2006, William Lovas wrote: > As the quoted paper said, though, some running transaction can always > commit -- so not all of the associated costs are still paid. In > particular, the cost of potential non-termination due to deadlock or > livelock is not paid. It doesn't matter that there's a mutex under the > hood, since it's used only in such a way as to preserve the property that > some transaction can always complete. One comment I will make is that a mutex is expensive, but not *that* expensive. I just wrote a quick program (available if anyone cares) in GNU C that measures the cost, in clocks, of locking and unlocking a posix mutex. On my desktop box (AMD Athlon XP 2200+ 1.8GHz), I'm getting a cost of like 44 clock cycles. Which makes it less expensive than an L2 cache miss. At this point correctness is a much bigger concern of mine than absolute performance. A fair bit of conservative or unnecessary locking is acceptable, given than I can write a complicated and highly scalable application and know that I don't have deadlocks or livelocks. Not having race conditions would also be nice, but I don't think that's possible with mutable data. Brian