项目简介
本项目基于C语言和内核模块技术搭建,旨在模拟非易失性内存(NVM)的行为,并提供工具与函数来测量和分析内存访问性能。通过拦截和模拟内存访问操作,能帮助开发者在非真实硬件环境下测试和优化内存访问模式,从而提升系统性能。
项目的主要特性和功能
- 内存模拟:拦截并模拟内存访问操作,实现非易失性内存模拟,方便无实际硬件时测试和优化内存访问模式。
- 性能分析:提供工具和函数,可测量带宽、延迟和内存访问模式等内存访问性能指标。
- 多线程支持:支持多线程环境下的并发内存访问模拟和性能分析,便于优化多线程程序的内存访问模式。
- 内核模块技术:借助Linux内核模块技术,在内核级别进行内存模拟和性能分析,获取更准确详细的性能数据。
- 灵活性:设计灵活,可按需定制和扩展,以适应不同应用场景和测试需求。
安装使用步骤
模拟运行步骤
- 从模拟器源代码根文件夹执行
sudo scripts/setupdev.sh load
加载模拟器内核模块。 - 可使用
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
命令设置处理器以最大频率运行,确保固定周期率;也可用scripts/runenv.sh
脚本代替手动配置。 - 设置
LD_PRELOAD
和NVMEMUL_INI
环境变量,分别指向模拟器库和要使用的配置文件。若Linux内核版本为4.0或更高,需执行echo 2 | sudo tee /sys/devices/cpu/rdpmc
以恢复旧的rdpmc
行为。 - 使用
scripts/runenv.sh <your_app>
运行应用程序,其中<your_app>
是通过指令g++ /home/zpw/HME - Quartz - broadwell - master/ndgraph/update.cpp -fopenmp
生成的a.out
文件。 - 执行
sudo./a.out <数据集>
得到所需结果,边表形式数据集即可读取。
不模拟运行步骤
跳过前三步,直接使用 g++
编译,然后执行 sudo./a.out <数据集>
得到结果。
注意:本项目基于内核模块技术,可能需要特定权限和配置才能正确运行,具体步骤需根据实际需求和系统环境调整。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】