Getting an intuition for how different consistency models behave can be difficult,
so I am working on some random little sandboxes to play around with different models.
If a system is both cache consistent and PRAM consistent, then it is also processor consistent, meaning all writes from a single process are seen
in the same order by all process, and all writes to the same location are seen in the same order by all processes.
Another weaker model than causal consistency is Cache Consistency. In order for a system to be Cache Consistent,
every process must see every write to the same object in the same sequential order.
The weakest model of consistency for shared memory is local consistency, which requires only that a process
observe its own operations in program order, and places no restrictions on how a process sees the operations
performed by any other process.
A weaker model than causal consistency is PRAM Consistency. In order for a system to be PRAM consistent,
each process must see its own operations in program order, and operations from a single source must be seen in the order
they were issued.
In a sequentially consistent distributed system, all processes observe all write operations in some common order.
A causally consistent system has a slightly weaker guarantee - only causally related writes must be observed in a common order,
and processes can disagree on the order of causally unrelated events.
A distributed system that meets the condition “the result of any execution is the same as if the operations of all processers were executed
in some sequential order, and the operations of each individual process appear in this sequence in the order specified by its program” is said
to be Sequentially consistent.
A year or so ago, in my lab’s reading group we read the famous power of two choices in randomized load balancing paper, and it gave me an awful idea - what if we applied a similar idea to games? As a very quick explanation, for the task of load balancing requests - basically, you have a bunch of servers handling things for you like fetching emails, and you want to spread out the work evenly - a common approach is to just pick a random server and send the next request there.
Despite the delay, I am still working on my AI/robot game thing.
A while ago I added what I said would be my next steps, but never
posted about it. So I’m doing that now.