{"id":21629655,"url":"https://github.com/sfu-dis/pibench-ep2","last_synced_at":"2025-04-11T13:51:19.017Z","repository":{"id":43651875,"uuid":"397047089","full_name":"sfu-dis/pibench-ep2","owner":"sfu-dis","description":"Benchmarking new Optane PMem-based persistent memory range indexes (VLDB 2022)","archived":false,"fork":false,"pushed_at":"2022-11-15T03:58:33.000Z","size":5649,"stargazers_count":20,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T10:04:32.488Z","etag":null,"topics":["btrees","index","nvm","persistent-memory","pibench","pmem","tries"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sfu-dis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-17T01:37:32.000Z","updated_at":"2024-06-21T05:54:19.000Z","dependencies_parsed_at":"2023-01-23T01:46:05.433Z","dependency_job_id":null,"html_url":"https://github.com/sfu-dis/pibench-ep2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfu-dis%2Fpibench-ep2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfu-dis%2Fpibench-ep2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfu-dis%2Fpibench-ep2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfu-dis%2Fpibench-ep2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sfu-dis","download_url":"https://codeload.github.com/sfu-dis/pibench-ep2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248411945,"owners_count":21099031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["btrees","index","nvm","persistent-memory","pibench","pmem","tries"],"created_at":"2024-11-25T02:08:18.377Z","updated_at":"2025-04-11T13:51:18.987Z","avatar_url":"https://github.com/sfu-dis.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Benchmarking New Persistent Memory Range Indexes\n\nHere hosts resources for benchmarking newly proposed persistent memory range indexes on Pibench, including benchmark, wrapper generation and results parse scripts (generate_wrappers.sh, benchmark.py, parse.py). Also contains source code of five PM indexes + two DRAM index (see below).\n\nSee detailed analysis in our [VLDB 2022 paper](https://www.cs.sfu.ca/~tzwang/pibench-ep2.pdf):\n```\nYuliang He, Duo Lu, Kaisong Huang, Tianzheng Wang.\nEvaluating Persistent Memory Range Indexes: Part Two.\nPVLDB 15(11), 2022.\n```\n\n# Clone repo and submodule\n```\ngit clone https://github.com/sfu-dis/pibench-ep2.git\ncd pibench-ep2\ngit submodule update --init --recursive\n```\n\n# Dependencies\n* CMake with VERSION \u003e= 3.14 (pip install cmake --upgrade)\n* glibc with VERSION \u003e= 2.34\n* [PiBench](https://github.com/sfu-dis/pibench.git): for running all benchmarks. Will be automatically cloned and built if run benchmark.py\n* [PMDK](https://pmem.io/pmdk/): required by most indexes for persistent memory management.\n* HTM(TSX support) needs to be turned on for FPTree and LB+-Tree. See FPTree `README` for details.\n\n\n# Building index wrappers for PiBench\nTo generate pibench wrappers for selected indexes:\n```\nsudo ./generate_wrappers.sh \n```\n\nor\n\nThe `README` in each index directory contains instructions for building each individual PiBench wrapper:\n\n\n# Benchmarking script\nThe benchmark script will clone and built pibench for you if it is not found in current folder.\n\nRun it under default settings (Warning! This could take hours to finish!):\n```\nsudo ./benchmark.py\n```\n\nor if wish to run selected experiments for selected indexes with customized parameters:\n\nTune variables in the script:\n```\nrepeat - # runs for each data point (default 1)\n\nbase_size - size of base index before benchmark (default 100M)\n\nseconds - # seconds of operation after load phase (default 10) \n\npibench_path - path to PiBench executable (default pibench/build/src/PiBench)\n\nlib_dir - path to PiBench wrappers (default wrappers/)\n\nresult_dir - path to folder that stores benchmark results (default ./results)\n\npool_path - location to place PMem pool (default \"\" means PMem pool will be created in current dir)\n\n```\n\nThere are 6 types of supported experiments, Choose type of experiment and configuations by modifying variables between line 57 ~ 86:\n```\nUniform/Skewed/Mixed/Latency/NUMA/VarKey - Specify selected experiments for selected indexes (by default all experiments are selected with all supported indexes)\n\n*_threads - Specify threads for each experiment (default [40,30...1])\n\n*_ops - operation types (default all supported types are included)\n\nself_similar - skew factor for Skewed experiment (default 0.2)\n\nsampling - percentage of samples collected for Latency experiment (default 0.1)\n\n```\n\n\n# Parse experiment results\nBy default the experiment results should be saved in ./results folder.\n\nTo generate .csv files for all experiments:\n```\n./parse.py\n```\n\nor\n\nmodify script to generate .csv for specific experiment (see line 294 and beyond)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfu-dis%2Fpibench-ep2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsfu-dis%2Fpibench-ep2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfu-dis%2Fpibench-ep2/lists"}