#define GIB(x) (x * 1024 * 1024 * 1024ull) #define GB(x) (x * 1000 * 1000 * 1000ull) #define KEY_SIZE 10 #define VALUE_SIZE 246 // 118 // 90 #define INDEX_SIZE 5 #define BLOCK_SIZE 4096 // 4000 // Need not be equal to physical block size #define IDX_BLOCK_SIZE 3990 // REVIEW: 4095?? This is to that index records algin perfectly. #define READ_BUFFER_SIZE GIB(10) // GB(10) // RUNs are equal to READ buffer size #define M_READ_BUFFER_SIZE 629145600 // 2516582400 // GB(3) // NOTE: If RUN size is smaller than limit just set buffer to sum of runs #define WRITE_BUFFER_SIZE GIB(10) // GB(10) // Used in merge phase #define READ_SIZE 1 // in BLOCK_SIZE #define WRITE_SIZE 1 //////////////////////////////////////////////////////////////////// #define RECORD_SIZE (KEY_SIZE + VALUE_SIZE) #define REC_PER_BLOCK (BLOCK_SIZE / RECORD_SIZE) #define READ_BUFFER_COUNT (READ_BUFFER_SIZE / BLOCK_SIZE) #define WRITE_BUFFER_COUNT (WRITE_BUFFER_SIZE / BLOCK_SIZE) #define REC_PER_WRITE_BUFFER ((WRITE_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE) // Not required. #define REC_PER_READ_BUFFER ((READ_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE) //// Index #define IDX_RECORD_SIZE (KEY_SIZE + INDEX_SIZE) #define IDX_REC_PER_BLK (IDX_BLOCK_SIZE / IDX_RECORD_SIZE)