RAMCloud 0.2
RAMCloud 0.2 Wrap-up (Jan 7 meeting)
- Implement conditional operations for Diego's Filesystem
- Figure out a performance demo
- Ideas:
- Graph walks (Ryan)
- Website-simulation using traces, e.g. wikipedia (Christos)
- Social network graph using Facebook (mendel), NetFlix (Diego), something Jure does (Christos)
- Ideas:
RAMCloud 0.2
- Tables
Enough of this is done to have a sane interface for now. Don't waste much time on it, since table management is a future design issue. -Diego
- Variable sized objects
- Backup
- Indexes
- Reliable networking
- 1 copy
- Key -> Obj lookup
Probably Punted
- Variable sized tables
- Recovery
- Multiple masters
- Cleaning
Design Issues
- Object storage format
struct chunk_header { uint64_t checksum; uint64_t magic; uint64_t key; struct chunk_entry entries[0]; }; struct chunk_entry { uint64_t length; uint64_t index_id; char data[0]; };
- Indexes
- Key -> Object Lookup
- Reliable networking
- Buffer management
src/config.h.tmpl:31:#define MAX_RPC_LEN 2048 src/config.h.tmpl:33:#define RC_NUM_TABLES 256 src/config.h.tmpl:42:#define MAX_DATA_WRITE_LEN 16384 src/config.h.tmpl:45:#define HASH_NLINES 16384 src/shared/object.h:61: char padding[1024]; src/client/client.c:41:enum { ERROR_MSG_LEN = 256 }; src/server/index.h:86: assert(key.len < 256); src/server/server.cc:520: char keys_buf[1024]; src/server/server.cc:521: uint64_t oids_buf[1024 / sizeof(uint64_t)]; src/server/index.cc:53: char buf[100]; src/server/hashtable.h:22:#define NBUCKETS 5000 src/server/hashtable.cc:68: const size_t maxmem = 1 * 1024 * 1024 * 1024; src/server/server.h:75: if (index_id == 65535) { src/server/server.h:181: Index *indexes[65536]; bindings/python/ramcloud.py:275: buf = ctypes.create_string_buffer(65536) bindings/python/ramcloud.py:277: idx_buf = ctypes.create_string_buffer(65536) bindings/python/ramcloud.py:425: keys = ctypes.create_string_buffer(256 * limit) bindings/haskell/RAMCloud.hs:75: where max = 4096