iSCSI的多核调度处理方法、系统、设备及储存介质与流程

文档序号:37076298发布日期:2024-02-20 21:30阅读:24来源:国知局
iSCSI的多核调度处理方法、系统、设备及储存介质与流程

本发明涉及数据储存,特别是涉及一种iscsi的多核调度处理方法、系统、设备及储存介质。


背景技术:

1、iscsi协议是一种新的存储技术,它是将scsi接口与以太网(ethernet)技术结合起来工作的,简单地说iscsi协议是将用户的请求转换成scsi规则编码,然后再将这些数据封装在ip包中以便在以太网中进行传输的协议。

2、iscsi技术的核心是在tcp/ip网络上传输scsi协议,是指用tcp/ip报文和iscsi报文封装scsi报文,使得scsi命令和数据可以在普通以太网络上进行传输。

3、iscsi协议定义了在tcp/ip网络发送、接收block(数据块)级的存储数据的规则和方法。发送端将scsi命令和数据封装到tcp/ip包中再通过网络转发,接收端收到tcp/ip包之后,将其还原为scsi命令和数据并执行,完成之后将返回的scsi命令和数据再封装到tcp/ip包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就像访问本地的scsi设备一样简单。

4、现在大部分以太网卡都支持多队列,而且服务器cpu的核心也非常多;而传统的方式,采用一个cpu核心去处理iscsi业务,未能充分发挥多cpu核心的性能;而且存储业务存在大量数据复制由cpu完成,因此非常考验cpu性能。充分利用cpu的多核,结合网卡的多队列能够充分地挖掘以太网卡,网络端口的性能。

5、现有方案主要包括以下两种:

6、1、单个cpu核心轮询从多个网络端口接收数据包,然后解析数据包,解析协议,根据协议处理io数据的收发。存储端所有的iscsi网络业务,都由同一个cpu核心在处理。这种情况下,iscsi业务处理的cpu核心非常繁忙,导致业务处理时间过长,限制了整个存储路径上其他模块性能的发挥。

7、2、预先分配多个cpu核心处理iscsi网络业务,每建立一个iscsi连接,就随机分配一个cpu核心与iscsi连接对应的socket进行绑定,所有iscsi网络业务共同使用同样的cpu核心。网卡驱动中将网络数据包dma到socket对应的缓存中,iscsi业务核心负责从socket缓冲区中接收数据包,对数据包协议头进行解析,根据协议对io进行处理和响应。

8、上述的数据储存方法,虽可以在一定程度上进行数据储存操作,但是在实际使用时却发现其方法中还存在有若干缺点,因未能达到最佳的使用效果,而其缺点可归纳如下:

9、(1)对于多cpu核心,多网络端口的存储系统而言,采用单个cpu处理所有网络端口的iscsi业务显然不合理。单个cpu核心负载过高,而浪费了其他空闲的cpu核心和网络端口的多队列。既没做到一个cpu核心处理一个端口,更没做到单个网络端口的多队列利用,完全限制了网卡性能的发挥。对于海量数据收发的存储应用而言,显然性能有限。

10、(2)为每一个iscsi连接分配一个cpu核心,虽然已经使用到了多核,可以发挥存储设备的多网络端口以及网络端口的多队列,但是随机分配会造成单个cpu核心处理的iscsi连接数不均匀,导致cpu负载过高或高低,这种方式会浪费存储设备的cpu资源。

11、由此可见,上述现有的数据储存方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。如何能创设一种新的多核数据储存方法,成为当前业界急需改进的目标。


技术实现思路

1、有鉴于此,本公开实施例提供一种iscsi的多核调度处理方法,至少部分解决现有技术中存在的问题。

2、第一方面,本公开实施例提供了一种iscsi的多核调度处理方法,所述方法包括以下步骤:

3、根据存储设备的cpu核心数量以及业务的使用场景确定用于iscsi业务的核心数量;

4、当target收到initiator端的连接请求时,开始为socket连接分配处理iscsi业务的cpu核心,包括:

5、判断当前cpu核心是否已经绑定相同iscsi网络端口的socket;其中,当当前cpu核心已经绑定相同iscsi网络端口的socket时,重新选择下一个cpu核心;

6、当当前cpu核心未绑定相同iscsi网络端口的socket时,将该socket与cpu核心绑定;以及,

7、当遍历到最后一个cpu核心,都未完成cpu核心选择和绑定时,选择绑定socket最少的cpu核心与socket绑定;

8、更新选定cpu核心的socket绑定信息。

9、根据本公开实施例的一种具体实现方式,所述根据存储设备的cpu核心数量以及业务的使用场景确定用于处理iscsi业务的核心数量,包括:

10、在cpu核心数范围内确定用于iscsi业务的cpu核心数;

11、根据一个iscsi业务端口由4个以上cpu核心处理,同时一个cpu核心处理不超过4个端口的socket,计算用于处理iscsi业务的核心数量。

12、根据本公开实施例的一种具体实现方式,所述方法还包括:开始socket连接分配cpu核心之前,根据绑定的socket数量使用排序算法对iscsi业务中可用的cpu核心进行从小到大排序。

13、根据本公开实施例的一种具体实现方式,所述排序算法为冒泡排序算法,包括:

14、依次比较相邻的两个cpu绑定的核心数是否为从小到大;如果不为从小到大,则交换位置,直到没有需要交换的元素为止。

15、根据本公开实施例的一种具体实现方式,所述方法还包括:记录cpu绑定的socket信息以及iscsi端口信息,供下次cpu分配使用。

16、根据本公开实施例的一种具体实现方式,允许多个socket连接绑定到同一个cpu核心。

17、第二方面,本公开实施例提供了一种iscsi的多核调度处理系统,所述系统包括:

18、核心数量确认模块,被配置用于根据存储设备的cpu核心数量以及业务的使用场景确定用于iscsi业务的核心数量;

19、核心分配模块,被配置用于当target收到initiator端的连接请求时,开始为socket连接分配处理iscsi业务的cpu核心,包括:

20、判断当前cpu核心是否已经绑定相同iscsi网络端口的socket;其中,当当前cpu核心已经绑定相同iscsi网络端口的socket时,重新选择下一个cpu核心;

21、当当前cpu核心未绑定相同iscsi网络端口的socket时,将该socket与cpu核心绑定;以及,

22、当遍历到最后一个cpu核心,都未完成cpu核心选择和绑定时,选择绑定socket最少的cpu核心与socket绑定;

23、更新模块,被配置用于更新选定cpu核心的socket绑定信息。

24、根据本公开实施例的一种具体实现方式,所述系统还包括:

25、排序模块,被配置用于开始socket连接分配cpu核心之前,根据绑定的socket数量使用排序算法对iscsi业务中可用的cpu核心进行从小到大排序。

26、第三方面,本公开实施例还提供了一种电子设备,该电子设备包括:

27、至少一个处理器;以及,

28、与所述至少一个处理器通信连接的存储器;其中,

29、所述存储器存储有能够被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器前述第一方面或第一方面的任一实现方式中的任一项所述的iscsi的多核调度处理方法。

30、第四方面,本公开实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行前述第一方面或第一方面的任一实现方式中的iscsi的多核调度处理方法。

31、第五方面,本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的iscsi的多核调度处理方法。

32、本公开实施例中的iscsi的多核调度处理方法,通过在cpu资源充足时候分配空闲cpu给iscsi业务,在无空闲cpu资源时候,将iscsi业务绑定到当前绑定iscsi业务最少的cpu核心上。致力于在减少浪费cpu资源的同时,尽量可能地利用存储设备多网络端口、网络端口多队列的性能,均衡各个cpu核心的iscsi业务负载。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1