CN106293536B - 输入/输出i/o调度方法及装置 - Google Patents

输入/输出i/o调度方法及装置 Download PDF

Info

Publication number
CN106293536B
CN106293536B CN201610664344.1A CN201610664344A CN106293536B CN 106293536 B CN106293536 B CN 106293536B CN 201610664344 A CN201610664344 A CN 201610664344A CN 106293536 B CN106293536 B CN 106293536B
Authority
CN
China
Prior art keywords
group
label
described group
cache
client
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
CN201610664344.1A
Other languages
English (en)
Other versions
CN106293536A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610664344.1A priority Critical patent/CN106293536B/zh
Publication of CN106293536A publication Critical patent/CN106293536A/zh
Application granted granted Critical
Publication of CN106293536B publication Critical patent/CN106293536B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种输入/输出I/O调度方法及装置,属于计算机技术领域。该方法包括:文件系统接收客户端发送的第一I/O,解析该第一I/O得到组I/O,为该组I/O中的每个I/O设置依赖标记,并识别该组I/O中的第二I/O,为该第二I/O设置来源标记;块层根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据,依赖标记用于标识组I/O中每个I/O之间的依赖关系,解决了在多个I/O之间存在依赖关系时,块层无法按照该依赖关系向存储设备调度该多个I/O,导致块层调度I/O不准确的问题,达到了提高块层调度I/O的准确性的效果。

Description

输入/输出I/O调度方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种输入/输出I/O调度方法及装置。
背景技术
由于文件服务器客户端的处理输入/输出(input/output,I/O)的能力有限,且不同客户端的服务质量(QoS,Quality of Service)可能不同,因此,文件服务器需要根据每个客户端的QoS将该客户端生成的每个外部I/O合理地调度至存储设备进行数据访问,从而既能保证存储设备处理每个客户端生成的外部I/O的开销都能达到该客户端的QoS,又能保证不同的客户端生成的外部I/O间不会争抢处理I/O的资源,其中,开销是指每个外部I/O的处理速率。
目前,文件服务器在块(block)层使用开始时间公平排队(Start-time FairQueuing,SFQ)算法或者加权公平排队(Weighted Fair Queuing,WFQ)算法或者mClock算法,对接收到的每个I/O进行排序,根据排序顺序将所有I/O调度至存储设备进行处理,其中,块层接收到的每个I/O至少包括由文件系统对客户端发送的外部I/O进行解析生成的I/O,外部I/O即文件访问请求。
客户端发送的每个外部I/O在到达块层之上的文件系统时,该文件系统可能根据内部文件机制对该外部I/O进行解析生成了组I/O。文件服务器对所有组I/O按照上述算法对接收到的每个I/O进行排序,根据排序顺序将所有I/O调度至存储设备进行处理,无法保证客户端的组I/O在块层调度的准确性。
发明内容
本发明实施例提供了一种I/O调度方法及装置。
第一方面,提供了一种I/O调度方法,该方法包括:文件系统接收客户端发送的第一I/O;解析第一I/O得到组I/O,为该组I/O中的每个I/O设置依赖标记,并识别该组I/O中的第二I/O,为该组I/O中的第二I/O设置来源标记;块层根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据。其中,依赖标记用于标识组I/O中每个I/O之间的依赖关系,来源标记用于标识组I/O中的所有的第二I/O属于同一个调度域,第二I/O是由第一I/O转化得到的。
在第一方面的调度方法,由文件服务器实现。具体地,文件服务器的中央处理器(Central Processing Unit,CPU)执行文件系统指令,接收客户端发送的第一I/O;解析第一I/O得到组I/O,为该组I/O中的每个I/O设置依赖标记,并识别该组I/O中的第二I/O,为该组I/O中的第二I/O设置来源标记;文件服务器的CPU执行块层指令,根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据。其中,依赖标记用于标识组I/O中每个I/O之间的依赖关系,来源标记用于标识组I/O中的所有的第二I/O属于同一个调度域,第二I/O是由第一I/O转化得到的。
通过文件系统为对第一I/O进行解析得到的组I/O设置依赖标记,将具有该依赖标记的组I/O调度至块层,使得块层可以根据多个I/O之间是否具有相同的依赖标记,确定出多个I/O之间是否存在依赖关系,提高块层调度I/O的准确性的效果。
另外,通过文件系统为组I/O中的第二I/O设置来源标记,使得终端在统计每个I/O的开销时,可以将具有相同来源标记的第二I/O作为同一调度域的开销进行统计,解决了块层只能分别统计每个I/O的开销,或者,只能统计所有I/O的开销,无法统计每个调度域的I/O的开销的问题,达到了明确每个调度域的I/O的开销的效果。
结合第一方面,在第一方面的第一种实现中,调度域用于表示组I/O中的第二I/O来自同一客户端。
结合第一方面,在第一方面的第二种实现中,调度域用于表示组I/O中的第二I/O来自同一个文件。
结合第一方面,在第一方面的第三种实现中,文件系统接收客户端发送的第一I/O,具体包括:操作系统接收客户端发送的第一I/O,将第一I/O发送到高速缓存(cache);cache将第一I/O发送至文件系统。
可选的,操作系统在接收到第一I/O时,会为该第一I/O设置来源标记,文件系统接收到具有来源标记的第一I/O后,为对该第一I/O进行解析得到的组I/O设置与该来源标记相同的来源标记,从而保证每个I/O对应的调度域的准确性。
当第一I/O为读I/O,且cache包括该读I/O读取的数据时,cache会将该数据返回给操作系统,并统计该来源标记对应的调度域的开销。
通过cache统计读I/O具有的来源标记对应的调度域的开销,使得终端不仅可以在块层统计每个I/O的开销,还会考虑到第一I/O直接从cache返回的情况,统计这些第一I/O的开销,将这些第一I/O的开销加入到对应的客户端的开销中,解决了终端只在块层统计每个I/O的开销,导致终端统计I/O的开销不准确的问题,提高了终端统计每个I/O的开销的准确性。
结合第一方面的第三种实现,在第一方面的第四种实现中,当第一I/O为刷盘I/O或非直接写I/O时,将第一I/O发送到cache,具体包括:操作系统获取块层剩余的未调度的I/O数量;操作系统根据未调度的I/O数量将第一I/O发送到cache。
由于刷盘I/O或非直接写I/O通常会导致文件系统生成批量的回写操作,导致存储设备处理I/O的压力较大的问题,因此,当第一I/O为刷盘I/O或非直接写I/O时,通过操作系统根据块层未向存储设备调度的I/O的数量将第一I/O发送到cache,使得操作系统在存储设备可能有空闲的资源处理第一I/O时,才向cache下发该第一I/O,达到了减轻存储设备处理I/O的压力的效果。
可选的,当第一I/O为刷盘I/O或非直接写I/O时,cache接收到该第一I/O并将该第一I/O返回到操作系统后,统计该第一I/O具有的来源标记对应的调度域的开销。
结合第一方面或第一方面的第一种实现至第四种实现中的任意一种实现,在第一方面的第五种实现中,块层根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据,具体包括:块层将组I/O中具有依赖标记和来源标记的第二I/O加入排序队列,将具有依赖标记但不具有来源标记的I/O加入控制队列;块层获取预存的客户端的QoS;根据QoS和依赖标记对排序队列中的第二I/O进行排序;根据并发数阈值和并发数比例关系,对排序队列中的第二I/O和控制队列中的I/O进行调度以访问存储设备中的数据,其中,并发数阈值是存储设备同时处理I/O的总数量的最大值;并发数比例关系是存储设备同时处理来自排序队列的第二I/O的总数量与来自控制队列的I/O的总数量之间的比例关系。
由于通常第二I/O是需要返回给客户端的I/O,即,第二I/O的开销是面向用户的开销,因此,通过块层根据来源标记和依赖标记区分组I/O中的第二I/O,并根据QoS对第二I/O进行排序,使得块层在向存储设备调度所有I/O时,只需使得第二I/O的开销满足用户设置的QoS即可,即,存储设备只需优先处理第二I/O即可,解决了块层根据QoS对所有的I/O进行排序,向存储设备调度该所有I/O,造成存储设备处理I/O的压力较大的问题,减轻了存储设备处理I/O的压力。
可选的,在块层根据并发数阈值和并发数比例关系,对排序队列中的第二I/O和控制队列中的I/O进行调度以访问存储设备中的数据之后,块层接收存储设备已处理的每个I/O;统计具有相同来源标记的不同I/O的开销之和,将该开销之和确定为该来源标记对应的调度域的开销。
第二方面,提供了一I/O调度装置,该装置包括至少一个单元,该至少一个单元用于实现上述第一方面或第一方面的至少一种实现中所提供的I/O调度方法。
第三方面,提供了一种文件服务器,该装置包括:处理器和存储器,其中存储器中存储计算机指令,如文件系统指令,块层指令,处理器执行存储器中的计算机指令以执行第一方面或第一方面任一种实现的方案。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A是本发明一个实施例提供文件服务器的结构图;
图1B是本发明一个实施例提供的用于I/O调度的方法的系统架构的示意图;
图2是本发明一实施例提供的I/O调度方法的流程图;
图3是本发明一个实施例提供的I/O调度装置的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“单元”是指按照逻辑划分的功能性结构,该“单元”可以由纯硬件实现,或者,软硬件的结合实现。
请参考图1A,其示出了本发明一个示例性实施例提供的文件服务器100的结构示意图。该文件服务器100包括:处理器120、与处理器120相连的存储器140。
处理器120是文件服务器的控制中心,该处理器120可以是中央处理器(centralprocessing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器120还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logicdevice,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器140用总线或其它方式与处理器120相连、用于存储文件服务器100安装的客户端请求写入的数据,或者文件服务器运行时所需的数据。存储器140可以为易失性存储设备(英文:volatile memory),非易失性存储设备(英文:non-volatile memory)或者它们的组合。易失性存储设备可以为随机存取存储设备(英文:random-access memory,RAM),例如静态随机存取存储设备(英文:static random access memory,SRAM),动态随机存取存储设备(英文:dynamic random access memory,DRAM)。非易失性存储设备可以为只读存储设备(英文:read only memory image,ROM),例如可编程只读存储设备(英文:programmable read only memory,PROM),可擦除可编程只读存储设备(英文:erasableprogrammable read only memory,EPROM),电可擦除可编程只读存储设备(英文:electrically erasable programmable read-only memory,EEPROM)。
为了便于理解本发明提供的I/O调度方法,请参考图1B,其示出了本发明一个示例性实施例提供的一种用于I/O调度方法的系统架构160的示意图,该系统架构160包括操作系统161、cache162、文件系统163、块层164、存储设备165和客户端166,该系统架构中的操作系统161、cache162、文件系统163、块层164用于图1A所示的文件服务器100中。其中,cache 162可以为文件服务器100中的存储器140的一部分。其中一种实现,操作系统161、文件系统163和块层164以计算机指令形式存储在文件服务器100中的存储器140中,处理器120执行存储器140中的计算机指令以实现本发明实施例各方案。
操作系统161中包含有调度器,该调度器用于为每个第一I/O设置来源标记,并用于在第一I/O为刷盘I/O或直接写I/O时,根据块层164剩余的未调度的I/O数量向cache调度该第一I/O,其中,来源标记用于标记每个I/O来源于哪一个客户端,具体地,详见步骤201。
cache162用于接收操作系统161下发的第一I/O,并用于在第一I/O为刷盘I/O或非直接写I/O时,缓存该第一I/O写入的数据,具体地,详见步骤201。
文件系统163的数量可以为至少一个,且每个文件系统163中都包含调度器,调度器用于接收cache162下发的第一I/O。文件系统163可以根据内部机制对第一I/O进行解析生成组I/O,此时,该文件系统163中的调度器会为该组I/O中的每个I/O设置依赖标记,并将第一I/O的来源标记复制到组I/O中的第二I/O中,并根据来源标记和依赖标记将该组I/O调度至块层。其中,依赖标记用于标识组I/O中每个I/O之间的依赖关系。具体地,详见步骤201至步骤203。
块层164中包含调度器,该调度器用于接收文件系统163下发的每个I/O,根据存储设备165的并发数比例关系和并发数阈值向存储设备165下发每个I/O,具体地,详见步骤204。
其中,并发数阈值是存储设备165同时处理I/O的总数量的最大值;并发数比例关系是存储设备165同时处理块层165中的排序队列的I/O的总数量与控制队列的I/O的总数量之间的比例关系。
存储设备165用于接收块层164中的调度器下发的每个I/O,并处理每个I/O。
其中,本实施例中所描述的每个层级或者调度器可以通过具有相同功能的硬件、软件、或者硬件和软件的结合实现,本实施例不作限定。另外,每个系统架构160中的文件系统163和块层164可以实现在不同的终端中,也可以实现在同一终端中,本实施例不作限定。
请参考图2,其示出了本发明一实施例提供的一种I/O调度方法的流程图,该I/O调度方法可以应用于图1B所示的系统架构中,该I/O调度方法包括以下步骤:
步骤201,文件系统接收客户端发送的第一I/O。
由于操作系统可以直接与客户端进行交互,因此,本实施例中,文件系统接收客户端发送的第一I/O,包括:操作系统接收客户端发送的第一I/O,将第一I/O发送到cache;cache将第一I/O发送至文件系统,文件系统接收该第一I/O。
其中,第一I/O可以为刷盘I/O、读I/O或者写I/O。刷盘I/O用于在cache写入数据,并由cache立即将该数据回写入存储设备;读I/O包括直接读I/O和非直接读I/O,直接读I/O用于直接从存储设备读入数据;非直接读I/O用于先从cache读取数据,如果cache不包括该非直接读I/O读取的数据,再从存储设备读取数据;写I/O包括直接写I/O和非直接写I/O,直接写I/O用于直接向存储设备写入数据;非直接写I/O用于先向cache写入数据,再由cache将该数据回写入存储设备。
当第一I/O为刷盘I/O或非直接写I/O时,将第一I/O发送到cache,包括:操作系统获取块层剩余的未调度的I/O数量,根据未调度的I/O数量将第一I/O发送到cache。
其中,操作系统根据未调度的I/O数量将第一I/O发送到cache,包括:在操作系统确定出块层未调度的I/O的总数量小于存储设备的并发数阈值的正整数倍时,将第一I/O发送到cache。其中,并发数阈值是存储设备同时处理I/O的总数量的最大值。正整数倍的数值是开发者设置的,且本实施例不对该正整数倍的数值作限定。
由于刷盘I/O或非直接写I/O通常会导致文件系统生成批量的回写操作,导致存储设备处理I/O的压力较大,因此,当第一I/O为刷盘I/O或非直接写I/O时,操作系统根据块层未向存储设备调度的I/O的数量将第一I/O发送到cache,使得操作系统在存储设备可能有空闲的资源处理第一I/O时,才向cache下发该第一I/O,达到了减轻存储设备处理I/O的压力的效果。
需要说明的是,安装在操作系统中的调度器在接收到客户端发送的第一I/O后,会为该第一I/O设置来源标记,且操作系统中的调度器为不同的客户端发送的第一I/O设置不同的来源标记,该来源标记用于标识组I/O中的所有的第二I/O属于同一个调度域,该调度域用于表示组I/O中所有的第二I/O来自同一客户端。比如:客户端1发送了第一I/O1,客户端2发送了第一I/O2,操作系统中的调度器接收到这两个I/O时,会为第一I/O1设置用于表示该第一I/O1来源于客户端1的来源标记“1”、为第一I/O2设置用于表示该第一I/O2来源于客户端2的来源标记“2”。当然,可以想到的是,当组I/O中的第二I/O只有一个时,来源标记用于标识组I/O中的第二I/O来源于的调度域。在实际实现时,来源标记可以为预设的字符或者字符串,还可以为预设的代码段,本实施例不作限定。
可选的,当第一I/O为刷盘I/O、非直接写I/O或者非直接读I/O时,cache在将第一I/O返回到操作系统之后,会统计该第一I/O的开销,并将该开销加入到该第一I/O的来源标记对应的调度域的开销。
其中,开销用于指示第一I/O的处理速率,第一I/O的处理速率可以通过每秒传输的兆字节数(Million Bytes Per Second,MBPS)、每秒进行读写操作的次数(Input/OutputPer Second,IOPS)、延迟(latency)等衡量指标来表示,本实施例不对第一I/O的处理速率的衡量指标作限定。
当第一I/O为刷盘I/O、非直接写I/O或者非直接读I/O时,通过cache统计第一I/O具有的来源标记对应的调度域的开销,使得终端不仅可以在块层统计每个I/O的开销,还会考虑到第一I/O直接从cache返回的情况,统计这些第一I/O的开销,将这些第一I/O的开销加入到对应的客户端的开销中,解决了终端只在块层统计每个I/O的开销,导致终端统计I/O的开销不准确的问题,提高了终端统计每个I/O的开销的准确性。
步骤202中,文件系统解析第一I/O得到组I/O。
其中,组I/O中每个I/O之间均存在依赖关系,依赖关系是指组I/O中的每个I/O读取或者写入的数据均与第一I/O读取或者写入的数据有关。组I/O中可以包括该第一I/O;也可以包括根据第一I/O转化得到的第二I/O,比如:文件系统接收到的第一I/O为写I/O,该文件系统将该写I/O转化为一个读I/O和一个写I/O,此时,转化后的读I/O和写I/O为第二I/O;还可以包括第一I/O引发的内部I/O,比如:文件系统接收到的第一I/O为读I/O,并生成了一个用于读取该读I/O请求读取的文件的文件属性的读I/O,此时,生成的读I/O即为第一I/O引发的内部I/O。其中,在一些实现中,第二I/O也被称为派生I/O,本实施例不对第二I/O的名称作限定。
步骤203中,文件系统为组I/O中的每个I/O设置依赖标记,并识别组I/O中的第二I/O,为组I/O中的第二I/O设置来源标记。
其中,依赖标记用于标识组I/O中每个I/O之间的依赖关系,文件系统为组I/O中的每个I/O设置依赖标记时,会为组I/O中的每个I/O设置相同的依赖标记,该依赖标记可以为预设的字符或者字符串,还可以为预设的代码段,本实施例不作限定。其中,相同的依赖标记是指不同的I/O的依赖标记具有相同的标志位,也可以是指不同的I/O的依赖标记具有相同代码段,本实施例不作限定。比如,组I/O中的I/O1、I/O2、I/O3、I/O4,对应的依赖标记分别为11、12、13、14,其中,各个依赖标记的首位为标志位,尾位用于表示处理顺序。由于这四个I/O的依赖标记的标志位相同,因此,I/O1、I/O2、I/O3、I/O4具有相同的依赖标记。
文件系统为组I/O中的第二I/O设置来源标记,包括:获取操作系统发送的第一I/O的来源标记,将该来源标记复制到每个第二I/O中。此时,调度域可以用于表示组I/O中所有的第二I/O来自同一个文件。
步骤204中,块层根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据。
块层中的调度器根据来源标记和依赖标记对组I/O中的每个I/O进行调度以访问存储设备中的数据,包括:块层中的调度器将组I/O中具有依赖标记和来源标记的第二I/O加入排序队列,将具有依赖标记但不具有来源标记的I/O加入控制队列;块层获取预存的QoS;根据QoS和依赖标记对排序队列中的第二I/O进行排序;根据并发数阈值和并发数比例关系,对排序队列中的第二I/O和控制队列中的I/O进行调度以访问存储设备中的数据,其中,并发数比例关系是存储设备同时处理来自排序队列的第二I/O的总数量与来自控制队列的I/O的总数量之间的比例关系。比如:存储设备的并发数阈值为300,并发数比例关系为2:1,则块层将第二排序队列中前200个I/O下发至存储设备进行处理,将第一控制队列中的100个内部I/O下发至存储设备进行处理。
其中,QoS是组I/O中的第二I/O的来源标记对应的客户端的QoS,且该QoS在客户端发送第一I/O之前已经从客户端发送到了块层的调度器中。
块层中的调度器在对组I/O中的第二I/O进行排序时,可以使用SFQ算法,还可以使用WFQ算法,还可以使用mClock算法,本实施例不作限定。
需要说明的是,文件系统可能不定期地生成与该第一I/O不具有依赖关系的内部I/O,比如:用于进行数据校验的I/O、用于进行数据备份的I/O、用于进行批量事务下发的I/O等。这些内部I/O既不具有来源标记也不具有依赖标记,块层会将这些既不具有来源标记也不具有依赖标记的内部I/O也加入到控制队列中。
可选的,文件系统中的调度器在将组I/O调度至块层之前,会根据依赖标记对组I/O中的第二I/O进行排序,并将组I/O中具有依赖标记但不具有来源标记的I/O加入该文件系统中的控制队列中。这样,文件系统将组I/O调度至块层包括两种情况,在第一种情况下,文件系统未生成具有依赖标记但不具有来源标记的I/O,即,与第一I/O具有依赖关系的内部I/O;在第二种情况下,文件系统生成了具有依赖标记但不具有来源标记的I/O。下面将对这两种情况分别进行描述。
第一种情况:
文件系统中的调度器根据依赖标记对组I/O的每个I/O进行排序,并将排序后的组I/O调度至块层,块层接收该组I/O。此时,块层不会接收到具有依赖标记但不具有来源标记的I/O。
需要说明的是,文件系统中的调度器在将组I/O调度至块层时,可能会将文件系统生成的既不具有依赖标记也不具有来源标记的内部I/O一起调度至块层,块层会将该既不具有依赖标记也不具有来源标记的内部I/O加入到块层中的控制队列中。文件系统中的调度器在根据依赖关系对一组I/O中具有相同依赖标记的每个I/O进行排序时,可以使用SFQ算法,还可以使用WFQ算法,还可以使用mClock算法,本实施例不作限定。
第二种情况:文件系统中的调度器优先调度组I/O中的第二I/O,或者,文件系统中的调度器优先调度组I/O中具有依赖标记但不具有来源标记的I/O,本实施例以文件系统中的调度器优先调度组I/O中的第二I/O为例进行说明。
文件系统中的调度器根据依赖关系对组I/O中的第二I/O进行排序;将与该组I/O中具有依赖标记但不具有来源标记的内部I/O加入文件系统中的控制队列;向块层调度排序后的第二I/O后,接收块层返回的已向存储设备调度的第二I/O,向块层调度文件系统中的控制队列中的具有依赖标记但不具有来源标记的内部I/O。
此时,块层会在接收组I/O中的第二I/O,并将该第二I/O调度至存储设备之后才会接收到该组I/O中具有依赖标记但不具有来源标记的内部I/O,并将该具有依赖标记但不具有来源标记的内部I/O加入到块层的控制队列中。
可选的,块层在接收到存储设备返回的I/O时,会统计具有相同来源标记的不同I/O的开销之和,将该开销之和确定为该来源标记对应的调度域的开销。
综上所述,本发明实施例提供的I/O调度方法,通过文件系统为对第一I/O进行解析得到的组I/O设置依赖标记,将具有该依赖标记的组I/O调度至块层,使得块层可以根据不同的I/O之间是否具有相同的依赖标记,确定出不同的I/O之间是否存在依赖关系,解决了块层无法确定多个I/O之间是否存在依赖关系,在多个I/O之间存在依赖关系时,没有按照该依赖关系向存储设备调度该多个I/O,导致块层调度I/O不准确,文件系统的功能失效的问题,达到了提高块层调度I/O的准确性的效果。
另外,通过文件系统为组I/O中的第二I/O设置来源标记,使得终端在统计每个I/O的开销时,可以将具有相同来源标记的第二I/O作为同一调度域的开销进行统计,解决了块层只能分别统计每个I/O的开销,或者,只能统计所有I/O的开销,无法统计每个调度域的I/O的开销的问题,达到了明确每个调度域的I/O的开销的效果。
另外,由于刷盘I/O或非直接写I/O通常会导致文件系统生成批量的回写操作,导致存储设备处理I/O的压力较大,因此,当第一I/O为刷盘I/O或非直接写I/O时,通过操作系统根据块层未向存储设备调度的I/O的数量将第一I/O发送到cache,使得操作系统在存储设备可能有空闲的资源处理第一I/O时,才向cache下发该第一I/O,达到了减轻存储设备处理I/O的压力的效果。
另外,由于通常第二I/O是需要返回给客户端的I/O,即,第二I/O的开销是面向用户的开销,因此,通过块层根据来源标记和依赖标记区分组I/O中的第二I/O,并根据QoS对第二I/O进行排序,使得块层在向存储设备调度所有I/O时,只需使得第二I/O的开销满足用户设置的QoS即可,即,存储设备只需优先处理第二I/O即可,解决了块层根据QoS对所有的I/O进行排序,向存储设备调度该所有I/O,造成存储设备处理I/O的压力较大的问题,减轻了存储设备处理I/O的压力。
请参考图3,其示出了本发明一个实施例提供的一种I/O调度装置的框图。该I/O调度装置可以通过软件、硬件或者两者的结合实现成为终端的全部或者一部分。该I/O调度装置可以包括:接收单元310、解析单元320、设置单元330、调度单元340。
接收单元310,用于实现上述步骤201的功能。
解析单元320,用于实现上述步骤202的功能。
设置单元330,用于实现上述步骤203的功能。
调度单元340,用于实现上述步骤204的功能。
相关细节可结合参考图2所述的方法实施例。
需要说明的是,上述的接收单元310、解析单元320、设置单元330、调度单元340可以通过终端中的处理器来实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
本领域普通技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (15)

1.一种输入/输出I/O调度方法,其特征在于,所述方法包括:
文件系统接收客户端发送的第一I/O;
所述文件系统解析所述第一I/O得到组I/O;
所述文件系统为所述组I/O中的每个I/O设置依赖标记,并识别所述组I/O中的第二I/O,为所述组I/O中的第二I/O设置来源标记,所述依赖标记用于标识所述组I/O中每个I/O之间的依赖关系,所述来源标记用于标识所述组I/O中的所有的所述第二I/O属于同一个调度域,所述第二I/O是由所述第一I/O转化得到的;
块层根据所述来源标记和所述依赖标记对所述组I/O中的每个I/O进行调度以访问存储设备中的数据;
其中,所述块层根据所述来源标记和所述依赖标记对所述组I/O中的每个I/O进行调度以访问存储设备中的数据,具体包括:
所述块层将所述组I/O中具有所述依赖标记和所述来源标记的所述第二I/O加入排序队列,将具有所述依赖标记但不具有所述来源标记的I/O加入控制队列;
所述块层获取预存的所述客户端的服务质量QoS;根据所述QoS和所述依赖标记对所述排序队列中的所述第二I/O进行排序;根据并发数阈值和并发数比例关系,对所述排序队列中的所述第二I/O和所述控制队列中的所述I/O进行调度以访问存储设备中的数据,其中,所述并发数阈值是所述存储设备同时处理I/O的总数量的最大值;所述并发数比例关系是所述存储设备同时处理来自所述排序队列的所述第二I/O的总数量与来自所述控制队列的所述I/O的总数量之间的比例关系。
2.根据权利要求1所述的方法,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一客户端。
3.根据权利要求1所述的方法,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一个文件。
4.根据权利要求1所述的方法,其特征在于,所述文件系统接收客户端发送的第一I/O,具体包括:
操作系统接收所述客户端发送的所述第一I/O,将所述第一I/O发送到高速缓存cache;
所述cache将所述第一I/O发送至所述文件系统。
5.根据权利要求4所述的方法,其特征在于,当所述第一I/O为刷盘I/O或非直接写I/O时,所述将所述第一I/O发送到高速缓存cache,具体包括:
所述操作系统获取所述块层剩余的未调度的I/O数量;
所述操作系统根据所述未调度的I/O数量将所述第一I/O发送到所述cache。
6.一种输入/输出I/O调度装置,其特征在于,所述装置包括:
接收单元,用于通过文件系统接收客户端发送的第一I/O;
解析单元,用于通过所述文件系统解析所述接收单元接收的所述第一I/O得到组I/O;
设置单元,用于通过所述文件系统为所述解析单元得到的所述组I/O中的每个I/O设置依赖标记,并识别所述组I/O中的第二I/O,为所述组I/O中的第二I/O设置来源标记,所述依赖标记用于标识所述组I/O中每个I/O之间的依赖关系,所述来源标记用于标识所述组I/O中的所有的所述第二I/O属于同一个调度域,所述第二I/O是由所述第一I/O转化得到的;
调度单元,用于通过块层根据所述设置单元设置的所述来源标记和所述依赖标记对所述组I/O中的每个I/O进行调度以访问存储设备中的数据;
其中,所述调度单元,具体用于:
通过所述块层将所述组I/O中具有所述依赖标记和所述来源标记的所述第二I/O加入排序队列,将具有所述依赖标记但不具有所述来源标记的I/O加入控制队列;
通过所述块层获取预存的所述客户端的服务质量QoS;根据所述QoS和所述依赖标记对所述排序队列中的所述第二I/O进行排序;根据并发数阈值和并发数比例关系,对所述排序队列中的所述第二I/O和所述控制队列中的所述I/O进行调度以访问存储设备中的数据,其中,所述并发数阈值是所述存储设备同时处理I/O的总数量的最大值;所述并发数比例关系是所述存储设备同时处理来自所述排序队列的所述第二I/O的总数量与来自所述控制队列的所述I/O的总数量之间的比例关系。
7.根据权利要求6所述的装置,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一客户端。
8.根据权利要求6所述的装置,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一个文件。
9.根据权利要求6所述的装置,其特征在于,所述接收单元,具体用于:
通过操作系统接收所述客户端发送的所述第一I/O,将所述第一I/O发送到高速缓存cache;
通过所述cache将所述第一I/O发送至所述文件系统。
10.根据权利要求9所述的装置,其特征在于,当所述第一I/O为刷盘I/O或非直接写I/O时,所述接收单元,具体用于:
通过所述操作系统获取所述块层剩余的未调度的I/O数量;
通过所述操作系统根据所述未调度的I/O数量将所述第一I/O发送到所述cache。
11.一种文件服务器,包括处理器和与所述处理器相连的存储器,其特征在于,所述处理器执行所述存储器中的文件系统的计算机指令用于:
接收客户端发送的第一I/O;
解析所述第一I/O得到组I/O;
为所述组I/O中的每个I/O设置依赖标记,并识别所述组I/O中的第二I/O,为所述组I/O中的第二I/O设置来源标记,所述依赖标记用于标识所述组I/O中每个I/O之间的依赖关系,所述来源标记用于标识所述组I/O中的所有的所述第二I/O属于同一个调度域,所述第二I/O是由所述第一I/O转化得到的;
所述处理器执行所述存储器中的块层的计算机指令用于:根据所述来源标记和所述依赖标记对所述组I/O中的每个I/O进行调度以访问存储设备中的数据;
其中,所述处理器,执行所述存储器中的所述块层的计算机指令具体用于:
将所述组I/O中具有所述依赖标记和所述来源标记的所述第二I/O加入排序队列,将具有所述依赖标记但不具有所述来源标记的I/O加入控制队列;
获取预存的所述客户端的服务质量QoS;根据所述QoS和所述依赖标记对所述排序队列中的所述第二I/O进行排序;根据并发数阈值和并发数比例关系,对所述排序队列中的所述第二I/O和所述控制队列中的所述I/O进行调度以访问存储设备中的数据,其中,所述并发数阈值是所述存储设备同时处理I/O的总数量的最大值;所述并发数比例关系是所述存储设备同时处理来自所述排序队列的所述第二I/O的总数量与来自所述控制队列的所述I/O的总数量之间的比例关系。
12.根据权利要求11所述的文件服务器,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一客户端。
13.根据权利要求11所述的文件服务器,其特征在于,
所述调度域用于表示所述组I/O中的所述第二I/O来自同一个文件。
14.根据权利要求11所述的文件服务器,其特征在于,所述处理器,执行所述存储器中的操作系统的计算机指令,用于:
接收所述客户端发送的所述第一I/O,将所述第一I/O发送到高速缓存cache;
所述cache将所述第一I/O发送至所述文件系统。
15.根据权利要求14所述的文件服务器,其特征在于,当所述第一I/O为刷盘I/O或非直接写I/O时,所述处理器,执行所述存储器中的所述操作系统的计算机指令具体用于:
获取所述块层剩余的未调度的I/O数量;
根据所述未调度的I/O数量将所述第一I/O发送到所述cache。
CN201610664344.1A 2016-08-12 2016-08-12 输入/输出i/o调度方法及装置 Active CN106293536B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610664344.1A CN106293536B (zh) 2016-08-12 2016-08-12 输入/输出i/o调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610664344.1A CN106293536B (zh) 2016-08-12 2016-08-12 输入/输出i/o调度方法及装置

Publications (2)

Publication Number Publication Date
CN106293536A CN106293536A (zh) 2017-01-04
CN106293536B true CN106293536B (zh) 2019-06-11

Family

ID=57669942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610664344.1A Active CN106293536B (zh) 2016-08-12 2016-08-12 输入/输出i/o调度方法及装置

Country Status (1)

Country Link
CN (1) CN106293536B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666147B (zh) * 2019-03-07 2022-06-07 上海商汤智能科技有限公司 资源调度方法、设备、系统及中心服务器
CN112000297A (zh) * 2020-08-31 2020-11-27 北京计算机技术及应用研究所 基于io加权公平排队的存储服务质量保障方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101662414A (zh) * 2008-08-30 2010-03-03 成都市华为赛门铁克科技有限公司 一种数据访问的处理方法、系统和装置
EP2189893A1 (en) * 2008-11-21 2010-05-26 Thomson Licensing Data storage system and method of operation
CN104462110A (zh) * 2013-09-17 2015-03-25 昆盈企业股份有限公司 文件存取方法与文件存取装置
CN104516678A (zh) * 2013-09-29 2015-04-15 国际商业机器公司 用于数据存储的方法和设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6095539B2 (ja) * 2013-09-20 2017-03-15 株式会社日立製作所 I/o処理制御装置及びi/o処理制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101662414A (zh) * 2008-08-30 2010-03-03 成都市华为赛门铁克科技有限公司 一种数据访问的处理方法、系统和装置
EP2189893A1 (en) * 2008-11-21 2010-05-26 Thomson Licensing Data storage system and method of operation
CN104462110A (zh) * 2013-09-17 2015-03-25 昆盈企业股份有限公司 文件存取方法与文件存取装置
CN104516678A (zh) * 2013-09-29 2015-04-15 国际商业机器公司 用于数据存储的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"面向应用特征的并行I/O调度策略研究";汪凯;《万方学位论文数据库》;20160504;正文第2-4章

Also Published As

Publication number Publication date
CN106293536A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
US7529224B2 (en) Scheduler, network processor, and methods for weighted best effort scheduling
US8381230B2 (en) Message passing with queues and channels
CN107395665A (zh) 一种区块链业务受理及业务共识方法及装置
US8479219B2 (en) Allocating space in message queue for heterogeneous messages
US9069566B1 (en) Implementation of a multiple writer single reader queue in a lock free and a contention free manner
US8631152B2 (en) System and method for data packet transmission and reception
CN113535363A (zh) 任务调用方法、装置、电子设备及存储介质
CN107786623B (zh) 消息异步处理方法和装置
US10303627B2 (en) Hardware queue manager with water marking
US9491099B2 (en) Look-aside processor unit with internal and external access for multicore processors
CN106293536B (zh) 输入/输出i/o调度方法及装置
US20150304227A1 (en) Queue Management Method and Apparatus
US9380126B2 (en) Data collection and distribution management
US7474662B2 (en) Systems and methods for rate-limited weighted best effort scheduling
CN117667763A (zh) 数据处理方法、装置、电子设备和可读存储介质
WO2019029721A1 (zh) 任务的调度方法、装置、设备及存储介质
US8156265B2 (en) Data processor coupled to a sequencer circuit that provides efficient scalable queuing and method
US9116739B2 (en) Fast and scalable concurrent queuing system
US9659041B2 (en) Model for capturing audit trail data with reduced probability of loss of critical data
CN107357853A (zh) 一种redis控制台的操作方法、装置及计算机系统
CN112395054B (zh) 一种线程调度方法、装置及系统
WO2024164959A1 (zh) 报文的处理方法及装置、电子设备及计算机可读存储介质
Wang et al. Succinct priority indexing structures for the management of large priority queues

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant