【技术实现步骤摘要】
一种IO调度方法和装置
[0001]本专利技术涉及计算机系统结构领域,尤其涉及一种IO调度方法和装置。
技术介绍
[0002]分布式持久性内存系统中包含丰富的计算、网络和存储资源,这些资源本身存在一些性能差异。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:系统通常无法感知不同资源的性能特点等差异,也无法从全局角度最优地为执行IO(Input/Output,输入/输出)操作的进程/线程分配合适的资源,若配错将会严重影响业务的访问性能。
技术实现思路
[0003]有鉴于此,本专利技术实施例提供一种IO调度方法和装置,至少能够解决现有技术无法感知资源性能特点差异,导致调度IO进程/线程不合理的现象。
[0004]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种IO调度方法,包括:
[0005]接收传输的输入输出IO请求;其中,所述IO请求为读数据请求或写数据请求;
[0006]当所述IO请求为读数据请求时,确定与所述读数据请求对应的目标CPU,以调度IO进程或线 ...
【技术保护点】
【技术特征摘要】
1.一种IO调度方法,其特征在于,包括:接收传输的输入输出IO请求;其中,所述IO请求为读数据请求或写数据请求;当所述IO请求为读数据请求时,确定与所述读数据请求对应的目标CPU,以调度IO进程或线程到所述目标CPU的核上进行数据读取操作,返回读取到的数据;或当所述IO请求为写数据请求时,确定与所述写数据请求对应的目标节点,以调度IO进程或线程将数据写入所述目标节点的CPU内存中;其中,所述写数据请求包括待写入的数据。2.根据权利要求1所述的方法,其特征在于,所述读数据请求包括CPU内存逻辑访问地址;所述确定与所述读数据请求对应的目标CPU,以调度IO进程或线程到所述目标CPU的核上进行数据读取操作,包括:根据所述CPU内存逻辑访问地址定位到所述目标CPU,判断所述目标CPU的负载利用率是否大于或等于预设负载利用率阈值;根据判断结果,调度IO进程或线程到相应CPU的核上进行数据读取操作。3.根据权利要求2所述的方法,其特征在于,所述根据判断结果,调度IO进程或线程到相应CPU的核上进行数据读取操作,包括:若小于,则调度IO进程或线程到所述目标CPU的核上进行数据读取操作;或若大于或等于,则调度IO进程或线程到其他任一空闲CPU的核上,以通过所述任一空闲CPU远端访问所述目标CPU内存空间进行数据读取操作;其中,所述目标CPU和其他任一空闲CPU位于同一节点下。4.根据权利要求2所述的方法,其特征在于,所述根据所述CPU内存逻辑访问地址定位到所述目标CPU,包括:处理所述CPU内存逻辑访问地址,得到哈希值,在预设哈希环上查询与所述哈希值对应的节点;确定与所述CPU内存逻辑访问地址对应的实际内存访问地址,以在所述节点中根据所述实际内存访问地址定位到所述目标CPU。5.根据权利要求4所述的方法,其特征在于,所述在所述节点中根据所述实际内存访问地址定位到所述目标CPU,包括:响应于单一节点存储所有待读取的数据,在所述单一节点中根据所述实际内存访问地址定位到目标CPU;或响应于跨节点存储所有待读取的数据,统计每个节点下待读取的数据量或数据大小,以筛选出数据量或数据大小最大的第一节点,在所述第一节点中根据相应实际内存访问地址定位到目标CPU;在从所述第一节点读取数据完毕后,筛选出数据量或数据大小排序第二的第二节点,重复上述目标CPU定位、负载利用率判断以及调度IO进程或线程操作,以进行数据读取操作,直至轮询得到所有待读取的数据。6.根据权利要求5所述的方法,其特征在于,所述读数据请求还包括IO大小,IO大小为待读取数据的总大小;当单一节点存储所有待读取的数据时,所述判断所述目标CPU的负载利用率是否大于
或等于预设负载利用率阈值,包括:判断所述IO大小是否大于或等于预设大小阈值,若小于,则调度IO进程或线程到所述目标CPU的核上进行数据读取操作;或若大于或等于,则判断所述目标CPU的负载利用率是否大于或等于预设负载利用率阈值。7.根据权利要求2
‑
6中任一项所述的方法,其特征在于,所述方法还包括:获取当前IO进程或线程在CPU的核上的分布情况;若当前IO进程或线程位于所述目标CPU的核上,则调度IO进程或线程到所述目标CPU的核上进行数据读取操作,否则,调度IO进程或线程到其他任一空闲CPU的核上进行远端数据读取操作。8.根据权利要求1所述的方法,其特征在于,所述写入数据请求包括IO大小、目标节点的标识、待写入的数据;其中,IO大小为待写入数据的总大小;所述调度IO进程或线程将数据写入所述目标节点的CPU内存中,包括:根据所述目标节点的标识,获取所述目标节点当前的内存可用空间,判断所述内存可用空间是否大于或等于所述IO大小;根据判断结果,调度IO进程或线程将数据写入相应节点的CPU内存中。9.根据权利要求8所述的方法,其特征在于,所述根据判断结果,调度IO进程或线程将数据写入相应节点的CPU内存中,包括:若大于或等于,则调度IO进程或线程将数据写入所述目标节点的CPU内存中;其中,一个节点下包括多个CPU;或若小于,则确定所述目标节点下具有最大内存可用空间的目标CPU,调度IO进程或线程将所述最大内存可用空间的数据,写入所述目标CPU的内存中,以及将剩余数据写入其他节点的CPU内存中。10.根据权利要求9所述的方法,其特征在于,所述将剩余数据写入其他节点的CPU内存中,包括:从其他节点中筛选出当前内存可用空间最大的一个节点,判断当前内存可用空间是否大于或等于剩余数据的IO大小;若大于或等于,则调度IO进程或线程将剩余数据均写入所述一个节点的CPU内存中;或若小于,则将当前内存可用空间的数据写入所述一个节点,重复上述节点筛选以及比对空间大小操作,以将剩余数据写入多个节点的CPU内存中。11.根据权利要求8
‑
10中任一项所述的方法,其特征在于,节点包括持久性内存;在所述根据判断结果,调度IO进程或线程将数据写入相应节点的CPU内存中之后,所述方法还包括:从数据的属性中,获取位于标志位上的持久化数值;若所述持久化数值为预设值,则获取数据所在节点的持久性内存的当前可用空间,判断当前可用空间是否大于或等于数据的IO大小;若大于或等于,则使用异步的方式,将节点CPU内存中的数据写入所述持久性内存中;或若小于,则将节点CPU内存中所述当前可用空间的数据写入所述持久性内存中,将剩余
数据写入其他节点的持久性内存中。12.一种IO调度装置,其特征在于,包括:接收模块,用于接收传输的输入输出IO请求;其中,所述IO请求为读数据请求或写数据请求;IO进程或线程调度子模块,用于当所述IO请求为读数据请求时,确定与所述读数据请求对应的目标CPU,以...
【专利技术属性】
技术研发人员:张峥,
申请(专利权)人:建信金融科技有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。