diff --git a/concurrent_pmdk/src/btree.h b/concurrent_pmdk/src/btree.h index 1c96854..62a0295 100644 --- a/concurrent_pmdk/src/btree.h +++ b/concurrent_pmdk/src/btree.h @@ -922,9 +922,9 @@ class page { // print a node void print() { if (hdr.leftmost_ptr == NULL) - printf("[%d] leaf %x \n", this->hdr.level, pmemobj_oid(this).off); + printf("[%d] leaf %lx \n", this->hdr.level, pmemobj_oid(this).off); else - printf("[%d] internal %x \n", this->hdr.level, pmemobj_oid(this).off); + printf("[%d] internal %lx \n", this->hdr.level, pmemobj_oid(this).off); printf("last_index: %d\n", hdr.last_index); printf("switch_counter: %d\n", hdr.switch_counter); printf("search direction: "); @@ -934,12 +934,12 @@ class page { printf("<-\n"); if (hdr.leftmost_ptr != NULL) - printf("%x ", hdr.leftmost_ptr); + printf("%lx ", hdr.leftmost_ptr); for (int i = 0; records[i].ptr != NULL; ++i) - printf("%ld,%x ", records[i].key, records[i].ptr); + printf("%ld,%lx ", records[i].key, records[i].ptr); - printf("%x ", hdr.sibling_ptr.oid.off); + printf("%lx ", hdr.sibling_ptr.oid.off); printf("\n"); } @@ -971,7 +971,9 @@ void btree::constructor(PMEMobjpool *pool) { pop = pool; POBJ_NEW(pop, &root, page, NULL, NULL); D_RW(root)->constructor(); + pmemobj_persist(pop, D_RW(root), sizeof(page)); height = 1; + pmemobj_persist(pop, this, sizeof(btree)); } void btree::setNewRoot(TOID(page) new_root) { @@ -997,7 +999,7 @@ char *btree::btree_search(entry_key_t key) { } if (!t) { - printf("NOT FOUND %lu, t = %x\n", key, t); + printf("NOT FOUND %lu, t = %lx\n", key, t); return NULL; } @@ -1124,7 +1126,7 @@ void btree::printAll() { pthread_mutex_lock(&print_mtx); int total_keys = 0; TOID(page) leftmost = root; - printf("root: %x\n", root.oid.off); + printf("root: %lx\n", root.oid.off); if (root.oid.off) { do { TOID(page) sibling = leftmost; diff --git a/single_pmdk/src/btree.h b/single_pmdk/src/btree.h index e198423..a49181b 100644 --- a/single_pmdk/src/btree.h +++ b/single_pmdk/src/btree.h @@ -799,9 +799,9 @@ class page { // print a node void print() { if (hdr.leftmost_ptr == NULL) - printf("[%d] leaf %x \n", this->hdr.level, pmemobj_oid(this).off); + printf("[%d] leaf %lx \n", this->hdr.level, pmemobj_oid(this).off); else - printf("[%d] internal %x \n", this->hdr.level, pmemobj_oid(this).off); + printf("[%d] internal %lx \n", this->hdr.level, pmemobj_oid(this).off); printf("last_index: %d\n", hdr.last_index); printf("switch_counter: %d\n", hdr.switch_counter); printf("search direction: "); @@ -811,12 +811,12 @@ class page { printf("<-\n"); if (hdr.leftmost_ptr != NULL) - printf("%x ", hdr.leftmost_ptr); + printf("%lx ", hdr.leftmost_ptr); for (int i = 0; records[i].ptr != NULL; ++i) - printf("%ld,%x ", records[i].key, records[i].ptr); + printf("%ld,%lx ", records[i].key, records[i].ptr); - printf("%x ", hdr.sibling_ptr.oid.off); + printf("%lx ", hdr.sibling_ptr.oid.off); printf("\n"); } @@ -848,7 +848,9 @@ void btree::constructor(PMEMobjpool *pool) { pop = pool; POBJ_NEW(pop, &root, page, NULL, NULL); D_RW(root)->constructor(); + pmemobj_persist(pop, D_RW(root), sizeof(page)); height = 1; + pmemobj_persist(pop, this, sizeof(btree)); } void btree::setNewRoot(TOID(page) new_root) { @@ -874,7 +876,7 @@ char *btree::btree_search(entry_key_t key) { } if (!t) { - printf("NOT FOUND %lu, t = %x\n", key, t); + printf("NOT FOUND %lu, t = %lx\n", key, t); return NULL; } @@ -995,7 +997,7 @@ void btree::btree_search_range(entry_key_t min, entry_key_t max, void btree::printAll() { int total_keys = 0; TOID(page) leftmost = root; - printf("root: %x\n", root.oid.off); + printf("root: %lx\n", root.oid.off); if (root.oid.off) { do { TOID(page) sibling = leftmost; diff --git a/single_pmdk/src/test.cpp b/single_pmdk/src/test.cpp index 822c0ea..fecea01 100644 --- a/single_pmdk/src/test.cpp +++ b/single_pmdk/src/test.cpp @@ -46,7 +46,6 @@ int main(int argc, char **argv) { } } - int selected = num_data * selection_ratio; // Make or Read persistent pool TOID(btree) bt = TOID_NULL(btree); PMEMobjpool *pop; @@ -65,8 +64,6 @@ int main(int argc, char **argv) { // Reading data entry_key_t *keys = new entry_key_t[num_data]; - entry_key_t *query = new entry_key_t[2000]; - unsigned long *bufs = new unsigned long[num_data]; ifstream ifs; ifs.open(input_path); @@ -77,23 +74,8 @@ int main(int argc, char **argv) { exit(-1); } - for (int i = 0; i < num_data; ++i) { + for (int i = 0; i < num_data; ++i) ifs >> keys[i]; - } - - ifs.close(); - - ifs.open("../workload/number1.txt"); - if (!ifs) { - cout << "query loading error!" << endl; - - delete[] query; - exit(-1); - } - - for (int i = 0; i < 2000; ++i) { - ifs >> query[i]; - } ifs.close(); @@ -110,7 +92,7 @@ int main(int argc, char **argv) { (end.tv_nsec - start.tv_nsec); elapsed_time /= 1000; - printf("INSERT elapsed_time: %ld, Avg: %f\n", elapsed_time, + printf("INSERT elapsed_time: %lld, Avg: %f\n", elapsed_time, (double)elapsed_time / num_data); // D_RW(bt)->printAll(); } @@ -139,36 +121,11 @@ int main(int argc, char **argv) { (end.tv_nsec - start.tv_nsec); elapsed_time /= 1000; - printf("SEARCH elapsed_time: %ld, Avg: %f\n", elapsed_time, + printf("SEARCH elapsed_time: %lld, Avg: %f\n", elapsed_time, (double)elapsed_time / (num_data - Dead)); } - clear_cache(); - - { - clock_gettime(CLOCK_MONOTONIC, &start); - - int k = 1000; - for (int i = 0; i < k; i++) { - if (query[i] + selected < 100000000) - D_RW(bt)->btree_search_range(query[i], query[i] + selected, bufs); - else - k++; - } - - clock_gettime(CLOCK_MONOTONIC, &end); - - long long elapsed_time = (end.tv_sec - start.tv_sec) * 1000000000 + - (end.tv_nsec - start.tv_nsec); - elapsed_time /= 1000; - - printf("Range SEARCH elapsed_time: %ld, Avg: %f\n", elapsed_time, - (double)elapsed_time / num_data); - } - delete[] keys; - delete[] query; - delete[] bufs; pmemobj_close(pop); return 0;