![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/522bf34a3f14d27b4ba1e8ff4143337d.png)
作者简介
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/59ad7657aa60135b2388333f0837b876.png)
喻津,Intel软件工程师, 主要从事SPDK软件开发工作。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/f61486096cf8702d90d8e5a6565b12f3.png)
导读
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/ab9e9f78fe50cb8babad458fb9ee7984.png)
随着SPDK集成应用的日益广泛,我们希望可以通过解读spdk/example/nvme/perf这个应用,让大家进一步熟悉SPDK用户态驱动的主要工作流程和方式,以及SPDK是如何实现高性能的服务。
什么是SPDK
Storage Performance Development Kit (SPDK)提供了一组用于编写高性能、可伸缩、用户态存储应用程序的工具和库。SPDK的基础是用户态、轮询、异步、无锁 NVMe 驱动。这提供了从用户空间应用程序直接访问SSD的零拷贝、高度并行的访问。
Perf Case的解析
Perf是SPDK用来测试NVMe SSD 性能的工具,它的代码在spdk/example/nvme/perf路径下。Perf主要用来测试NVMe SSD的IOPS, Bandwidth和Latency,它既可以测本地的target,也可以测远端的target,本文解析主要以本地target为主。
perf代码实现的框架如图1所示。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/fc9ba1f27faaaedc4697b5677a537130.jpeg)
图 1 perf实现的结构图