# memtis **Repository Path**: second2none/memtis ## Basic Information - **Project Name**: memtis - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-29 - **Last Updated**: 2025-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MEMTIS: Efficient Memory Tiering with Dynamic Page Classification and Page Size Determination ## System configuration * Fedora 33 server * Two 20-core Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz * 6 x 16GB DRAM per socket * 6 x 128GB Intel Optane DC Persistent Memory per socket MEMTIS currently supports two system configurations * DRAM + Intel DCPMM (used only single socket) * local DRAM + remote DRAM (used two socket, CXL emulation mode) ## Source code information See linux/ You have to enable CONFIG\_HTMM when compiling the linux source. ``` make menuconfig ... CONFIG_HTMM=y ... ``` ### Dependencies There are nothing special libraries for MEMTIS itself. (You just need to install libraries for Linux compilation.) ## For experiments ### Userspace scripts See memtis-userspace/ Please read memtis-userspace/README.md for detailed explanations ### Setting tiered memory systems with Intel DCPMM * Reconfigures a namespace with devdax mode ``` sudo ndctl create-namespace -f -e namespace0.0 --mode=devdax ... ``` * Reconfigures a dax device with system-ram mode (KMEM DAX) ``` sudo daxctl reconfigure-device dax0.0 --mode=system-ram ... ``` ### Preparing benchmarks We used open-sourced benchmarks except SPECCPU2017. We provided links to each benchmark source in memtis-userspace/bench\_dir/README.md ### Running benchmarks It is necessary to create/update a simple script for each benchmark. If you want to execute *XSBench*, for instance, you have to create memtis-userspace/bench\_cmds/XSBench.sh. This is a sample. ``` # memtis-userspace/bench_cmds/XSBench.sh BIN=/path/to/benchmark BENCH_RUN="${BIN}/XSBench [Options]" # Provide the DRAM size for each memory configuration setting. # You must first check the resident set size of a benchmark. if [[ "x${NVM_RATIO}" == "x1:16" ]]; then BENCH_DRAM="3850MB" elif [[ "x${NVM_RATIO}" == "x1:8" ]]; then BENCH_DRAM="7200MB" elif [[ "x${NVM_RATIO}" == "x1:2" ]]; then BENCH_DRAM="21800MB" fi # required export BENCH_RUN export BENCH_DRAM ``` #### Test ``` cd memtis-userspace/ # check running options ./scripts/run_bench.sh --help # create an executable binary file make # run sudo ./scripts/run_bench.sh -B ${BENCH} -R ${MEM_CONFIG} -V ${TEST_NAME} ## or use scripts sudo ./run-fig5-6-10.sh sudo ./run-fig7.sh ... ``` #### Tips for setting other tiered memory systems See memtis-userspace/README.md ## Commit number used for artifact evaluation 174ca88 ## License Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. ## Bibtex To be updated ## Authors - Taehyung Lee (Sungkyunkwan University, SKKU) , - Sumit Kumar Monga (Virginia Tech) - Changwoo Min (Virginia Tech) - Young Ik Eom (Sungkyunkwan University, SKKU)