一种加速存储读写数据输入输出的优化方法和系统技术方案

技术编号:27201284 阅读:7 留言:0更新日期:2021-01-31 12:11
本发明专利技术提出了一种加速存储读写数据输入输出的优化方法和系统,该方法包括:将各线程分别绑定在预定的CPU核心上,以及将每个线程管理的队列初始化;初始化后首先在队列中插入必要任务;必要任务包括监听任务和侦测任务。然后按照负载均衡原则将新任务插入至任一线程管理的队列中;建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数,线程执行所管理的队列任务。基于该优化方法,本发明专利技术还提出了一种加速存储读写数据输入输出的优化系统。本发明专利技术改进任务执行模式,任务函数执行时根据偏移量寻参这种模式,借助提高CPU利用率,减小线程切换引起的开销,从而达到优化存储读写IO的目的。的。的。

【技术实现步骤摘要】
一种加速存储读写数据输入输出的优化方法和系统


[0001]本专利技术属于存储数据读写优化
,特别涉及一种加速存储读写数据输入输出的优化方法和系统。

技术介绍

[0002]存储控制器主要用于存储端的硬盘及其上存储的数据管理,同时对服务器端提供数据访问服务。在对服务器端提供数据访问的过程中,由于短时间内处理的IO数量巨大,存储控制器中的CPU承担了大量的解包、读盘、写盘操作,因而如何充分使用CPU,提高CPU的有效利用率就成为提高存储控制器性能的重要途经。
[0003]在现有技术中,针对该问题存在的一些技术方案包括:第一,增加总的cpu核心数量,并将负载压力平均到多核cpu的每个核心上,以期通过增加总的计算能力并平衡负载来提高IO数据的吞吐量,从而提高存储的整体性能。第二,以cpu各核心为依据,将一个或几个线程绑定到一个cpu核心,一般情况下,一个线程绑定一个CPU核心,每个线程处理专门的事务,减少相互之间的干扰,如专门处理来自一个FC口的IO数据,如图1给出了不同情况下CPU核心线程绑定示意图。但无论一个cpu核心绑定一个线程,还是一个cpu核心绑定多个线程,都存在其固有的缺点:前者,例如在FC_PORT-1端口空闲时,CPU1会同时存在被闲置的可能,不能得到充分利用;后者在进行线程切换时则会产生较大的切换开销,动辄上千字节的入栈、出栈操作,严重降低了CPU的有效利用率。

技术实现思路

[0004]为了解决上述技术问题,本专利技术提出了一种加速存储读写数据输入输出的优化方法和系统,通过改进任务执行模式,提高了CPU的实际工作效率,从而提升了存储设备读写IO的性能。
[0005]为实现上述目的,本专利技术采用以下技术方案:
[0006]一种加速存储读写数据输入输出的优化方法,包括以下步骤:
[0007]将线程以及线程管理的队列进行初始化;
[0008]按照负载均衡原则,将新任务插入至任一线程管理的队列中;建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数,线程执行所管理的队列任务。
[0009]进一步的,所述将线程以及线程管理的队列进行初始化包括:将各线程分别绑定在预定的CPU核心上,以及将每个线程管理的队列初始化。
[0010]进一步的,所述预定的CPU核心为在存储控制器中用于处理数据输入输出任务的CPU核心。
[0011]进一步的,所述将每个线程管理的队列初始化后,首先在所述队列中插入必要任务;所述必要任务包括监听任务和侦测任务。
[0012]进一步的,所述按照负载均衡原则,将新任务插入至任一线程管理的队列中包括:
第一线程将新任务插入至第一纵向队列中;第二线程将新任务插入至第二纵向队列中;第N线程将将新任务插入至第N纵向队列中。
[0013]进一步的,所述建立任务对应的任务执行结构体与任务执行函数之间的映射关系的方法为:通过指针成员变量指向任务执行函数。
[0014]进一步的,在将新任务插入至任一线程管理的队列中之后,第一线程执行第一横向队列的任务、第二线程执行第二横向队列的任务、第N线程执行第N横向队列的任务。
[0015]本专利技术还提出了一种加速存储读写数据输入输出的优化系统,包括初始化模块和负载均衡模块;
[0016]所述初始化模块用于将线程以及线程管理的队列进行初始化;
[0017]所述负载均衡模块用于按照负载均衡原则,将新任务插入至任一线程管理的队列中;建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数。
[0018]进一步的,所述负载均衡模块包括加入模块和执行模块;
[0019]所述加入模块用于按照负载均衡原则,将新任务插入至任一线程管理的队列中;
[0020]所述执行模块用于在将新任务插入至任一线程管理的队列中之后,线程建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数,线程执行所管理的队列任务。
[0021]
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0022]本专利技术提出了一种加速存储读写数据输入输出的优化方法和系统,该方法包括:将各线程分别绑定在预定的CPU核心上,以及将每个线程管理的队列初始化;将每个线程管理的队列初始化后,首先在队列中插入必要任务;必要任务包括监听任务和侦测任务。然后,按照负载均衡原则将新任务插入至任一线程管理的队列中;建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数,线程执行所管理的队列任务。基于本专利技术提出的一种加速存储读写数据输入输出的优化方法,本专利技术还提出了一种加速存储读写数据输入输出的优化系统。本专利技术改进任务执行模式,单线程绑定CPU核心,线程内任务按队列依次执行,并按负载均衡原则将新任务插入对应的纵向队列中的某一个,从而均衡负载。任务执行函数与任务执行结构体的映射关系,任务函数执行时根据偏移量寻参这种模式,借助提高CPU利用率,减小线程切换引起的开销,从而达到优化存储读写IO的目的。
附图说明
[0023]如图1为现有技术中不同情况下CPU核心线程绑定示意图;
[0024]如图2为本专利技术实施例1一种加速存储读写数据输入输出的优化方法流程图;
[0025]如图3为本专利技术实施例1一种加速存储读写数据输入输出的优化方法中线程任务队列示意图;
[0026]如图4为本专利技术实施例1一种加速存储读写数据输入输出的优化方法中任务结构体与执行函数对应关系示意图;
[0027]如图5为本专利技术实施例2一种加速存储读写数据输入输出的优化系统示意图。
具体实施方式
[0028]为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本专利技术省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本专利技术。
[0029]实施例1
[0030]本专利技术实施例1提出了一种加速存储读写数据输入输出的优化方法,每个CPU核心绑定一个线程为基础,以消除由单个CPU核心上线程切换引起的巨额开销。由于存储控制器主要用于数据IO的传输,因而只留一个CPU核心用于非数据IO事务的处理,其他核心全部用于数据IO任务的执行。在每个CPU核心绑定一个线程的基础上,在线程内实施多个任务执行队列,将每个IO读写视为一次任务,插入到对应线程的任务执行队列中。
[0031]如图2给出了本专利技术实施例1一种加速存储读写数据输入输出的优化方法流本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种加速存储读写数据输入输出的优化方法,其特征在于,包括以下步骤:将线程以及线程管理的队列进行初始化;按照负载均衡原则,将新任务插入至任一线程管理的队列中;建立任务对应的任务执行结构体与任务执行函数之间的映射关系,任务执行函数通过偏移量寻址任务参数,线程执行所管理的队列任务。2.根据权利要求1所述的一种加速存储读写数据输入输出的优化方法,其特征在于,所述将线程以及线程管理的队列进行初始化包括:将各线程分别绑定在预定的CPU核心上,以及将每个线程管理的队列初始化。3.根据权利要求1所述的一种加速存储读写数据输入输出的优化方法,其特征在于,所述预定的CPU核心为在存储控制器中用于处理数据输入输出任务的CPU核心。4.根据权利要求2所述的一种加速存储读写数据输入输出的优化方法,其特征在于,所述将每个线程管理的队列初始化后,首先在所述队列中插入必要任务;所述必要任务包括监听任务和侦测任务。5.根据权利要求1所述的一种加速存储读写数据输入输出的优化方法,其特征在于,所述按照负载均衡原则,将新任务插入至任一线程管理的队列中包括:第一线程将新任务插入至第一纵向队列中;第二线程将新任务插入至第二纵向队列中;第N线程将将新任务插入至第N纵向队列中。6.根据权利要求...

【专利技术属性】
技术研发人员:吴庆凯
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1