CN106681660B - Io调度方法及io调度装置 - Google Patents

Io调度方法及io调度装置 Download PDF

Info

Publication number
CN106681660B
CN106681660B CN201611171204.7A CN201611171204A CN106681660B CN 106681660 B CN106681660 B CN 106681660B CN 201611171204 A CN201611171204 A CN 201611171204A CN 106681660 B CN106681660 B CN 106681660B
Authority
CN
China
Prior art keywords
request
scheduling
solid state
mapping table
state disk
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.)
Active
Application number
CN201611171204.7A
Other languages
English (en)
Other versions
CN106681660A (zh
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.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology 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 Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201611171204.7A priority Critical patent/CN106681660B/zh
Publication of CN106681660A publication Critical patent/CN106681660A/zh
Application granted granted Critical
Publication of CN106681660B publication Critical patent/CN106681660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/0656Data buffering arrangements
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及计算机存储计算技术领域,尤其涉及一种IO调度方法及IO调度装置。本发明提供一种IO调度方法,所述的IO调度方法结合固态硬盘地址映射的特点和垃圾回收的特点进行映射;本发明还提供一种IO调度装置,包括:应用模块、IO调度模块和IO操作模块,其中IO操作模块,用于判断固态硬盘的地址映射表是否存在缓存中以及判断所要进行操作的物理数据块是否在进行垃圾回收操作,若是,则根据IO调度队列的优先级,选择IO操作并下发到固态硬盘进行处理。本发明解决了固态硬盘写操作需要先擦除后再写入、写操作次数受限等问题,同时结合固态硬盘特点,优化IO栈。

Description

IO调度方法及IO调度装置
技术领域
本发明涉及计算机存储计算技术领域,尤其涉及一种IO调度方法及IO调度装置。
背景技术
随着互联网、云计算、物联网等技术的发展,固态硬盘作为新的一代存储,被广泛应用。目前调度算法主要有两类,一、先进先出服务FIFO;二、电梯算法,也即就近原则进行服务。传统的IO调度方式主要结合机械硬盘的寻址特点采用电梯算法实现,简单利用电梯算法不能充分发挥固态硬盘SSD的特性进行处理。而且,由于缓存的存在,改变了IO的处理逻辑,引入了新的问题,比如IO冲突几率大大增加,需要进行解决。现有技术中,对于存储系统的企业而言,尤其是使用固态硬盘缓存处理过程中,如何高效地、合理地对进行IO调度,从而提高存储系统的读写速度是个很难解决的问题。
而固态硬盘相对于机械硬盘,其随机性能接近顺序性能,电梯算法调试方式优势消失。同时固态硬盘也具有自已特点,如:写操作要先擦除后写入、写操作次数受限等。因此,固态硬盘需要新的调度算法。
发明内容
为了便于理解,对本申请文件中出现的部分词语,澄清如下:
所述轮询,是指依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
鉴于背景技术存在的技术问题,本方法提供了一种解决固态硬盘写操作需要先擦除后再写入、写操作次数受限等问题,同时结合固态硬盘特点,优化IO栈的IO调度方法及IO调度装置。
为了达到上述目的,本发明是通过以下技术方案实现的:
本发明提供一种IO调度方法,包括:
缓存中,通过IO调度将IO请求形成IO调度队列;
判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中:若是则进行下一步;否则将IO请求放回IO调度队列;
判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作:若是则将IO请求放回IO调度队列;否则将IO请求进行IO操作。
其中,通过IO调度将IO请求形成IO调度队列之前,还包括:
记录IO请求进入IO调度队列的时间,进入时间达到预设值的IO请求将被强制进行IO操作。
其中,通过IO调度将IO请求形成IO调度队列,包括:
在缓存中,以预设值为单位组织IO请求;
将IO请求进行IO调度;
将IO请求形成IO调度队列。
其中,判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中之前,还包括:
在缓存中,建立固态硬盘的地址映射表。
进一步地,所述IO调度队列包括有多个不同优先级的子队列,根据优先级周期性地对IO调度队列中的IO请求进行IO操作。
进一步地,还包括:判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中,若否,则将该IO请求的待操作固态硬盘的物理地址存入临时地址映射表,每个周期后,将临时地址映射表并入地址映射表。
本发明提供一种IO调度装置,包括:
应用模块,用于组织IO请求,并将IO请求发送给IO调度模块;
地址映射表创建模块,用于在缓存中建立固态硬盘的地址映射表;
IO调度模块,用于接收IO请求,将IO请求加入到IO调度队列中,调度队列包括多个不同优先级的子队列;
IO操作模块,用于根据IO调度队列的优先级,选择IO请求并下发到固态硬盘进行处理;
第一判断模块,用于判断IO请求的待操作固态硬盘的物理地址的是否在地址映射表中;
第二判断模块,判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作。
优选地,还包括:
时间检测模块,用于记录IO请求进入IO调度队列的时间。
优选地,还包括:
轮询模块,用于根据子队列的优先级对IO调度队列进行周期性操作。
进一步地,还包括:
临时地址映射表创建模块,用于创建临时地址映射表,所述临时地址映射表用于暂存未被操作的IO请求的待操作固态硬盘的物理地址,每个周期后,将临时地址映射表并入地址映射表。
本发明所提供的一种IO调度方法,有益效果如下:
1.本发明结合固态硬盘的特点,通过判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中;判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作,使固态硬盘的IO调度过程具有缓存感知、垃圾回收感知的功能,解决了固态硬盘写操作需要先擦除后再写入、写操作次数受限等问题,提高固态硬盘的读写速度,从一定方面也提高了固态硬盘的使用寿命;
2.本发明设有时间检测模块,在IO进行队列之前,记录IO的操作时间,系统通过时间检测模块检测IO队列中是否有IO操作达到最长的等待时间,如果达到最长等待时间,IO将被强制处理,避免了某些IO长时间没有处理的情况,提高提高固态硬盘的读写效率;
本发明所提供的IO调度装置与IO调度方法的有益效果类似,不再赘述。
附图说明:
图1为本发明实施例所提供的IO调度方法的流程示意图;
图2为本发明实施例所提供的IO调度装置的模块示意图;
具体实施方式:
依照附图详细说明关于本发明的示例性实施例。
本发明提供一种IO调度方法,包括:
缓存中,通过IO调度将IO请求形成IO调度队列;
判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中:若是则进行下一步;否则将IO请求放回IO调度队列;
判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作:若是则将IO请求放回IO调度队列;否则将IO请求进行IO操作。
请参考图1,图1为本发明实施例所提供的IO调度方法的流程示意图;本实施例提供一种IO调度方法,结合固态硬盘地址映射的特点和垃圾回收的特点进行映射,包括以下步骤:
S101、缓存中,通过IO调度将IO请求形成IO调度队列;
其中,具体步骤为:
在缓存中,以预设值为单位组织IO请求,在本实施例中,以页为单位进行组织IO请求,页的大小为4K;
作为一种可实施方式,预设值还可以设置为2K、8K、16K、32K等。
将IO请求进行IO调度;
将IO请求形成IO调度队列。
所述IO调度队列包括有多个不同优先级的子队列,在本实施例中,IO调度队列是一个多子队列数据结构,每个子队列具有不同的优先级。每个子队列的IO数目相等,均等于QueueMax。当一个子队列(N)的IO请求数达到最大值时,将从子队列链表底部抽取IO请求移到前一个子队列。
作为一种可实施方式,所述IO调度队列还可以包括一个数组,数组的长度为优先级的个数,设置序号为0为最高调度优先级。数组的每个元素包括一个链表指针,该指针用于指向属于该优先级的IO请求。另外还可以采用链表、树等其他数据结果进行存储。
作为另一种可实施方式,所述数组元素还可以保存当前是否有IO请求需要处理的信息。除此之外,所述数据元素还可以保存与应用属性、固态盘属性相关的信息。
根据优先级周期性地对IO调度队列中的IO请求进行IO操作,在本实施例中, IO操作模块从优先级最高的队列进行处理,当一个队列处理完成之后即进行休眠状态;当时间片轮转到之后,继续上述处理,直至队列中所有的操作均被请求完成。其中,时间片轮转是分时操作系统任务调度机制。在完成指定的任务后,可以将系统转入休眠状态,当达到预设的时间或者达到调度条件后,可以继续执行。
在步骤S101进行的同时,记录IO请求进入IO调度队列的时间,进入时间达到预设值的IO请求将被强制进行IO操作。在本实施例中,通过一个时间检测模块记录IO请求进入IO调度队列的时间。
作为一种可实施方式,系统通过deadline检测模块检测IO队列中是否有IO操作达到最长的等待时间Qmax,如果达到最长等待时间,IO将被强制处理。所述deadline检测模块,通过系统的Timer机制实现检测程序定时运行。当运行器达到预设的时间如1秒种,就激发检测程序检测IO队列中IO请求等待时长,当检测到等待时间达到Qmax时,将被处理。该模块检测完成所有的IO请求后,创建新的定时器。
S102、在缓存中,建立固态硬盘的地址映射表。固态硬盘的地址映射表的换入换出由驱动实现的,即驱动程序根据一定的规则将存储的固态硬盘的映射表调入内存中,本发明所涉及的机制将优先处理映射表在缓存中的IO请求。
S103、判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中:若是则进行下一步;否则将IO请求放回IO调度队列;
作为一种可实施方式,驱动程序可以提供API用以检查其映射表(Mapping Cache)是否在缓存中
作为另一种可实施方式,判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中,若否,则将该IO请求的待操作固态硬盘的物理地址存入临时地址映射表,每个周期后,将临时地址映射表并入地址映射表。
S104、判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作:若是则将IO请求放回IO调度队列;否则将IO请求进行IO操作。
本发明提供一种IO调度装置,包括:
应用模块,用于组织IO请求,并将IO请求发送给IO调度模块;
地址映射表创建模块,用于在缓存中建立固态硬盘的地址映射表;
IO调度模块,用于接收IO请求,将IO请求加入到IO调度队列中,调度队列包括多个不同优先级的子队列;
IO操作模块,用于根据IO调度队列的优先级,选择IO请求并下发到固态硬盘进行处理;
第一判断模块,用于判断IO请求的待操作固态硬盘的物理地址的是否在地址映射表中;
第二判断模块,判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作。
请参考图2,图2为本发明实施例所提供的IO调度装置的模块示意图;本实施例提供一种IO调度装置,包括:
应用模块201,用于组织IO请求,并将IO请求发送给IO调度模块;
地址映射表创建模块206,用于在缓存中建立固态硬盘的地址映射表;
IO调度模块202,用于接收IO请求,将IO请求加入到IO调度队列中,调度队列包括多个不同优先级的子队列;
IO操作模块203,用于根据IO调度队列的优先级,选择IO请求并下发到固态硬盘进行处理;
第一判断模块204,用于判断IO请求的待操作固态硬盘的物理地址的是否在地址映射表中;
第二判断模块205,判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作。
优选地,还包括:
时间检测模块207,用于记录IO请求进入IO调度队列的时间。
优选地,还包括:
轮询模块208,用于根据子队列的优先级对IO调度队列进行轮询。
进一步地,还包括:
临时地址映射表创建模块209,用于创建临时地址映射表,所述临时地址映射表用于暂存未被操作的IO请求的待操作固态硬盘的物理地址,每个轮询周期后,将临时地址映射表并入地址映射表。
以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围,任何本领域的技术人员在不脱离本发明构思和原则的前提下所做出的等同变化与修改,均应属于本发明保护的范围。

Claims (4)

1.一种IO调度方法,其特征在于,包括:
缓存中,将IO请求形成IO调度队列;
判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中:若是,进行下一步;否,将IO请求放回IO调度队列;
判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作:若是,将IO请求放回IO调度队列;否,将IO请求进行IO操作;
通过IO调度将IO请求形成IO调度队列之前,还包括:记录IO请求进入IO调度队列的时间,进入时间达到预设值的IO请求将被强制进行IO操作;
判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中,若否,则将该IO请求的待操作固态硬盘的物理地址存入临时地址映射表,每个周期后,将临时地址映射表并入地址映射表;
其中,所述IO调度队列包括有多个不同优先级的子队列,根据优先级周期性地对IO调度队列中的IO请求进行IO操作;
所述IO调度队列还包括一个数组,数组的长度为优先级的个数,数组的每个元素包括一个链表指针,该指针用于指向属于该优先级的IO请求。
2.根据权利要求1所述的IO调度方法,其特征在于,通过IO调度将IO请求形成IO调度队列,包括:
在缓存中,以预设值为单位组织IO请求;
将IO请求传递到IO调度模块;
IO调度模块接收到IO请求后将IO请求形成IO调度队列。
3.根据权利要求1所述的IO调度方法,其特征在于,判断IO请求的待操作固态硬盘的物理地址是否在地址映射表中之前,还包括:
在缓存中,建立固态硬盘的地址映射表。
4.一种采用权利要求1所述的IO调度方法的IO调度装置,其特征在于,包括:
应用模块,用于组织IO请求,并将IO请求发送给IO调度模块;
地址映射表创建模块,用于在缓存中建立固态硬盘的地址映射表;
IO调度模块,用于接收IO请求,将IO请求加入到IO调度队列中,调度队列包括多个不同优先级的子队列,以及一个数组,数组的长度为优先级的个数,数组的每个元素包括一个链表指针,该指针用于指向属于该优先级的IO请求;
IO操作模块,用于根据IO调度队列的优先级,选择IO请求并下发到固态硬盘进行处理;
第一判断模块,用于判断IO请求的待操作固态硬盘的物理地址的是否在地址映射表中;
第二判断模块,判断IO请求的待操作固态硬盘是否正在进行垃圾回收操作;
时间检测模块,用于记录IO请求进入IO调度队列的时间;
轮询模块,用于根据子队列的优先级对IO调度队列进行周期性操作;
临时地址映射表创建模块,用于创建临时地址映射表,所述临时地址映射表用于暂存未被操作的IO请求的待操作固态硬盘的物理地址,每个轮询周期后,将临时地址映射表并入地址映射表。
CN201611171204.7A 2016-12-17 2016-12-17 Io调度方法及io调度装置 Active CN106681660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611171204.7A CN106681660B (zh) 2016-12-17 2016-12-17 Io调度方法及io调度装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611171204.7A CN106681660B (zh) 2016-12-17 2016-12-17 Io调度方法及io调度装置

Publications (2)

Publication Number Publication Date
CN106681660A CN106681660A (zh) 2017-05-17
CN106681660B true CN106681660B (zh) 2020-02-07

Family

ID=58869959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611171204.7A Active CN106681660B (zh) 2016-12-17 2016-12-17 Io调度方法及io调度装置

Country Status (1)

Country Link
CN (1) CN106681660B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368263A (zh) * 2017-07-25 2017-11-21 郑州云海信息技术有限公司 一种固态硬盘中优先权调度的方法和系统
US11126546B2 (en) 2017-10-09 2021-09-21 Huawei Technologies Co., Ltd. Garbage data scrubbing method, and device
CN109726151B (zh) * 2017-10-27 2022-11-08 伊姆西Ip控股有限责任公司 用于管理输入输出栈的方法、设备和介质
CN107728953B (zh) * 2017-11-03 2021-03-02 记忆科技(深圳)有限公司 一种提升固态硬盘混合读写性能的方法
CN109240941B (zh) * 2018-09-21 2021-12-03 郑州云海信息技术有限公司 一种存储系统的垃圾回收方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2211263A2 (en) * 2009-01-23 2010-07-28 Infortrend Technology, Inc. Storage subsystem and storage system architecture performing storage virtualization and method thereof
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN103777905A (zh) * 2014-02-14 2014-05-07 华中科技大学 一种软件定义的固态盘融合存储方法
CN105549910A (zh) * 2015-12-14 2016-05-04 浪潮(北京)电子信息产业有限公司 一种io调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2211263A2 (en) * 2009-01-23 2010-07-28 Infortrend Technology, Inc. Storage subsystem and storage system architecture performing storage virtualization and method thereof
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN103777905A (zh) * 2014-02-14 2014-05-07 华中科技大学 一种软件定义的固态盘融合存储方法
CN105549910A (zh) * 2015-12-14 2016-05-04 浪潮(北京)电子信息产业有限公司 一种io调度方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"GC-RAIS:一种基于垃圾回收感知的固态盘阵列";吴素贞等;《计算机研究与发展》;20130115;第60-68页 *

Also Published As

Publication number Publication date
CN106681660A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
CN106681660B (zh) Io调度方法及io调度装置
US11669277B2 (en) Latency-based scheduling of command processing in data storage devices
US11487437B2 (en) Priority-based data movement
US8832333B2 (en) Memory system and data transfer method
US10203881B2 (en) Optimized execution of interleaved write operations in solid state drives
US20150253992A1 (en) Memory system and control method
CN104866428B (zh) 数据存取方法和数据存取装置
KR101663066B1 (ko) 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐
US20100312973A1 (en) Methods for controlling host memory access with memory devices and systems
RU2012150102A (ru) Применение косвенных адресных слов данных расширенной схемы асинхронного перемещения данных
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
KR101687762B1 (ko) 저장 장치 및 그것의 커맨드 스케줄링 방법
US20150149741A1 (en) Storage System and Control Method Thereof
CN113625973B (zh) 数据写入方法、装置、电子设备及计算机可读存储介质
US10067683B2 (en) Systems and methods for classifying data in solid state drives
CN110750372B (zh) 基于共享内存的日志系统及日志管理方法
CN114138200B (zh) 一种基于RocksDB的预写日志方法及系统
CN109213423B (zh) 基于地址屏障无锁处理并发io命令
KR101481898B1 (ko) Ssd의 명령어 큐 스케줄링 장치 및 방법
CN105765540A (zh) 管理用于非易失性存储器的传输缓冲器
CN108334457B (zh) 一种io处理方法及装置
US20210389904A1 (en) Computer program product and method and apparatus for scheduling execution of host commands
CN112767978B (zh) 一种ddr命令调度方法、装置、设备及介质
CN109213424B (zh) 并发io命令的无锁处理方法
CN110658999A (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
GR01 Patent grant
GR01 Patent grant