CN107479828A - 一种提高固态硬盘吞吐量性能的方法 - Google Patents

一种提高固态硬盘吞吐量性能的方法 Download PDF

Info

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
Application number
CN201710639855.2A
Other languages
English (en)
Inventor
吴登勇
李萌
张磊
孙超
李丽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Chaoyue Numerical Control Electronics Co Ltd
Original Assignee
Shandong Chaoyue Numerical Control Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Chaoyue Numerical Control Electronics Co Ltd filed Critical Shandong Chaoyue Numerical Control Electronics Co Ltd
Priority to CN201710639855.2A priority Critical patent/CN107479828A/zh
Publication of CN107479828A publication Critical patent/CN107479828A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid 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。
CN201710639855.2A 2017-07-31 2017-07-31 一种提高固态硬盘吞吐量性能的方法 Pending CN107479828A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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的交换机

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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