A logical clock is a mechanism for capturing chronological and causal relationships in a distributed system.
Often, distributed systems may have no physically synchronous global clock.
In many applications (such as distributed GNU make), if two processes never interact, the lack of synchronization is unobservable and in these applications it is enough for the processes to agree on the event ordering (i.e., logical clock) rather than the wall-clock time.
A special protocol is used to update logical local time after each local event, and logical global time when processes exchange data.
[2] Logical clocks are useful in computation analysis, distributed algorithm design, individual event tracking, and exploring computational progress.