NodeID, request_size,NodeID,request_size.....
A granted request in one in which all nodes respond with message agreeing to a single request at the agreed position, than that request is granted. The memory is granted linearly from the heap pointer, using up space.
The algorithm, more or less:
for any node given a new request:
- If the request includes a previous request for this node, then mark than sender as in agreement.
- If the node have already processed all elements of the request already, then ignore it.
- If the node has a conflict, their position in the request has been altered, then flip a cone. Heads you accept the new position, tails you respond by swapping positions, in the message.
- If you want to add a new request, then append your request and resend, if you agree then resend.
Resend to all outgoing links. I am thinking that I get a queue being passed around, and by sequentially agreeing o request, the queue slowly gets processed as grants requested. Kind of like passing around an unsecure binary tree, each node pruning the tree as they find agreement on open spaces in arg list heap. The 'block chain' in this case, it a nested graph of available space, rather disorganized as space is released and acquired. All the nodes need to agree on what that tree looks like. In the degenerated case of a single node the snippet defaults to a local shared memory manager.
A node on the memory tree contains a n index into args heap, and a size, completely defining the gap. As request float around, every node should receive one agreement or rejection or alternative from every other node for every request. Thus each node knows when consensus has been reached on any gap in the tree, and the trees remain aligned. It is a lot like block chain except all the nodes are enterprise nodes, and as miners are trusted or data manager is fired.
No comments:
Post a Comment