5 ms·
With their "synchronize-local-clocks" approach, it doesn't. They are using Lamport's algorithm to synchronize the clocks. However, Lamport's approach creates a
by mfukar 10y ago
With their "synchronize-local-clocks" approach, it doesn't.
They are using Lamport's algorithm to synchronize the clocks. However, Lamport's approach creates a _partial_ ordering, and to make that a _total_ ordering you need some mechanism to break "ties". For instance, the PID, or whatever.
The catch is that the relationship derived from this arbitrary tie-breaking mechanism has nothing to do with causality, and therefore the total order it imposes is only an artifact of the mechanism chosen.
Finding a tie-breaking mechanism that corresponds to the sending events is, in Lamport's own words, "not trivial".
- tomegun 10y agoIndeed that is how we break ties (not exactly the PID, but you get the idea). The reason this works is that the only time we can have a tie is if there can be no causality between the events. I.e., the two sending events happen concurrently: the two ioctl calls overlap in time, so there would be no way for one to have caused the other. What problem do you see with this?
- mfukar 10y agoI foresee a problem where people confuse the wording of "total order on all messages" in the wiki to mean there is a "global total order" - in other words, that bus1 solves distributed systems and we can all go home - and building buggy systems on this assumption. I'm not saying the concept is flawed or the implementation buggy, or anything like that. PS. Neil Brown in the LWN article already conflates "global" and "total" order.
- jasonwatkinspdx 10y agoI'd suggest reading the hybrid logical clocks paper.
- mfukar 10y agoI have - I'm actually working with it on a multi-version IPC provider (totally unrelated to bus1 & friends). Is it relevant here? I know they're the latest and greatest, but they're not without problems either.
- jasonwatkinspdx 10y agoBased on your comments about lamport clocks, etc, I thought you'd find it interesting.
- mfukar 10y agoIt is indeed. Cool applications too. I remember at least GUN - a graph db engine - uses them to great effect, and its author hangs out here, iirc.