CN107479828A - 一种提高固态硬盘吞吐量性能的方法 - Google Patents
一种提高固态硬盘吞吐量性能的方法 Download PDFInfo
- Publication number
- CN107479828A CN107479828A CN201710639855.2A CN201710639855A CN107479828A CN 107479828 A CN107479828 A CN 107479828A CN 201710639855 A CN201710639855 A CN 201710639855A CN 107479828 A CN107479828 A CN 107479828A
- Authority
- CN
- China
- Prior art keywords
- solid state
- hard disc
- state hard
- queue
- user space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种提高固态硬盘吞吐量性能的方法,包括步骤如下:(1)判断固态硬盘接口的类型,如果固态硬盘是SATA接口或者SAS接口,进入步骤(2);如果固态硬盘是PCIe接口,进入步骤(3);(2)增加队列数目和每个队列的队列深度,建立用户态存储驱动、用户态TCP/IP协议栈,采用用户态定时轮询模式实时查询固态硬盘的状态寄存器,进行必要的I/O操作;(3)去除IO调度层,将精简化的NVMe协议直接挂在所述上层接口层,由PCIe总线驱动实现固态硬盘发现和维护;经仿真验证,本发明可有效提升固态盘吞吐量,较传统IO协议栈吞吐量可提升20%以上。
Description
技术领域
本发明涉及一种提高固态硬盘吞吐量性能的方法,属于数据存储性能领域。
背景技术
以前主流的存储***都是以单一的机械盘为主,受限于机械盘结构和机械工艺的特点,存储***的性能很低。由于SSD硬盘具有功耗低、体积小、重量轻和抗震动等优势,SSD硬盘的使用场景十分广泛。但是SSD硬盘的价格昂贵,且容易损坏,所以从节约成本的角度出发,全闪存存储阵列尚没有完全应用起来。因此,为了追求大容量、高性能和低成本,基于混合介质的磁盘阵列得到工业界和学术界的广泛关注。
研究表明,将SSD固态盘作为基于混合介质的磁盘阵列的Cache,能够有效提高整体磁盘阵列的性能。SSD固态盘包括SAS/SATA和PCIe三种接口类型。基于PCIe的高效存储设备,采用更加精简的协议栈,非常轻量级,表达简单,底层使用PCIe进行传输,其性能以绝对优势超过了 SAS/SATA接口的高效存储设备。选用基于PCIe的高效存储设备作二级缓存,能有效提升整个混合存储介质阵列的吞吐量,减小延时。
对于固态盘的IO处理流程如图1所示:顶部是***调用接口,处理用户空间调用到内核中合适的目的地的路由(例如open、read或write)。虚拟文件***层(VFS)是内核中支持的大多数文件***的抽象层,它负责将请求路由到合适的文件***。虚拟文件***层定义磁盘上的目录组织结构,如dentry和inode等数据结构。大多数文件***都通过缓冲区缓存相互通信,该缓存通过缓存最近使用的数据来优化对物理设备的访问。块设备层一方面实现数据的存取,包括请求队列、I/O 调度策略和换入换出等概念,一方面实现LVM、raid和多路径驱动的设备映射。设备驱动层直接管理存储设备的数据存取,SCSI子***即属于块设备驱动器之一。
对于高速存储设备而言,传统I/O协议栈存在以下问题:对于一次IO请求,需要经过VFS层、 Block层、SCSI层,其中SCSI层又包括上层驱动设备层、SCSI核心层和底层驱动设备层,其会引起CPU内存频繁交换从而产生长延时;Block层队列只有一个,会导致多线程IO排队等待,从而出现阻塞;SCSI协议层需要支持多种设备,协议栈繁重;队列深度不够,对于较快的底层存储设备,会因为缺少IO请求等待。
发明内容
针对现有技术的不足,本发明提供了一种提高固态硬盘吞吐量性能的方法;
本发明重新设计固态硬盘IO协议栈,提高固态硬盘吞吐量性能。
术语解释:
1、固态硬盘吞吐量:指单位时间内可以成功传输的数据数量,即硬盘写入加上读出的数据的大小。
2、队列深度:描述每个磁盘同时激活的最大的I/O值。例如,在配置中,每个LUN有4个磁盘,如果你的队列深度定义为16,那么整个***同时拥有的最大的I/O数为64(4个磁盘* 每个磁盘16最大I/O值);队列深度是一台设备上承载命令队列中的命令数量。队列深度就是数字越大代表要处理的任务数越多,可以同时并发;
3、队列,是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行***操作,和栈一样,队列是一种操作受限制的线性表。进行***操作的端称为队尾,进行删除操作的端称为队头。
本发明的技术方案为:
一种提高固态硬盘吞吐量性能的方法,包括步骤如下:
(1)判断固态硬盘接口的类型,如果固态硬盘是SATA接口或者SAS接口,进入步骤(2);如果固态硬盘是PCIe接口,进入步骤(3);
(2)为了更高效地使用SAS接口/SATA接口的固态盘,对传统的IO协议栈进行优化,增加队列数目和每个队列的队列深度,减少IO阻塞或等待。建立用户态存储驱动、用户态TCP/IP协议栈,减少用户态和内核态的数据拷贝、避免上下文切换、减少锁的使用,提高驱动效率。采用用户态定时轮询模式实时查询固态硬盘的状态寄存器,了解设备的状态,从而进行必要的I/O操作,使得包和数据块被立即分发;避免中断方式造成的***开销及资源耗费,减少等待时间。
(3)为了更高效地使用PCIe接口的固态盘,采用精简化的NVMe协议发挥其最佳性能。去除IO调度层,将精简化的NVMe协议直接挂在所述上层接口层,由PCIe总线驱动实现固态硬盘发现和维护;从而缩短IO处理路径以提升IO处理速度;
根据本发明优选的,所述步骤(2),增加队列数目至CPU核心数,例如,CPU核心为8,则队列增加至8,每个队列的队列深度扩展至N,N为固态硬盘可处理的队列长度与扩展后队列数目的比值。例如,每个队列的队列深度扩展至256(固态盘可处理的队列长度)/8(扩展后队列数目) =32;
根据本发明优选的,所述步骤(2),采用Intel SPDK(Storage PerformanceDevelopment Kit) 建立用户态存储驱动、用户态TCP/IP协议栈。
根据本发明优选的,不同于传统IO协议栈中的多种指令集,所述精简化的NVMe协议层采用一组指令且定长;最大初始化队列为64K个;每个队列深度最大设置为64K。
综上,本发明对传统IO协议栈进行改造,优化固态盘的使用环境,发挥其最高性能。首先,采用并行IO思想,对传统的IO协议栈进行优化,通过增加队列和队列深度减少IO阻塞或等待。其次,采用用户态思想重新设计存储驱动和TCP/IP协议栈,减少用户态和内核态的数据拷贝、避免上下文切换、减少锁的使用,提高驱动效率。然后,采用用户态定时轮询模式代替中断模式,使得包和数据块被立即分发,减少等待时间。经仿真验证,本发明的技术方案可有效提升固态盘吞吐量,较传统IO协议栈吞吐量可提升20%以上。
本发明的有益效果为:
1、通过增加队列和队列深度减少IO阻塞或等待。
2、采用用户态存储驱动和TCP/IP协议栈,减少用户态和内核态的数据拷贝、避免上下文切换、减少锁的使用,提高驱动效率。
3、采用用户态定时轮询模式代替中断模式,使得包和数据块被立即分发,减少固态盘IO等待时间。
4、采用精简化的NVMe协议,去掉块层的IO调度从而简化IO处理路径,提升性能。
附图说明
图1为传统的SATA接口、SAS接口或PCIe接口的固定硬盘的协议栈结构框图;
图2为实施例SATA接口或SAS接口的固定硬盘的协议栈结构框图;
图3为实施例PCIe接口的固定硬盘的协议栈结构框图;
图4为实施例SATA接口或SAS接口的固定硬盘与传统的SATA接口或SAS接口的固定硬盘读取吞吐量的提升示意图;
图5为实施例PCIe接口的固定硬盘与传统的PCIe接口的固定硬盘读取吞吐量的提升示意图;
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例
一种提高固态硬盘吞吐量性能的方法,包括步骤如下:
(1)判断固态硬盘接口的类型,如果固态硬盘是SATA接口或者SAS接口,进入步骤(2);如果固态硬盘是PCIe接口,进入步骤(3);
(2)为了更高效地使用SAS接口/SATA接口的固态盘,对传统的IO协议栈进行优化,增加队列数目和每个队列的队列深度,CPU核心为8,则队列增加至8,每个队列的队列深度扩展32,256 (固态盘可处理的队列长度)/8(扩展后队列数目)=32;减少IO阻塞或等待。
采用Intel SPDK(Storage Performance Development Kit)建立用户态存储驱动、用户态TCP/IP 协议栈,减少用户态和内核态的数据拷贝、避免上下文切换、减少锁的使用,提高驱动效率。
采用用户态定时轮询模式实时查询固态硬盘的状态寄存器,了解设备的状态,从而进行必要的 I/O操作,使得包和数据块被立即分发;避免中断方式造成的***开销及资源耗费,减少等待时间。如图2所示;
(3)为了更高效地使用PCIe接口的固态盘,采用精简化的NVMe协议发挥其最佳性能。去除IO调度层,将精简化的NVMe协议直接挂在所述上层接口层,由PCIe总线驱动实现固态硬盘发现和维护;从而缩短IO处理路径以提升IO处理速度;精简化的NVMe协议层采用一组指令且定长;最大初始化队列为64K个;每个队列深度最大设置为64K。如图3所示。
本实施例对传统IO协议栈进行改造,优化固态盘的使用环境,发挥其最高性能。首先,采用并行IO思想,对传统的IO协议栈进行优化,通过增加队列和队列深度减少IO阻塞或等待。其次,采用用户态思想重新设计存储驱动和TCP/IP协议栈,减少用户态和内核态的数据拷贝、避免上下文切换、减少锁的使用,提高驱动效率。然后,采用用户态定时轮询模式代替中断模式,使得包和数据块被立即分发,减少等待时间。经仿真验证,本发明的技术方案可有效提升固态盘吞吐量,较传统IO协议栈吞吐量可提升20%以上,如图4、图5所示。
本实施例SATA/SAS接口的固定硬盘的协议栈与传统SATA/SAS接口的固定硬盘的协议栈、本实施例PCIe接口的固定硬盘的协议栈与传统PCIe接口的固定硬盘的协议栈吞吐量数据如表1 所示,
表1
吞吐量(单位:MBps) | |
传统的SATA/SAS接口的固定硬盘的协议栈 | 200 |
本实施例SATA/SAS接口的固定硬盘的协议栈 | 250 |
传统的PCIe接口的固定硬盘的协议栈 | 1200 |
本实施例PCIe接口的固定硬盘的协议栈 | 1500 |
由表1可得,相对于传统的SATA/SAS接口的固定硬盘的协议栈的吞吐量,本实施例SATA/SAS 接口的固定硬盘的协议栈吞吐量增加了25%;相对于传统的PCIe接口的固定硬盘的协议栈的吞吐量,本实施例PCIe接口的固定硬盘的协议栈吞吐量增加了25%。
Claims (4)
1.一种提高固态硬盘吞吐量性能的方法,其特征在于,包括步骤如下:
(1)判断固态硬盘接口的类型,如果固态硬盘是SATA接口或者SAS接口,进入步骤(2);如果固态硬盘是PCIe接口,进入步骤(3);
(2)增加队列数目和每个队列的队列深度,建立用户态存储驱动、用户态TCP/IP协议栈,采用用户态定时轮询模式实时查询固态硬盘的状态寄存器,进行I/O操作,使得包和数据块被立即分发;
(3)去除IO调度层,将精简化的NVMe协议直接挂在所述上层接口层,由PCIe总线驱动实现固态硬盘发现和维护。
2.根据权利要求1所述的一种提高固态硬盘吞吐量性能的方法,其特征在于,所述步骤(2),增加队列数目至CPU核心数,每个队列的队列深度扩展至N,N为固态硬盘可处理的队列长度与扩展后队列数目的比值。
3.根据权利要求1所述的一种提高固态硬盘吞吐量性能的方法,其特征在于,所述步骤(2),采用Intel SPDK建立用户态存储驱动、用户态TCP/IP协议栈。
4.根据权利要求1-3任一所述的一种提高固态硬盘吞吐量性能的方法,其特征在于,所述精简化的NVMe协议层采用一组指令且定长;最大初始化队列为64K个;每个队列深度最大设置为64K。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710639855.2A CN107479828A (zh) | 2017-07-31 | 2017-07-31 | 一种提高固态硬盘吞吐量性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710639855.2A CN107479828A (zh) | 2017-07-31 | 2017-07-31 | 一种提高固态硬盘吞吐量性能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107479828A true CN107479828A (zh) | 2017-12-15 |
Family
ID=60597377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710639855.2A Pending CN107479828A (zh) | 2017-07-31 | 2017-07-31 | 一种提高固态硬盘吞吐量性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107479828A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274550A (zh) * | 2018-09-07 | 2019-01-25 | 电信科学技术第五研究所有限公司 | 一种iSCSI自适应IO队列深度匹配方法 |
CN110618834A (zh) * | 2019-09-05 | 2019-12-27 | 苏州浪潮智能科技有限公司 | I/o栈请求响应方法、***和i/o栈请求响应控制方法及*** |
CN113821393A (zh) * | 2021-09-26 | 2021-12-21 | 储鹤 | 一种NVMe固态硬盘测试模块及测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478483A (zh) * | 2009-01-08 | 2009-07-08 | 中国人民解放军信息工程大学 | 交换设备内实现分组调度的方法及交换设备 |
CN104202359A (zh) * | 2014-08-12 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于刀片服务器的NVMe SSD虚拟化设计方法 |
CN105446456A (zh) * | 2014-09-22 | 2016-03-30 | Hgst荷兰公司 | 具有性能感知功率封顶的数据存储设备 |
CN205986931U (zh) * | 2016-04-01 | 2017-02-22 | 浪潮集团有限公司 | 一种基于NVMe SSD的交换机 |
-
2017
- 2017-07-31 CN CN201710639855.2A patent/CN107479828A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478483A (zh) * | 2009-01-08 | 2009-07-08 | 中国人民解放军信息工程大学 | 交换设备内实现分组调度的方法及交换设备 |
CN104202359A (zh) * | 2014-08-12 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于刀片服务器的NVMe SSD虚拟化设计方法 |
CN105446456A (zh) * | 2014-09-22 | 2016-03-30 | Hgst荷兰公司 | 具有性能感知功率封顶的数据存储设备 |
CN205986931U (zh) * | 2016-04-01 | 2017-02-22 | 浪潮集团有限公司 | 一种基于NVMe SSD的交换机 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274550A (zh) * | 2018-09-07 | 2019-01-25 | 电信科学技术第五研究所有限公司 | 一种iSCSI自适应IO队列深度匹配方法 |
CN110618834A (zh) * | 2019-09-05 | 2019-12-27 | 苏州浪潮智能科技有限公司 | I/o栈请求响应方法、***和i/o栈请求响应控制方法及*** |
CN110618834B (zh) * | 2019-09-05 | 2021-10-15 | 苏州浪潮智能科技有限公司 | I/o栈请求响应方法、***和i/o栈请求响应控制方法及*** |
CN113821393A (zh) * | 2021-09-26 | 2021-12-21 | 储鹤 | 一种NVMe固态硬盘测试模块及测试方法 |
CN113821393B (zh) * | 2021-09-26 | 2024-01-23 | 储鹤 | 一种NVMe固态硬盘测试模块及测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9229653B2 (en) | Write spike performance enhancement in hybrid storage systems | |
TWI783369B (zh) | 準揮發性系統級記憶體 | |
US10860477B2 (en) | Apparatus and method for low power low latency high capacity storage class memory | |
Park et al. | Exploiting internal parallelism of flash-based SSDs | |
KR101628929B1 (ko) | 다이렉트 액세스를 갖는 다중-레벨 메모리 | |
US7555599B2 (en) | System and method of mirrored RAID array write management | |
CN103425602B (zh) | 一种闪存存储设备数据读写的方法、装置及主机*** | |
CN110515859B (zh) | 一种固态硬盘读写请求并行处理方法 | |
Park et al. | A high performance controller for NAND flash-based solid state disk (NSSD) | |
EP2361404B1 (en) | Method and system for queuing transfers of multiple non-contiguous address ranges with a single command | |
Dunn et al. | A new I/O scheduler for solid state devices | |
CN107885456A (zh) | 减少io命令访问nvm的冲突 | |
CN107479828A (zh) | 一种提高固态硬盘吞吐量性能的方法 | |
US8060669B2 (en) | Memory controller with automatic command processing unit and memory system including the same | |
TWI514142B (zh) | 儲存系統及其控制方法 | |
Mao et al. | Exploiting request characteristics and internal parallelism to improve SSD performance | |
CN109240603A (zh) | 全闪存服务器 | |
CN101859234B (zh) | 存储阵列中使用镜像高速缓存卷来减小驱动开销的*** | |
CN101034375A (zh) | 计算机存储*** | |
CN109144908A (zh) | 一种基于级联Expander的数据存储***及方法 | |
CN106325974A (zh) | 一种虚拟化io性能优化方法及*** | |
CN102053929A (zh) | 一种基于Linux***DM层的IO缓存操作方法和*** | |
Shihab et al. | Gpudrive: Reconsidering storage accesses for gpu acceleration | |
CN113760796A (zh) | 一种基于hbm缓存的ssd固态盘 | |
CN109783000A (zh) | 一种数据处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171215 |