Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ideas #1

Open
LouisJenkinsCS opened this issue Dec 2, 2017 · 3 comments
Open

Ideas #1

LouisJenkinsCS opened this issue Dec 2, 2017 · 3 comments

Comments

@LouisJenkinsCS
Copy link
Owner

Global Descriptor Table

Idea:

Given a node n, if n wishes to perform an atomic operation on an object o, it must first 'register' with a descriptor. For n to register o, it must first remove from its local bag, bag, a 64-bit descriptor d. If d does not exist, we allocate N new descriptors, insert N-1 into the bag, and keep the Nth descriptor. For n to unregister o, it merely needs to insert the retired descriptor into the bag.

When performing an atomic operation on o, we use d in its place. The descriptor d is a distinct index into the global DistVector, vec, where vec[d] = o.

Rationale:

The distributed bag has been proven to scale extremely well, even at a single node. We may eliminate any excess communication by allocating descriptors in bulk, and using them individually. We also gain the advantage of increased parallelism in that each task can just attempt to remove from the bag, which indeed has been proven to scale extremely well. The fact that descriptors are 64-bit means that they can be used in network atomic operations, which prove to be significantly faster than remote-execution atomic operations. The DistVector provides linearizability across all nodes, ensuring that descriptors are always valid.

@LouisJenkinsCS
Copy link
Owner Author

image

@LouisJenkinsCS
Copy link
Owner Author

image

@LouisJenkinsCS
Copy link
Owner Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant