一种基于游标指针的加权调度方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种基于游标指针的加权调度方法及装置。
【背景技术】
[0002]随着计算机技术的飞速发展,各个计算机之间包括多条通信链路,每一条通信链路的传输速度和承载能力各不相同。在计算机之间进行数据通信时,考虑到负载均衡问题,一般希望能够让传输速度快承担能力强的通信链路多承担一些数据流量,让传输速度慢承载能力弱的通信链路少承担一些数据流量,从而实现负载更均衡分配。
[0003]目前,一般采用如下方式实现负载均衡分配:每当接收到一个当前数据流量包时,在空闲的所有通信链路中逐个遍历每一个通信链路,将遍历到的权重属性值最大的通信链路作为当前数据流量包的传输链路。
[0004]然而,当通信链路的数量较大时,现有技术方案中逐个遍历每一个通信链路来实现通信链路的选择时,需要耗费较长的时间,从而影响数据流量包的传输效率。
【发明内容】
[0005]有鉴于此,本发明提供一种基于游标指针的加权调度方法及装置,以提高数据流量包的传输效率。
[0006]本发明实施例提供了一种基于游标指针的加权调度方法,包括:
[0007]S1:根据所有通信链路对象建立环形链表,并从所述环形链表中选择一个通信链路对象将其作为目标通信链路对象;
[0008]S2:将游标指针指向所述目标通信链路对象,并利用所述目标通信链路对象传输数据包;
[0009]S3:在所述目标通信链路对象达到设定条件时,以所述目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象,并利用当前的目标通信链路对象继续执行S2。
[0010]优选地,
[0011]进一步包括:预先为每一条通信链路对象设定权重属性值和运行权重属性值;其中,针对每一条通信链路对象所设定的权重属性值与运行权重属性值相等;
[0012]在利用所述目标通信链路对象传输数据包之后,进一步包括:每利用所述目标通信链路对象传输一次数据包,则执行一次将所述目标通信链路对象的运行权重属性值进行更新操作,以使更新后的运行权重属性值小于更新前的运行权重属性值,并在更新后的运行权重属性值满足设定值时,确定所述目标通信链路对象达到设定条件。
[0013]优选地,
[0014]所述执行一次将所述目标通信链路对象的运行权重属性值进行更新操作,包括:将所目标通信链路对象的运行权重属性值减I ;其中,所述设定值等于O。
[0015]优选地,在所述目标通信链路对象达到设定条件之后,在所述以所述目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象之前,进一步包括:
[0016]将所述目标通信链路对象的运行权重属性值更新为相应地权重属性值。
[0017]优选地,
[0018]所述以所述目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象,包括:以所述目标通信链路对象作为起点,以顺时针选择下一个通信链路对象作为当前的目标通信链路对象;
[0019]或,
[0020]所述以所述目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象,包括:以所述目标通信链路对象作为起点,以逆时针选择下一个通信链路对象作为当前的目标通信链路对象。
[0021]本发明实施例还提供了一种基于游标指针的加权调度装置,包括:
[0022]建立单元,用于根据所有通信链路对象建立环形链表,并从所述环形链表中选择一个通信链路对象将其作为目标通信链路对象;
[0023]处理单元,用于将游标指针指向所述目标通信链路对象,并利用所述目标通信链路对象传输数据包;
[0024]选择单元,用于在所述目标通信链路对象达到设定条件时,以所述目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象,并利用当前的目标通信链路对象触发所述处理单元继续执行操作。
[0025]优选地,
[0026]进一步包括:存储单元,用于预先为每一条通信链路对象存储权重属性值和运行权重属性值;其中,针对每一条通信链路对象所设定的权重属性值与运行权重属性值相等;
[0027]进一步包括:更新单元,用于每利用所述目标通信链路对象传输一次数据包,则执行一次将所述目标通信链路对象的运行权重属性值进行更新操作,以使更新后的运行权重属性值小于更新前的运行权重属性值,并在更新后的运行权重属性值满足设定值时,确定所述目标通信链路对象达到设定条件。
[0028]优选地,
[0029]所述更新单元,用于将所目标通信链路对象的运行权重属性值减I ;其中,所述设定值等于O。
[0030]优选地,所述更新单元,用于将所述目标通信链路对象的运行权重属性值更新为相应地权重属性值。
[0031]优选地,
[0032]所述选择单元,用于以所述目标通信链路对象作为起点,以顺时针选择下一个通信链路对象作为当前的目标通信链路对象;或,用于以所述目标通信链路对象作为起点,以逆时针选择下一个通信链路对象作为当前的目标通信链路对象。
[0033]本发明实施例提供了一种基于游标指针的加权调度方法及装置,通过根据所有通信链路对象建立环形链表,以利用游标指针所指向的通信链路对象确定当前正在使用的目标通信链路对象,并在将目标通信链路对象完成使用,在选择通信链路对象时不需要计算查找,直接选择环形链表上的下一个通信链路对象作为目标通信链路对象即可,从而使得在选择通信链路对象时处理速度是不变的,不会因通信链路对象的数量增多而影响处理速度,进而提高了数据流量包的传输效率。
【附图说明】
[0034]图1是本发明实施例提供的方法流程图;
[0035]图2是本发明另一实施例提供的方法流程图;
[0036]图3是本发明实施例提供的环形链表结构示意图;
[0037]图4是本发明实施例提供的current_link指向通信链路对象5的环形链表结构示意图;
[0038]图5是本发明实施例提供的current_link指向通信链路对象10的环形链表结构示意图;
[0039]图6是本发明实施例提供的装置所在设备的硬件架构图;
[0040]图7是本发明实施例提供的装置结构示意图;
[0041]图8是本发明另一实施例提供的装置结构示意图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]如图1所示,本发明实施例提供了一种基于游标指针的加权调度方法,该方法可以包括以下步骤:
[0044]步骤101:根据所有通信链路对象建立环形链表,并从环形链表中选择一个通信链路对象将其作为目标通信链路对象。
[0045]步骤102:将游标指针指向目标通信链路对象,并利用目标通信链路对象传输数据包。
[0046]步骤103:在目标通信链路对象达到设定条件时,以目标通信链路对象作为起点,以设定顺序选择下一个通信链路对象作为当前的目标通信链路对象,并利用当前的目标通信链路对象继续执行步骤102。
[0047]根据本方案,通过根据所有通信链路对象建立环形链表,以利用游标指针所指向的通信链路对象确定当前正在使用的目标通信链路对象,并在将目标通信链路对象完成使用,在选择通信链路对象时不需要计算查找,直接选择环形链表上的下一个通信链路对象作为目标通信链路对象即可,从而使得在选择通信链路对象时处理速度是不变的,不会因通信链路对象的数量增多而影响处理速度,进而提高了数据流量包的传输效率。
[0048]由于每一个通信链路对象的权重属性值不同,权重属性值越大,其通信链路对象可以转发的流量就会越大,因此,为了保证权重属性值越大的通信链路对象能够转发与其性能相匹配的流量,可以预先为每一条通信链路对象设定权重属性值和运行权重属性值;其中,针对每一条通信链路对象所设定的权重属性值与运行权重属性值相等。在环形链表上每利用目标通信链路对象传输一次数据包,则执行一次将目标通信链路对象的运行权重属性值进行更新操作,以使更新后的运行权重属性值小于更新前的运行权重属性值,并在更新后的运行权重属性值满足设定值时,确定目标通信链路对象达到设定条件。从而使得每一条通信链路对象被选择的次数不同,保证了权重属性值不同的通信链路