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. ...
【技术保护点】
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,…,readN ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。