一种通过软硬件协同支持读写性能隔离的I/O调度器制造技术

技术编号:20117077 阅读:34 留言:0更新日期:2019-01-16 11:56
本发明专利技术涉及一种基于Linux内核技术通过软硬件协同支持读写性能隔离的I/O调度器,该I/O调度器是在Linux内核的现有I/O调度器中增加了四个单元,即包括有队列分配单元(10)、优先级设置单元(20)、队列延迟时间对比单元(30)和队列深度调节单元(40),同时将Linux内核现有的I/O软件队列(50)和I/O硬件队列(60)中的I/O优先级进行对接;旨在不修改上层应用的前提下,降低应用业务混部带来的性能干扰,即最大程度的做到混部应用的资源隔离。采用本发明专利技术设计的I/O调度器处理后能够在数据处理系统中的在线读负载和批量写负载混部,即读写I/O混部的情况下,保持写I/O性能不变的同时,将读I/O的性能提升。

An I/O Scheduler Supporting Performance Isolation of Reading and Writing by Hardware/Software Co-operation

The present invention relates to an I/O scheduler based on Linux kernel technology, which supports read-write performance isolation through hardware and software co-operation. The I/O scheduler adds four units to the existing I/O scheduler of the Linux kernel, namely, queue allocation unit (10), priority setting unit (20), queue delay time comparison unit (30) and queue depth adjustment unit (40). At the same time, the existing I/O scheduler of the Linux kernel is added. I/O priority in I/O software queue (50) and I/O hardware queue (60) is docked to reduce the performance interference caused by the application business mixtures without modifying the upper application, that is, to maximize the resource isolation of the mixed application. The I/O scheduler designed by the invention can improve the performance of read I/O while keeping the performance of write I/O unchanged under the condition of on-line read load and batch write load mixing in data processing system after processing.

【技术实现步骤摘要】
一种通过软硬件协同支持读写性能隔离的I/O调度器
本专利技术涉及一种基于Linux内核的I/O调度器,更特别地说,是指一种通过软硬件协同支持读写性能隔离的I/O调度器。
技术介绍
I/O调度器是操作系统内核中的部件,其通过合并,重排等操作改变I/O请求在队列中的顺序,从而改变I/O请求提交到存储设备的顺序。I,Input,输入;O,Output,输出。队列:队列是一种特殊的线性表,其只允许在表的前端(front)进行元素的删除操作(出队),在表的后端(rear)进行元素的插入操作(入队)。I/O请求队列:I/O队列是Linux内核中的结构,存在于通用块层(blocklayer),上层应用提交的I/O请求顺序地从队列尾端被提交至队列,而请求队列依次将队列前端的I/O请求提交至存储设备进行处理。I/O软件队列:I/O软件队列是Linux内核3.19中的概念,其作用与I/O请求队列相同,与之不同的是,I/O请求队列只有一个,而I/O软件队列针对每一个CPU逻辑核都会创建一个,其用于缓存对应CPU逻辑核提交的I/O请求。I/O硬件队列:I/O硬件队列也是Linux内核3.19中的概念,其是一个新的队列结构。I/O硬件队列的个数与存储硬件提供的队列数目相等,并与之对应。I/O软件队列将I/O请求提交到指定的I/O硬件队列,I/O硬件队列再将I/O请求提交至存储设备。NVMe(Non-VolatileMemoryexpress):非易失性内存主机控制器接口规范,是一个逻辑设备接口规范。此规范充分利用PCI-E接口,处理器以及操作系统的并行性,极大的提升固态硬盘的读写性能。NVMe硬件队列,即为存在于NVMe接口驱动中的,用于将I/O请求提交至存储设备的硬件队列。
技术实现思路
为了解决针对数据处理系统中的在线读负载和批量写负载两类应用的混部,在不修改上层应用的前提下,降低应用业务混部带来的干扰,即最大程度的做到混部应用的资源隔离;因此,本专利技术设计了一种通过软硬件协同支持读写性能隔离的I/O调度器。本专利技术技术手段是改进已有I/O调度器,通过调整不同类型I/O的队列深度对I/O进行流量控制,并优先保证读I/O请求的完成时间,此为软件层面的I/O隔离方案;同时本专利技术将4类I/O调度器中的优先级与NVMe硬件队列中的4类优先级进行对接,当读I/O请求的优先级高于写I/O请求的优先级时,NVMeSSD会优先获取并处理读I/O请求,此为硬件层面的I/O隔离方案。采用本专利技术设计的I/O调度器处理后能够在数据处理系统中的在线读负载和批量写负载混部,即读写I/O混部的情况下,保持写I/O性能不变的同时,将读I/O的性能提升48.3%。本专利技术设计的一种通过软硬件协同支持读写性能隔离的I/O调度器,是在基于Linux内核的现有I/O调度器中增加了四个单元,即队列分配单元(10)、优先级设置单元(20)、队列延迟时间对比单元(30)和队列深度调节单元(40);队列分配单元(10)中存在有队列包括有读请求队列(101)、同步写请求队列(102)和异步写请求队列(103);读请求队列(101)用于归类经读I/O请求单元(12)从数据处理系统中的在线读负载(11)请求得到的多个读请求read,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的读请求read采用集合形式表达为RQ={readT,read2T,…,readNT};同步写请求队列(102)用于归类经写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个同步写请求write,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的同步写请求write采用集合形式表达为WQ={writeT,write2T,…,writeNT};异步写请求队列(103)用于归类写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个异步写请求asynchronous_write,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的异步写请求asynchronous_write采用集合形式表达为优先级设置单元(20)用于对队列分配单元(10)中的多个请求队列进行优先级的设置;队列延迟时间对比单元(30)先进行读请求的时间比对,然后进行同步写请求的时间比对,进而是异步写请求的时间比对,最后将比对后的各自服务质量输出给队列深度调节单元(40);队列延迟时间对比单元(30)输出的服务质量有和有和有和队列深度调节单元(40)在观测时间集OT={0,T,2T,…,(N-1)T,NT}中同一个观测周期进行循环调节;步骤A,在观测周期T时刻里,队列深度调节单元(40)接收队列延迟时间对比单元(30)输出的服务质量和然后执行步骤B;步骤B,对的取值进行判断,若则执行步骤C;若则执行步骤D;步骤C,将读队列深度调整为将同步写队列深度调整为将异步写队列深度调整为然后输出至I/O软件队列50;步骤D,将读队列深度保持为即然后执行步骤E;步骤E,对的取值进行判断,若则执行步骤F;若则执行步骤G;步骤F,将同步写队列深度调整为然后执行步骤H;步骤G,将同步写队列深度保持为即然后执行步骤H;步骤H,对的取值进行判断,若则执行步骤I;若则执行步骤J;步骤I,将异步写队列深度调整为输出至I/O软件队列50;步骤J,将异步写队列深度保持为即输出至I/O软件队列50;I/O软件队列(50),经队列深度调节单元(40)调整后的RQ、WQ和AWQ中的每个请求根据自身的优先级信息进入到对应的I/O软件队列(50)中,其中RQ进入Real-time优先级的软件队列,WQ和AWQ进入Idle优先级的软件队列;I/O硬件队列(60),将I/O软件队列(50)中的优先级与I/O硬件队列(60)的优先级进行映射,则Real-time优先级的软件队列会和Urgent优先级的硬件队列对接,则RQ队列中的I/O请求最终会进入到Urgent优先级的硬件队列中;而Idle优先级的软件队列会和Low优先级的硬件队列对接,则WQ和AWQ队列中的I/O请求最终会进入到Low优先级的硬件队列中;存储设备(70)通过WRR的方式扫描各硬件队列获取并处理I/O请求,则读I/O请求在Urgent队列会优先被处理,写I/O则会被放缓处理,由此在硬件层面降低了写I/O对读I/O的干扰。本专利技术设计了基于Linux内核的通过软硬件协同支持读写性能隔离的I/O调度器的优点在于:软件层面改进,使其在软件队列上层通过动态队列调整的方式对不同类型的I/O请求进行流量控制,并优先保证读I/O请求的完成时间。当读I/O请求的完成时间不满足阈值要求时,本专利技术I/O调度器会增加RQ队列的深度,减小WSQ队列和WQ队列的深度,控制写I/O请求向软件队列的提交流量,以此在软件层面保证读I/O请求的完成时间。硬件层面改进,在软件层进行流量控制的同时,为每个核建立4个软件队列对应4类I/O调度器中的优先级,并将其与NVMe硬件队列中的4类优先级进行对应,设置读I/O请求的优先级高于写I/O请求,优先级标签会被NVMeSSD(硬盘)识别,优先获取并处理高优先级的读I/O请求,在硬件层面保证了读I/O请本文档来自技高网
...

【技术保护点】
1.一种通过软硬件协同支持读写性能隔离的I/O调度器,其特征在于,包括:I/O调度器包括有队列分配单元(10)、优先级设置单元(20)、队列延迟时间对比单元(30)和队列深度调节单元(40);队列分配单元(10)中存在有队列包括有读请求队列(101)、同步写请求队列(102)和异步写请求队列(103);读请求队列(101)用于归类经读I/O请求单元(12)从数据处理系统中的在线读负载(11)请求得到的多个读请求read,则有,在所有观测周期OT={0,T,2T,…,(N‑1)T,NT}里采集到的读请求read采用集合形式表达为RQ={readT,read2T,…,readNT};同步写请求队列(102)用于归类经写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个同步写请求write,则有,在所有观测周期OT={0,T,2T,…,(N‑1)T,NT}里采集到的同步写请求write采用集合形式表达为WQ={writeT,write2T,…,writeNT};异步写请求队列(103)用于归类写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个异步写请求asynchronous_write,则有,在所有观测周期OT={0,T,2T,…,(N‑1)T,NT}里采集到的异步写请求asynchronous_write采用集合形式表达为:...

【技术特征摘要】
1.一种通过软硬件协同支持读写性能隔离的I/O调度器,其特征在于,包括:I/O调度器包括有队列分配单元(10)、优先级设置单元(20)、队列延迟时间对比单元(30)和队列深度调节单元(40);队列分配单元(10)中存在有队列包括有读请求队列(101)、同步写请求队列(102)和异步写请求队列(103);读请求队列(101)用于归类经读I/O请求单元(12)从数据处理系统中的在线读负载(11)请求得到的多个读请求read,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的读请求read采用集合形式表达为RQ={readT,read2T,…,readNT};同步写请求队列(102)用于归类经写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个同步写请求write,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的同步写请求write采用集合形式表达为WQ={writeT,write2T,…,writeNT};异步写请求队列(103)用于归类写I/O请求单元(22)从数据处理系统中的批量写负载(21)请求得到的多个异步写请求asynchronous_write,则有,在所有观测周期OT={0,T,2T,…,(N-1)T,NT}里采集到的异步写请求asynchronous_write采用集合形式表达为:观测时间集OT={0,T,2T,…,(N-1)T,NT},T为第一个观测周期,2T为第二个观测周期,(N-1)T为倒数最后一个观测周期,NT为最后一个观测周期,N为观测周期的总期数;readT表示在0至T时间段出现的第一组读请求;read2T表示在T至2T时间段出现的第二组读请求;readNT表示在(N-1)T至NT时间段出现的最后一组读请求;writeT表示在0至T时间段出现的第一组同步写请求;write2T表示在T至2T时间段出现的第二组同步写请求;writeNT表示在(N-1)T至NT时间段出现的最后一组同步写请求;asynchronous_writeT表示在0至T时间段出现的第一组异步写请求;asynchronous_write2T表示在T至2T时间段出现的第二组异步写请求;asynchronous_writeNT表示在(N-1)T至NT时间段出现的最后一组异步写请求;优先级设置单元(20)用于对队列分配单元(10)中的多个请求队列进行优先级的设置;队列延迟时间对比单元(30)先进行读请求的时间比对,然后进行同步写请求的时间比对,进而是异步写请求的时间比对,最后将比对后的各自服务质量输出给队列深度调节单元(40);队列延迟时间对比单元(30)输出的服务质量有和有和有和为设置在0至T时间段里所述readT的服务质量;为设置在T至2T时间段里所述read2T的服务质量;为设置在(N-1)T至NT时间段里所述readNT的服务质量;为设置在0至T时间段里所述writeT的服务质量;为设置在T至2T时间段里所述write2T的服务质量;为设置在(N-1)T至NT时间段里所述writeNT的服务质量;为设置在0至T时间段里所述asynchronous_writeT的服务质量;为设置在T至2T时间段里所述asynchronous_write2T的服务质量;为设置在(N-1)T至NT时间段里所述asynchronous_writeNT的服务质量;队列深度调节单元(40)在观测时间集OT={0,T,2T,…,(N-1)T,NT}中同一个观测周期进行循环调节;步骤A,在观测周期T时刻里,队列深度调节单元(40)接收队列延迟时间对比单元(30)输出的服务质量和...

【专利技术属性】
技术研发人员:查礼王一帆张星洲查斌刘峥程学旗
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1