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)
RAMCloud 0.2
Tables
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