# ssd-sim **Repository Path**: metastonecorp/ssd-sim ## Basic Information - **Project Name**: ssd-sim - **Description**: SSD simulator - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 13 - **Created**: 2024-10-10 - **Last Updated**: 2024-11-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: ssd-simulator, SSD, FTL ## README # ssd-sim #### 介绍 SSD simulator 构建一款开源SSD模拟器软件框架,能够验证给定FTL的功能以及性能等。 1. 支持各类正常、异常SSD业务场景的模拟 2. 支持各类SSD参数的配置 3. 支持在Host或者Target机器上运行 4. 支持功能完整性验证 5. 支持性能统计 作为国内第一款面向产业界应用的开源SSD模拟器软件,ssd-sim将聚焦企业用户的痛点,为企业提供一个能够快速验证自身产品算法的平台。 #### 软件架构 目前的思路如下: 软件整体大致可分为3部分: 1. 可运行的软件模拟器框架本身(ssd-sim) 2. 与框架兼容的FTL输入输出接口定义 3. 实现了上述2中给定接口的FTL软件 目前的期望是,任何FTL软件只要实现了给定的接口,都能被ssd-sim验证。 #### 安装教程 目前仅支持Linux环境。 ##### 1. 准备工作 目前ssd-sim依赖C++11 和“regex”库,在开始下载 ssd-sim 之前,请确保您已安装 gcc/g++ 4.9 或更高版本。 目前ssd-sim采用“cmake”作为其构建系统。请先安装“cmake”版本 3.10 或更高版本。 ##### 2. 下载源码 正确安装“cmake”后,从Gitee克隆ssd-sim。 ``` git clone https://gitee.com/metastonecorp/ssd-sim.git cd ssd-sim git submodule update --init --recursive ``` ##### 3. 构建ssd-sim 安装了必要的先决条件并下载了源代码后,就可以构建 ssd-sim 了。在终端或命令提示符中使用以下命令: ``` mkdir build cd build cmake .. make -j 8 ``` 成功构建后,“ssd-sim”可执行文件将在您当前的工作目录中可用。完成这些步骤后,您现在就可以运行。 有关如何执行模拟器的详细说明,请参阅下面的[使用说明](#使用说明)部分。 #### 使用说明 在执行完上面的构建工作后,您可以使用以下命令开始模拟: ``` ./ssd-sim -r -- ../config/ssd-sim.xml ../config/msctrl.xml output/path ``` ssd-sim 的执行非常简单,因为所有模拟选项都在单独的文件中定义。 第一个文件 (../config/ssd-sim.xml) 定义模拟参数配置。 第二个文件 (../config/msctrl.xml) 定义 SSD 配置。 最后路径(output/path)保存输出的结果,该路径如果不存在则需要提前创建。 运行结束后的日志打印类似如下: ``` *** Statistics of Request Generator *** I/O mode: Async (depth: 32), I/O type: Seq. R/W Mix, blocksize: 4096 bytes Termination mode: I/O size based (size: 16777216 bytes) Tick: 342469038246 Time (ps): 8274219 - 342469038246 (342460764027) (342460.760064 us) I/O (bytes): 16777216 (48990.2 KB/s) I/O (counts): 4096 (Read: 2048, Write: 2048) *** End of statistics *** ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)