I/o请求的处理方法和装置的制造方法

文档序号:9750645阅读:1135来源:国知局
I/o请求的处理方法和装置的制造方法
【技术领域】
[0001 ]本发明实施例涉及通信技术,尤其涉及一种输入/输出(Input/Output,简称I/O)请求的处理方法和装置。
【背景技术】
[0002]全闪存阵列要求在一定的I/O压力下,提供稳定的时延,除了传统的基于并发的资源预留和流控策略,系统在设计上也要求规避各类干扰源引入的时延抖动,以改善时延的稳定性。
[0003]现有技术中,所有中断分配在各个中央处理单元(Central Processing Unit,简称CPU)核上执行,会由于中断I/O的随机性和突发性而打断正在当前核上处理的业务I/O的执行,造成业务I/O瞬时时延变大,影响业务I/O的时延稳定性能。当各个核上的I/O对同一个共享资源进行访问时,会产生访问冲突,其他CPU核需要等待在前的CPU核访问完成才能进行访问,导致业务I/o的时延增大,CPU缓存命中率也会降低。

【发明内容】

[0004]本发明实施例提供一种I/O请求的处理方法和装置,减少各个CPU核上的I/0对同一个逻辑单元号(Logical Unit Number,简称LUN)上的共享资源争用时的冲突,提升CPU缓存命中率和系统整体性能。
[0005]本发明第一方面提供一种1/0请求的处理方法,该1/0请求的处理方法包括:首先对系统中的N个CPU核进行划分,将M个CPU核划分到中断处理组,将N-M个CPU核划分到业务处理组,中断处理组中的CPU核用于处理中断1/0,业务处理组中的CPU核用于处理业务1/0,通过让中断固化在部分CPU核上处理,与处理业务1/0的CPU核分开,可以避免由于中断的突然到来导致业务I/o瞬时时延突然变大的问题,提升了系统的时延稳定性。进一步的根据系统中的LUN个数和业务处理组中的CPU核的个数,对业务处理组中的CPU核进行分组,分组后每个CPU分组包含至少一个CPU核,并建立LUN与CPU分组的映射关系。后续当接收到应用发送的业务I/0请求时,根据业务I/0请求中包括的访问地址确定业务I/0请求要访问的目标LUN,根据目标LUN以及LUN与CPU分组的映射关系,确定执行业务1/0请求的目标CPU分组,将业务1/0请求发送给目标CHJ分组执行。通过对业务处理组中的CPU核进行分组,使得每个CPU组处理固定的LUN上的I /0请求,减少各个CPU核上的I /0对同一个LUN上的共享资源争用时的冲突,提升CHJ缓存命中率和系统整体性能。
[0006]在本发明第一方面的一种可能的实现方式,通过如下方式对业务处理组中的CPU核进行分组:首先确定CPU分组个数,为所述业务处理组中的CPU分组分配分组标识,然后将所述业务处理组中的CPU核分配给所述业务处理组中的CPU分组,将所述系统中的LUN平均分配给所述业务处理组中的每个CPU分组。其中,在确定CPU分组个数时,通过比较系统中的LUN个数和业务处理组中的CPU核的个数,当所述系统中的LUN个数小于所述业务处理组中的CPU核的个数时,确定CPU分组个数为所述系统中的LUN个数。相应的,记录所述业务处理组中的每个CPU分组的分组标识和LUN的标识的对应关系。
[0007]在本发明第一方面的另一种可能的实现方式,通过如下方式对业务处理组中的CPU核进行分组:首先确定CPU分组个数,为所述业务处理组中的CPU分组分配分组标识,然后,将所述业务处理组中的CPU核平均分配给所述业务处理组中的每个CPU分组,将所述系统中的LUN分配给所述业务处理组中的每个CPU分组。其中,在确定CPU分组个数时,通过比较系统中的LUN个数和业务处理组中的CPU核的个数,当所述系统中的LUN个数大于所述业务处理组中的CPU核的个数时,确定CPU分组个数为所述业务处理组中的CPU核的个数。相应的,记录所述业务处理组中的每个CPU分组的分组标识和LUN的标识的对应关系。
[0008]在本发明第一方面的一种可能的实现方式,所述方法还包括:根据中断的属性对所述中断处理组中的CHJ核进行分组,所述中断处理组中的每个CPU分组用于对一种中断进行处理。
[0009]在本发明第一方面的一种可能的实现方式,还可以对所述系统中的CPU分组包括的CPU核个数进行调整,具体的:统计所述业务处理组中的每个CPU分组的CPU利用率以及所述中断处理组中的每个CPU分组的CPU利用率,然后根据所述系统中的CPU分组的CPU利用率,对所述系统中的CHJ分组包括的CPU核个数进行调整,所述系统中的CPU分组包括所述业务处理组中的CPU分组和所述中断处理组中的CPU分组,相应的更新所述LUN与CPU分组的映射关系。
[0010]在本发明第一方面的一种可能的实现方式,可通过如下方式对CPU分组包括的CPU核个数进行调整:首先判断所述系统中的CHJ分组的CPU利用率是否满足条件一和条件一中的任意一个,其中,所述条件一为:所述系统中的每个CPU分组的CPU利用率均大于第一阈值,所述条件二为:所述系统中的每个(PU分组的CPU利用率均小于第二阈值,所述第二阈值小于所述第一阈值。
[0011]如果所述系统中的CPU分组的CPU利用率满足所述条件一和所述条件二中的任意一个,则不对所述系统中的CPU分组包括的CPU核个数进行调整,如果所述系统中的CPU分组的CPU利用率不满足所述条件一和所述条件二中的任意一个,则进一步判断所述系统的CPU分组中CPU利用率最大的CPU分组和CPU利用率最小的CPU分组的CPU利用率的差值是否大于第三阈值。如果所述CPU利用率的差值大于所述第三阈值,则确定对所述业务处理组中的CPU分组包括的CPU核个数进行调整,将所述CPU利用率最小的CPU分组中的一个CPU核分配给所述(PU利用率最大的CPU分组,如果所述CPU利用率的差值不大于所述第三阈值,则确定不对所述业务处理组中的CPU分组包括的CPU核个数进行调整。其中,所述第三阈值大于所述第二阈值,且小于所述第一阈值。
[0012]在本发明第一方面的一种可能的实现方式,所述更新所述LUN与CPU分组的映射关系,具体为:判断所述CR]利用率最小的CPU分组中CPU核的个数是否为零,如果所述CPU利用率最小的CPU分组中CPU核的个数为零,则删除所述CPU利用率最小的CPU分组,并更新所述CPU利用率最大的CPU分组和LUN的对应关系,如果所述CPU利用率最小的CPU分组中CPU核的个数不为零,则分别更新所述CPU利用率最大的CPU分组和LUN的对应关系,以及所述CPU利用率最小的CPU分组和LUN的对应关系。
[0013]本发明第二方面提供一种I/O请求的处理装置,所述I/O请求的处理装置包括:第一分组模块、第二分组模块、建立模块、第一确定模块、第二确定模块和发送模块。第一分组模块用于对系统中的N个CPU核进行划分,将M个CPU核划分到中断处理组,将N-M个CPU核划分到业务处理组,所述中断处理组中的CPU核用于处理中断I /0,所述业务处理组中的CPU核用于处理业务I/O,其中,M和N均为大于正整数,且M小于N;第二分组模块用于根据所述系统中的LUN个数和所述业务处理组中的CPU核的个数,对所述业务处理组中的CPU核进行分组,每个CPU分组包含至少一个CPU核;建立模块用于建立LUN与CPU分组的映射关系;第一确定模块用于当接收到应用发送的业务I/O请求时,根据所述业务I/O请求中包括的访问地址确定所述业务I/O请求要访问的目标LUN;第二确定模块用于根据所述目标LUN以及LUN与CPU分组的映射关系,确定执行所述业务I/O请求的目标CPU分组;发送模块用于将所述业务I/O请求发送给所述目标CPU分组执行。
[0014]在本发明第二方面的一种可能的实现方式,所述第二分组模块具体用于:当所述系统中的LUN个数小于所述业务处理组中的CPU核的个数时,确定CPU分组个数为所述系统中的LUN个数,为所述业务处理组中的CPU分组分配分组标识,然后将所述业务处理组中的CPU核分配给所述业务处理组中的CPU分组,将所述系统中的LUN平均分配给所述业务处理组中的每个CPU分组。所述建立模块具体用于:记录所述业务处理组中的每个CPU分组的分组标识和LUN的标识的对应关系。
[0015]在本发明第二方面的另一种可能的实现方式,所述第二分组模块具体用于:当所述系统中的LUN个数大于所述业务处理组中的CPU核的个数时,确定CPU分组个数为所述业务处理组中的CPU核的个数,为所述业务处理组中的CPU分组分配分组标识,然后将所述业务处理组中的CPU核平均分配给所述业务处理组中的每个CPU分组,将所述系统中的LUN分配给所述业务处理组中的每个(PU分组。所述建立模块具体用于:记录所述业务处理组中的每个CPU分组的分组标识和LUN的标识的对应关系。
[0016]在本发明第二方面的一种可能的实现方式,所述I/O请求的处理装置还包括:第三分组模块,第三分组模块用于根据中断的属性对所述中断处理组中的CPU核进行分组,所述中断处理组中的每个CPU分组用于对一种中断进行处理。
[0017]在本发明第二方面的一种可能的实现方式,所述I/O请求的处理装置还包括:统计模块、调整模
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1