WO2014000569A1 - Queue scheduling method and system - Google Patents

Queue scheduling method and system Download PDF

Info

Publication number
WO2014000569A1
WO2014000569A1 PCT/CN2013/077072 CN2013077072W WO2014000569A1 WO 2014000569 A1 WO2014000569 A1 WO 2014000569A1 CN 2013077072 W CN2013077072 W CN 2013077072W WO 2014000569 A1 WO2014000569 A1 WO 2014000569A1
Authority
WO
WIPO (PCT)
Prior art keywords
pointer
scheduling
sub
unit
value
Prior art date
Application number
PCT/CN2013/077072
Other languages
French (fr)
Chinese (zh)
Inventor
袁蕴超
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2014000569A1 publication Critical patent/WO2014000569A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling

Definitions

  • the present invention relates to the field of communications technologies, and in particular, to a queue scheduling method and system.
  • QOS quality of service
  • the TM (Traffic Management) chip in the network acts as a chip for managing user bandwidth, and is responsible for scheduling all user queues, and its scheduling algorithm has an important impact on the performance of the QOS service.
  • the existing scheduling algorithm maintains two tables, namely: an active table and an appending table, and the scheduling process is as shown in FIG. 1.
  • each scheduling unit corresponds to a token (token) bucket, The queue is not empty, the token bucket is not empty, and the deficit (deficit) > 0 has the scheduled permissions.
  • the RR Red robin queues the scheduling unit and dequeues in sequence.
  • the scheduling unit dequeues once, the corresponding token bucket and deficit are subtracted from the dequeue data length. If defiitit ⁇ 0 is detected, the scheduling unit moves to the appending table, and the decifix of the scheduling unit increases the weight x Quantum.
  • weight is the scheduling weight of the current scheduling unit, and quantum is a fixed value, generally greater than 10000. If there is no schedulable unit in the current active table (that is, all scheduling units are moved to the appending table), or because token ⁇ 0 cannot be dequeued, the active/appending switching operation is performed. The current appending table becomes the active table, and the current active table becomes the appending table.
  • TM chips can support more than a thousand queues, even more than 256k, and also need to support hierarchical QOS, multiple levels of scheduling queues.
  • the scheduler and queue management templates must be separated, so there is a time lag between scheduling and final data dequeue.
  • each time the scheduling is a relatively long message then after learning the length of the dequeued message, it is found that the deficit or the token is less than 0. Even if the scheduling of the current scheduling unit is stopped immediately, and the generated schedule continues to take effect, a deficit or token overflow occurs.
  • the existing scheduling algorithm In order to prevent the deficit or token overflow, and to prevent the burst from scheduling longer data, the existing scheduling algorithm usually has a backpressure on the scheduler, that is, there must be a bandwidth-limited token bucket at the total exit, so that When the flow of the team is too large, or when the data is dispatched for a long period of time, the back pressure scheduler stops scheduling, and at the same time, the schedule that is less than the back pressure during the back pressure valid period is invalidated.
  • the inventor found that: Since the scheduling mode of the RR polling is sequential scheduling, in a round of RR polling, each scheduling unit can only get a scheduling opportunity, so that the existing one There are several problems with the queue algorithm:
  • the scheduling unit of the long message will obtain a larger dequeue bandwidth until it is selfed.
  • the deficit uses the light, and then it can only schedule the shorter scheduling unit.
  • the preset traffic is relatively small and the weight is relatively large, the active/appending switching time of one round will be longer, resulting in a larger traffic jitter.
  • the embodiments of the present invention provide a queue scheduling method and system, which can perform flexible scheduling according to a queue condition of a sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter when using RR polling scheduling. Scheduling unevenness and the problem of poor quality of service due to uneven scheduling.
  • a queue scheduling method in which all sub-scheduling units in the to-be-scheduled range are sequentially numbered, and the initial position of the starting pointer and the initial position of the tail pointer are selected within the to-be-tuned range, including:
  • the starting pointer position points to the position of the first valid sub-scheduling unit in the direction of the tail pointer position as the next scheduling pointer, and will be next
  • the queue in the sub-scheduling unit where the dispatch pointer is located is output once;
  • the start pointer position points to the position of the first valid sub-scheduling unit in the direction of the tail pointer position as the position of the next dispatch pointer, and
  • the queue in the sub-scheduling unit at the location where the next dispatch pointer is located is output once.
  • a scheduling system in which all sub-scheduling units within the to-be-scheduled range are sequentially numbered, and the initial position of the starting pointer and the initial position of the tail pointer have been selected in the to-be-scheduled range, including:
  • a scheduling pointer position selecting unit configured to select a position of a first valid sub-scheduling unit between the initial position of the current starting pointer and the initial position of the tail pointer, and the direction of the starting pointer position to the tail pointer position as the current scheduling pointer Location
  • a resident determining unit configured to determine, according to a state of a sub-scheduling unit at a location of the current scheduling pointer, whether the starting pointer resides, where the residing refers to moving the starting pointer to the current scheduling pointer
  • a start pointer shifting unit configured to: when determining that the start pointer resides, move the position of the start pointer to a position where the current dispatch pointer is located, or when determining that the start pointer does not reside And moving the position of the start pointer to a position of one sub-scheduling unit after the position of the current dispatch pointer in the direction from the start pointer position to the tail pointer position;
  • an output unit configured to output the queue in the sub-scheduling unit where the current scheduling pointer is located.
  • the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated.
  • the sub-scheduling unit is scheduled multiple times.
  • the embodiment of the present application provides the queue scheduling method, which can perform flexible scheduling according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter, uneven scheduling, and uneven scheduling caused by the RR polling scheduling.
  • FIG. 1 is a schematic flowchart of a queue scheduling method according to an embodiment of the present disclosure
  • FIG. 2 is a schematic flowchart of a detailed process of determining whether a start pointer resides according to an embodiment of the present disclosure
  • FIG. 3 is a schematic flowchart of determining a value of a resident parameter according to a weight value according to an embodiment of the present disclosure
  • FIG. 5 is a schematic flowchart of another queue scheduling method according to an embodiment of the present disclosure.
  • FIG. 6 is a schematic structural diagram of a queue scheduling system according to an embodiment of the present disclosure.
  • FIG. 7 is a schematic structural diagram of a resident determining unit according to an embodiment of the present disclosure.
  • FIG. 8 is a schematic structural diagram of a resident computing unit according to an embodiment of the present disclosure.
  • FIG. 9 is a schematic structural diagram of a resident parameter adjustment unit according to an embodiment of the present application.
  • FIG. 10 is a schematic structural diagram of another queue scheduling system according to an embodiment of the present application.
  • FIG. 1 is a schematic flowchart of a queue scheduling method according to an embodiment of the present disclosure.
  • all sub-scheduling units within the to-be-scheduled range are sequentially set with numbers, and the initial position of the starting pointer and the initial position of the tail pointer are pre-selected within the to-be-scheduled range.
  • the method includes the following steps:
  • S 100 Select the position of the scheduling pointer, and output the queue in the sub-scheduling unit where the current scheduling pointer is located.
  • the position of the first valid sub-scheduling unit located between the current starting pointer position and the tail pointer position and pointing to the tail pointer position along the starting pointer position is selected as the position of the current scheduling pointer.
  • the current start pointer and the current tail pointer are included, that is, If the sub-scheduling unit of the current starting pointer position is valid, then when the scheduling pointer is selected for the first time, the current starting pointer position is selected as the position of the scheduling pointer, that is, the position of the scheduling pointer and the current starting pointer will coincide.
  • S200 Determine whether the start pointer resides according to the queue length of the sub-scheduling unit where the current scheduling pointer is located.
  • Residing here means that the start pointer moves to the position of the current dispatch pointer, and the start pointer is moved to the position of the current dispatch pointer, so that the position of the start pointer coincides with the position of the current dispatch pointer, then the next time the dispatch pointer is selected
  • the position of the current dispatch pointer will still be selected as the position of the next scheduled pointer, that is, by determining whether the start pointer is resident, it can be determined whether the sub-scheduling of the current pointer position is required.
  • the unit performs repeated scheduling.
  • S300 When it is judged in this step that the start pointer is resident, S300 is performed; when it is judged in this step that the start pointer is not resident, S400 is performed.
  • the purpose of the relocation is to make the position of the start pointer coincide with the position of the current dispatch pointer.
  • the location of the current scheduling pointer does not coincide with the location of the current starting pointer, when determining that the starting pointer resides, the location of the current starting pointer needs to be moved to the current scheduling pointer. position.
  • the position of the current dispatch pointer and the position of the current start pointer are originally coincident, when the start pointer is determined to be resident, the position of the current start pointer can be directly maintained without moving, Of course, it can also be considered that the moving position of the current starting pointer is 0.
  • S400 Move the position of the start pointer to the position of one of the sub-scheduling units after the position of the current dispatch pointer in the direction of the start pointer position to the tail pointer position.
  • the sub-scheduling unit at the position where the current scheduling pointer is located does not need to be repeatedly scheduled, then the next sub-scheduling needs to be scheduled along the initial position of the starting pointer to the initial position of the tail pointer. unit.
  • the position of the start pointer is moved to the position of the current dispatch pointer and then shifted to the position of the sub-scheduling unit, so that the next time the position of the dispatch pointer is selected, the sub-scheduling unit after the current dispatch pointer is necessarily selected.
  • S500 Select the position of the next scheduling pointer, and output the queue in the sub-scheduling unit where the next scheduling pointer is located.
  • the selection principle is the same as that in the above S100, and the first position between the pointer position and the tail pointer position after the shift is selected, and the position of the starting pointer position after the shift is directed to the direction of the tail pointer position.
  • a valid sub-scheduling unit is used as the location of the next dispatch pointer.
  • the position of the start pointer will coincide with the position of the current dispatch pointer. Therefore, the position of the next scheduled pointer is still the current dispatch pointer, that is, the scheduling is repeated for a certain scheduling subunit.
  • the queue scheduling method determines whether the start pointer is resident or not after scheduling the child scheduling unit at the location of the current scheduling pointer. When it is judged that the start pointer resides, the child scheduling unit at the position where the current dispatch pointer is located is scheduled again. That is, the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated. The sub-scheduling unit is scheduled multiple times.
  • the embodiment of the present application provides the queue scheduling method, which can perform flexible scheduling according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter, uneven scheduling, and scheduling due to the RR polling scheduling. Uniformity causes problems in service quality. Yet another embodiment:
  • the queue lengths of all the sub-scheduling units in the to-be-scheduled range are represented by four states, namely: a first state, a second state, and a third State and fourth state, where:
  • the first state indicates that the sub-scheduling unit is empty; the second state indicates that the sub-scheduling unit has a small number of packets, and there may be a situation in which the sub-scheduling unit may be emptied; and the third state indicates that the sub-scheduling unit may continue in the case of no scheduling backpressure Scheduling; fourth state, indicating that the sub-scheduling unit has overflowed.
  • the other two states can be adjusted according to actual conditions.
  • the resident parameter is used to indicate whether the start pointer resides, specifically:
  • the resident parameter When the resident parameter is the first value, it means that the starting pointer does not reside; when the resident parameter is the second value, it means that the starting pointer resides.
  • FIG. 2 is a schematic flowchart of determining whether a start pointer resides according to an embodiment of the present application.
  • determining whether the starting pointer resides includes the following steps: S201: Determine the status of the sub-scheduling unit where the current scheduling pointer is located.
  • the state of the sub-scheduling unit is determined according to the length of the queue in the sub-scheduling unit where the current scheduling pointer is located.
  • the resident parameter is set to the first value
  • S203 Determine whether the child scheduling unit at the location where the current scheduling pointer is located is scheduled for the first time.
  • the sub-scheduling unit at the location where the current scheduling pointer is located is in the third state, it is determined whether the sub-scheduling unit at the location of the current scheduling pointer is scheduled for the first time. Determining whether the result of the first scheduling unit of the current scheduling pointer is scheduled may be used as a basis for scheduling the sub-scheduling unit at the location of the current scheduling pointer.
  • the step may include:
  • S301 Determine a random number range including a weight value according to the weight value, and randomly generate a random number in the random number range;
  • S304 When the value of the random number is greater than the weight value, the value of the resident parameter is set to the first value.
  • the value of the resident parameter is set to the second value, and the value of the resident parameter is reset according to the scheduling back pressure during the scheduling process.
  • resetting the value of the resident parameter according to the scheduling backpressure during the scheduling process may include the following steps:
  • S401 Compare the number of times the sub-scheduling unit at the location of the current scheduling pointer is scheduled with a preset maximum value, and determine whether a scheduling backpressure occurs.
  • the preset maximum value is less than or equal to the ratio of the longest packet length scheduled in the current sub-scheduling unit to the shortest packet length scheduled from the current sub-scheduling unit.
  • S402 If the number of times that the sub-scheduling unit at the current scheduling pointer is scheduled is less than a preset maximum value, and no scheduling back pressure occurs, determining a value of the resident parameter according to the weight value.
  • S403 Set the value of the resident parameter to the first value.
  • the value of the resident parameter is set to the first value.
  • how to determine whether to repeat scheduling the sub-scheduling unit at the location where the current scheduling pointer is located is determined according to the queue length in the sub-scheduling unit where the current scheduling pointer is located. Therefore, the flexible scheduling can be performed according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the problem that the existing traffic jitter, scheduling unevenness, and service quality deteriorate due to uneven scheduling when using RR polling scheduling.
  • the present application provides another queue scheduling method, so that all sub-scheduling units within the scheduling range can be re-scheduled.
  • FIG. 5 is a schematic flowchart diagram of another queue scheduling method according to an embodiment of the present disclosure.
  • the queue scheduling method may further include:
  • S600 Determine whether the position of the start pointer coincides with the position of the tail pointer.
  • S700 Move the start pointer to the initial position of the start pointer when the position of the start pointer coincides with the position of the tail pointer.
  • the method provided by the embodiment of the present application may move the position of the start pointer to the initial position of the start pointer after one scheduling is completed, and then all the child scheduling units may be scheduled again after one scheduling is completed.
  • FIG. 6 is a schematic structural diagram of a queue scheduling system according to an embodiment of the present application.
  • all sub-scheduling units within the to-be-scheduled range are sequentially set with numbers, and the initial position of the starting pointer and the initial position of the tail pointer are pre-selected within the to-be-scheduled range.
  • the queue scheduling system includes: a scheduling pointer location selecting unit 1, a resident determining unit 2, The pointer shift unit 3 and the output unit 4 are started.
  • the dispatch pointer position selecting unit 1 is configured to select the position of the first valid sub-scheduling unit between the initial position of the current starting pointer and the initial position of the tail pointer, and the direction of the starting pointer position to the tail pointer position as the current scheduling pointer. position.
  • the current start pointer and the current tail pointer are included, that is, if the child scheduling unit of the current start pointer position is valid, then when the schedule pointer is selected for the first time, it is selected.
  • the current starting pointer position is used as the position of the dispatch pointer, that is, the position of the dispatch pointer and the current start pointer will coincide.
  • the resident judging unit 2 is configured to determine, according to the state of the sub-scheduling unit at the location of the current scheduling pointer, whether the starting pointer resides after the scheduling pointer location selecting unit 1 selects the location of the current scheduling pointer.
  • the start pointer shifting unit 3 is configured to move the position of the start pointer to the position of the current dispatch pointer when the resident judgment unit determines that the start pointer resides.
  • the purpose of the relocation is to make the position of the starting pointer coincide with the position of the current dispatch pointer.
  • the location of the current scheduling pointer does not coincide with the location of the current starting pointer, when determining that the starting pointer resides, the location of the current starting pointer needs to be moved to the current scheduling pointer. position.
  • the position of the current dispatch pointer and the position of the current start pointer are originally coincident, when the start pointer is determined to be resident, the position of the current start pointer can be directly maintained without moving, Of course, it can also be considered that the moving position of the current starting pointer is 0.
  • the output unit 4 is configured to output the queue of the sub-scheduling unit at the location of the current scheduling pointer once after selecting the location of the current scheduling pointer.
  • the system After scheduling the sub-scheduling unit at the location of the current scheduling pointer, the system determines whether the starting pointer resides on the state of the sub-scheduling unit at the location of the current scheduling pointer, and when determining that the starting pointer resides, The sub-scheduling unit at the location where the current dispatch pointer is located is scheduled. That is, the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated. The sub-scheduling unit is scheduled multiple times. Yet another embodiment:
  • the queue lengths of all the sub-scheduling units in the to-be-scheduled range are represented by four states, namely: a first state, a second state, and a third State And a fourth state, where:
  • the first state indicates that the sub-scheduling unit is empty; the second state indicates that the sub-scheduling unit has a small number of packets, and there may be a situation in which the sub-scheduling unit may be emptied; and the third state indicates that the sub-scheduling unit may continue in the case of no scheduling backpressure Scheduling; fourth state, indicating that the sub-scheduling unit has overflowed.
  • the other two states can be adjusted according to actual conditions.
  • FIG. 7 is a schematic structural diagram of a resident determination unit according to an embodiment of the present application.
  • the resident determining unit 2 includes: a state determining unit 21, a first scheduling determining unit 22, a resident probability calculating unit 23, a resident parameter value setting unit 24, and a resident.
  • Parameter adjustment unit 25 As shown in FIG. 7, in the embodiment of the present application, the resident determining unit 2 includes: a state determining unit 21, a first scheduling determining unit 22, a resident probability calculating unit 23, a resident parameter value setting unit 24, and a resident. Parameter adjustment unit 25.
  • the state determining unit 21 is for determining the state of the child scheduling unit at the location where the current scheduling pointer is located. When determining, the state of the sub-scheduling unit is determined according to the length of the queue in the sub-scheduling unit where the current scheduling pointer is located.
  • the first scheduling determining unit 22 is configured to determine whether to schedule the sub-scheduling unit at the location of the current scheduling pointer for the first time. Determining whether the result of the first scheduling of the sub-scheduling unit at the location where the current scheduling pointer is located may be used as a basis for scheduling the sub-scheduling unit at the location of the current scheduling pointer.
  • the resident probability calculation unit 23 is configured to determine, based on the weight value, whether the start pointer resides at the position of the current start pointer.
  • the resident calculation unit 23 may include: a random number generation unit 31, a second comparison unit 32, and a resident probability calculation sub-unit 33, where:
  • the random number range generating unit 31 is configured to determine a random number range including the weight value according to the weight value, and randomly generate a random number in the random number range;
  • the second comparison unit 32 is configured to compare the value of the random number with the weight value
  • the resident probability calculation sub-unit 33 is configured to calculate whether the start pointer resides according to the comparison result of the second comparison unit 32, and when the value of the random number is less than or equal to the weight value, indicating that the start pointer resides; when the value of the random number is greater than the weight A value indicating that the starting pointer does not reside.
  • the resident parameter value setting unit 23 is configured to set the resident parameter to the first value when the state of the sub-scheduling unit at the position where the current scheduling pointer is located is the first state or the second state;
  • the value of the resident parameter is set to the first value
  • the resident parameter is set to the first value or the second value according to the calculation result of the resident probability calculation unit;
  • the value of the resident parameter is set to the second value.
  • the resident parameter adjustment unit 25 is configured to set the value of the resident parameter to the second value when the sub-scheduling unit at the location where the current scheduling pointer is located, and reset the resident according to the scheduling back pressure during the scheduling process. Leave the value of the parameter.
  • the resident parameter adjustment unit 24 may include: a first comparison unit
  • the first comparing unit 41 is configured to compare the number of times the sub-scheduling unit of the current scheduling pointer is scheduled with the preset maximum value
  • the scheduling back pressure detecting unit 42 is configured to detect whether a back pressure occurs during the scheduling process.
  • the resident parameter value setting unit 24 sets the resident parameter according to the calculation result of the resident probability calculation unit 23 to The first value or the second value, otherwise the value of the resident parameter is set to the first value.
  • the preset maximum value is less than or equal to the ratio of the longest packet length scheduled in the current sub-scheduling unit to the shortest packet length scheduled from the current sub-scheduling unit.
  • the present application provides another queue scheduling method, so that all sub-scheduling units within the scheduling range can be re-scheduled.
  • FIG. 10 is a schematic structural diagram of another queue scheduling system according to an embodiment of the present application.
  • the queue scheduling system may further include: a position determining unit 5 and an initializing unit 6, wherein: the position determining unit 5 is configured to determine whether the position of the starting pointer coincides with the position of the tail pointer.
  • the position determining unit 5 is configured to determine whether the position of the starting pointer coincides with the position of the tail pointer.
  • the initializing unit 6 is configured to move the starting pointer to the initial position of the starting pointer after the position of the starting pointer coincides with the position of the tail pointer. Moving the starting pointer to its initial position means that all child scheduling units within the scheduling range can be scheduled again.
  • the system provided by the embodiment of the present application can move the position of the start pointer to the initial position of the start pointer after one scheduling is completed, and then all the child scheduling units can be scheduled again after one scheduling is completed.
  • the above devices are described separately by function into various units.
  • the functions of the various units may be implemented in one or more software and/or hardware in the implementation of the present application.
  • the present application can be implemented by means of software plus a necessary general hardware platform. Based on such understanding, the technical solution of the present application, which is essential or contributes to the prior art, may be embodied in the form of a software product, which may be stored in a storage medium such as a ROM/RAM or a disk. , an optical disk, etc., includes instructions for causing a computer device (which may be a personal computer, server, or network device, etc.) to perform the methods described in various embodiments of the present application or portions of the embodiments.
  • a computer device which may be a personal computer, server, or network device, etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Disclosed are a queue scheduling method and system. The method comprises: selecting a position of a current scheduling pointer, and outputting a queue in a sub-scheduling unit at the position of the current scheduling pointer once; determining whether a start pointer camps; when it is determined that the start pointer camps, moving the start pointer to the position of the current scheduling pointer, and when it is determined that the start pointer does not camp, moving the start pointer to a position of a sub-scheduling unit following the position of the current scheduling pointer along a direction from the position of the start pointer to a position of a tail pointer; and after moving the start pointer, picking a position of a next scheduling pointer, and outputting a queue in a sub-scheduling unit at the position of the next scheduling pointer once. The method is capable of implementing flexible scheduling based on the queue situation of sub-scheduling units to be scheduled, so as to solve the problems of flow jitter and scheduling unevenness during RR pooling scheduling as well as the deterioration of the quality of service resulting from the scheduling unevenness in the prior art.

Description

一种队列调度方法及系统 技术领域 本申请涉及通讯技术领域, 特别是涉及一种队列调度方法及系统。  The present invention relates to the field of communications technologies, and in particular, to a queue scheduling method and system.
背景技术 QOS (quality of service) 是指网络通讯过程中, 网络设备需要保证用户在丢包率、 延迟、 抖动和带宽等方面获得可预期的服务水平。 该特性对于运营商分配网络资源, 细 化服务水平, 提高运营利润有着非常重要的作用。在网络中的 TM (Traffic management, 队列管理) 芯片作为管理用户带宽的芯片, 负责对所有的用户队列进行调度, 并且其调 度算法对于 QOS业务的性能有着重要的影响。 BACKGROUND OF THE INVENTION QOS (quality of service) refers to a network communication process in which a network device needs to ensure a user's expected service level in terms of packet loss rate, delay, jitter, and bandwidth. This feature plays an important role in the allocation of network resources by operators, refining service levels, and improving operating profit. The TM (Traffic Management) chip in the network acts as a chip for managing user bandwidth, and is responsible for scheduling all user queues, and its scheduling algorithm has an important impact on the performance of the QOS service.
现有的调度算法维护两张表, 分别为: active表和 appending表, 调度的流程如图 1 所示, 对于 active表中的调度单元, 每个调度单元对应一个 token (令牌) 桶, 在队列 不为空, token桶也不为空, 且 deficit (赤字) >0的情况下, 具有了被调度的权限。 调 度器 RR (Round robin, 队列管理) 轮询调度单元, 顺序出队。 在调度时, 当调度单元 出队一次, 对应的 token桶和 deficit减去出队数据长度, 如果检测到 deficit<0, 则该调 度单元移动到 appending表中, 同时该调度单元的 deficit增加 weight x quantum。 这里 weight为当前调度单元的调度权重, quantum为一个固定值, 一般大于 10000。 而如果 当前 active表中,已经没有可调度单元(即所有的调度单元都被移动到 appending表中), 或者是因为 token<0不能出队, 则进行 active/appending倒换操作。 当前 appending表变 成 active表, 而当前 active表变成 appending表。  The existing scheduling algorithm maintains two tables, namely: an active table and an appending table, and the scheduling process is as shown in FIG. 1. For the scheduling unit in the active table, each scheduling unit corresponds to a token (token) bucket, The queue is not empty, the token bucket is not empty, and the deficit (deficit) > 0 has the scheduled permissions. The RR (Round robin) queues the scheduling unit and dequeues in sequence. During scheduling, when the scheduling unit dequeues once, the corresponding token bucket and deficit are subtracted from the dequeue data length. If defiitit<0 is detected, the scheduling unit moves to the appending table, and the decifix of the scheduling unit increases the weight x Quantum. Here weight is the scheduling weight of the current scheduling unit, and quantum is a fixed value, generally greater than 10000. If there is no schedulable unit in the current active table (that is, all scheduling units are moved to the appending table), or because token<0 cannot be dequeued, the active/appending switching operation is performed. The current appending table becomes the active table, and the current active table becomes the appending table.
现有的 TM芯片可以支持的队列数量都在千条以上, 甚至达到 256k以上, 并且同 时还需要支持层次化 QOS, 多个层级的调度队列。在这种需求下, 调度器和队列管理模 板必然是分离的, 这样在调度产生与最终数据出队之间就会有一个时间上的延迟。 而在 某些特定的调度情况时, 例如每次调度都是比较长的报文, 那么在得知出队报文长度的 同时又发现 deficit (赤字) 或者 token (令牌) 已经小于 0, 此时即使立刻停止当前调度 单元的调度,而已经产生的调度如果继续生效,就会出现 deficit或者 token溢出的情况。  Existing TM chips can support more than a thousand queues, even more than 256k, and also need to support hierarchical QOS, multiple levels of scheduling queues. Under this demand, the scheduler and queue management templates must be separated, so there is a time lag between scheduling and final data dequeue. In some specific scheduling situations, for example, each time the scheduling is a relatively long message, then after learning the length of the dequeued message, it is found that the deficit or the token is less than 0. Even if the scheduling of the current scheduling unit is stopped immediately, and the generated schedule continues to take effect, a deficit or token overflow occurs.
为了防止 deficit或者 token溢出, 并且为了防止突发调度较长数据, 现有的调度算 法通常在调度器上还有一个反压, 即在总的出口必须有一个带宽限制的 token桶, 这样 当出队流量过大, 或者突发调度较长数据时, 就反压调度器停止调度, 同时将反压有效 期内来不及反压的调度无效化。 而通过对现有技术的研究, 发明人发现: 由于 RR轮询的调度方式为依次调度, 所 以在一轮 RR轮询中, 每个调度单元只能得到一次调度的机会, 这样现有的这种队列算 法就存在以下几个问题: In order to prevent the deficit or token overflow, and to prevent the burst from scheduling longer data, the existing scheduling algorithm usually has a backpressure on the scheduler, that is, there must be a bandwidth-limited token bucket at the total exit, so that When the flow of the team is too large, or when the data is dispatched for a long period of time, the back pressure scheduler stops scheduling, and at the same time, the schedule that is less than the back pressure during the back pressure valid period is invalidated. Through the research on the prior art, the inventor found that: Since the scheduling mode of the RR polling is sequential scheduling, in a round of RR polling, each scheduling unit can only get a scheduling opportunity, so that the existing one There are several problems with the queue algorithm:
1 )、 当某些调度单元的报文长度都比较长, 其他的调度单元报文长度都比较短, 那么调度时,长报文的调度单元就会获得比较大的出队带宽,直到把自己的 deficit用光, 然后就只能调度报文比较短的调度单元了。 而在这种情况下, 如果预先设定的流量比较 小, 且权重比较大时, 一轮的 active/appending倒换的时间久会比较长, 进而导致流量 抖动比较大。  1), when the packet length of some scheduling units is relatively long, and the lengths of other scheduling units are relatively short, then in scheduling, the scheduling unit of the long message will obtain a larger dequeue bandwidth until it is selfed. The deficit uses the light, and then it can only schedule the shorter scheduling unit. In this case, if the preset traffic is relatively small and the weight is relatively large, the active/appending switching time of one round will be longer, resulting in a larger traffic jitter.
2)、 当所有的调度单元都是长包的情况时, 此时某一个调度单元的调度生效, 成功 出队的时候, 就必然会引起反压调度, 并且下面的一个调度单元的出队调度就被取消, 这样就浪费了一次 RR轮询的机会。 虽然有可能通过缓存调度的方法来解决调度反压的 问题, 但是通常大规模用户队列的调度结果都需要在固定的时间返回调度结果, 用以刷 新队列状态, 所以一般不能缓存调度。 而在队列比较多的情况下, 一轮 active/appending 倒换的时间会比较长, 而且如果 deficit都够用的时候, 有可能总是取消某些调度单元的 调度, 造成调度不均匀。 同时因为大规模用户队列有的用户迟迟不能得到调度, 会造成 队列管理的难度, 造成用户的连接断开, 服务质量变差。  2) When all the scheduling units are long packets, the scheduling of one scheduling unit takes effect at this time. When the team is successfully dequeued, it will inevitably cause back pressure scheduling, and the following scheduling unit is dispatched. It was cancelled, which wasted an opportunity for RR polling. Although it is possible to solve the problem of scheduling backpressure through the method of buffer scheduling, usually the scheduling result of the large-scale user queue needs to return the scheduling result at a fixed time to refresh the queue state, so the scheduling cannot be generally cached. In the case of a large number of queues, a round of active/appending switching will take a long time, and if the deficit is sufficient, it is possible to always cancel the scheduling of some scheduling units, resulting in uneven scheduling. At the same time, because some users of large-scale user queues can't get scheduled, it will cause difficulty in queue management, causing the user's connection to be disconnected and the service quality to deteriorate.
发明内容 有鉴于此, 本申请实施例提供一种队列调度方法及系统, 可以根据待调度的子调度 单元的队列情况进行灵活调度, 以解决现有的采用 RR轮询调度时存在的流量抖动、 调 度不均匀以及由于调度不均匀而导致服务质量变差的问题。 SUMMARY OF THE INVENTION In view of this, the embodiments of the present invention provide a queue scheduling method and system, which can perform flexible scheduling according to a queue condition of a sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter when using RR polling scheduling. Scheduling unevenness and the problem of poor quality of service due to uneven scheduling.
为了实现上述目的, 本申请实施例提供的技术方案如下:  In order to achieve the above objectives, the technical solutions provided by the embodiments of the present application are as follows:
一种队列调度方法, 待调度范围内的所有子调度单元依次设置有编号, 并且在待调 度范围内已选取起始指针的初始位置和尾指针的初始位置, 包括:  A queue scheduling method, in which all sub-scheduling units in the to-be-scheduled range are sequentially numbered, and the initial position of the starting pointer and the initial position of the tail pointer are selected within the to-be-tuned range, including:
选取当前起始指针的初始位置与尾指针初始位置之间、且沿所述起始指针位置指向 尾指针位置方向上第一个有效的子调度单元的位置作为调度指针的位置, 并将当前调度 指针所在位置的子调度单元中的队列输出一次;  Selecting the position of the first valid sub-scheduling unit between the initial position of the current starting pointer and the initial position of the tail pointer and pointing to the position of the tail pointer along the starting pointer position as the position of the scheduling pointer, and the current scheduling The queue in the sub-scheduling unit where the pointer is located is output once;
根据所述当前调度指针所在位置的子调度单元的队列长度判断所述起始指针是否 驻留, 所述驻留是指所述起始指针移动到所述当前调度指针所在位置;  Determining, according to the queue length of the sub-scheduling unit where the current scheduling pointer is located, whether the starting pointer is resident, and the residing means that the starting pointer moves to a location where the current scheduling pointer is located;
当判断所述起始指针驻留时, 将所述起始指针的位置移动到当前调度指针所在位 置, 且选取移位后所述始指针位置与尾指针位置之间、 且沿移位后所述起始指针位置指 向尾指针位置方向上第一个有效的子调度单元作为下一个调度指针的位置, 并将下一个 调度指针所在位置的子调度单元中的队列输出一次; When it is determined that the start pointer resides, move the position of the start pointer to the position of the current dispatch pointer, and select between the start pointer position and the tail pointer position after the shift, and after the shift The starting pointer position points to the position of the first valid sub-scheduling unit in the direction of the tail pointer position as the next scheduling pointer, and will be next The queue in the sub-scheduling unit where the dispatch pointer is located is output once;
当判断所述起始指针不驻留时,将所述起始指针的位置移动到沿起所述始指针位置 指向尾指针位置方向上当前调度指针所在位置后一位子调度单元的位置, 并选取移位后 所述始指针位置与尾指针位置之间、且沿移位后所述起始指针位置指向尾指针位置方向 上第一个有效的子调度单元作为下一个调度指针的位置, 并将下一个调度指针所在位置 的子调度单元中的队列输出一次。  When it is determined that the start pointer does not reside, moving the position of the start pointer to a position of a sub-scheduling unit after the position of the current dispatch pointer in the direction from the start pointer position to the tail pointer position, and selecting After shifting, between the start pointer position and the tail pointer position, and after the shift, the start pointer position points to the position of the first valid sub-scheduling unit in the direction of the tail pointer position as the position of the next dispatch pointer, and The queue in the sub-scheduling unit at the location where the next dispatch pointer is located is output once.
一种调度系统, 待调度范围内的所有子调度单元依次设置有编号, 并且在待调度范 围内已选取起始指针的初始位置和尾指针的初始位置, 包括:  A scheduling system, in which all sub-scheduling units within the to-be-scheduled range are sequentially numbered, and the initial position of the starting pointer and the initial position of the tail pointer have been selected in the to-be-scheduled range, including:
调度指针位置选取单元, 用于选取当前起始指针初始位置与尾指针初始位置之间、 且沿起始指针位置指向尾指针位置方向上第一个有效的子调度单元的位置作为当前调 度指针的位置;  a scheduling pointer position selecting unit, configured to select a position of a first valid sub-scheduling unit between the initial position of the current starting pointer and the initial position of the tail pointer, and the direction of the starting pointer position to the tail pointer position as the current scheduling pointer Location
驻留判断单元,用于根据所述当前调度指针所在位置的子调度单元的状态判断所述 起始指针是否驻留, 所述驻留是指所述起始指针移动到所述当前调度指针所在位置; 起始指针移位单元, 用于当判断所述起始指针驻留时, 将所述起始指针的位置移动 到当前调度指针所在位置, 或者, 当判断所述起始指针不驻留时, 将所述起始指针的位 置移动到沿起所述始指针位置指向尾指针位置方向上当前调度指针所在位置后一位子 调度单元的位置;  a resident determining unit, configured to determine, according to a state of a sub-scheduling unit at a location of the current scheduling pointer, whether the starting pointer resides, where the residing refers to moving the starting pointer to the current scheduling pointer a start pointer shifting unit, configured to: when determining that the start pointer resides, move the position of the start pointer to a position where the current dispatch pointer is located, or when determining that the start pointer does not reside And moving the position of the start pointer to a position of one sub-scheduling unit after the position of the current dispatch pointer in the direction from the start pointer position to the tail pointer position;
输出单元, 用于将所述当前调度指针所在位置的子调度单元中的队列输出一次。 由以上技术方案可见, 本申请实施例提供的该队列调度方法, 在对当前调度指针所 在位置的子调度单元进行调度后,会对对当前调度指针所在位置的子调度单元的状态进 行判断起始指针是否驻留, 当判断起始指针驻留时, 再次对当前调度指针所在位置的子 调度单元进行调度。即该方法可以根据当前调度指针所在位置的子调度单元的队列长度 来确定调度的次数, 这样使得在调度时, 不再是对每一个子调度单元依次调度, 而可以 对待调度方位内的某一个子调度单元有针对性地多次调度。  And an output unit, configured to output the queue in the sub-scheduling unit where the current scheduling pointer is located. It can be seen from the foregoing technical solution that the queue scheduling method provided by the embodiment of the present application determines the state of the sub-scheduling unit at the location of the current scheduling pointer after scheduling the sub-scheduling unit at the location where the current scheduling pointer is located. Whether the pointer resides or not, when it is judged that the starting pointer resides, the child scheduling unit at the position where the current scheduling pointer is located is scheduled again. That is, the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated. The sub-scheduling unit is scheduled multiple times.
因此本申请实施例提供该队列调度方法,可以根据待调度的子调度单元的队列情况 进行灵活调度, 以解决现有的采用 RR轮询调度时存在的流量抖动、 调度不均匀以及由 于调度不均匀而导致服务质量变差的问题。  Therefore, the embodiment of the present application provides the queue scheduling method, which can perform flexible scheduling according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter, uneven scheduling, and uneven scheduling caused by the RR polling scheduling. The problem that leads to poor service quality.
附图说明 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有 技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 申请中记载的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提 下, 还可以根据这些附图获得其他的附图。 BRIEF DESCRIPTION OF THE DRAWINGS In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the drawings used in the embodiments or the prior art description will be briefly described below, and obviously, in the following description The drawing is only this Some of the embodiments described in the application can be obtained by those of ordinary skill in the art from the drawings without departing from the drawings.
图 1为本申请实施例提供的一种队列调度方法的流程示意图;  FIG. 1 is a schematic flowchart of a queue scheduling method according to an embodiment of the present disclosure;
图 2为本申请实施例提供的判断起始指针是否驻留的详细流程示意图; 图 3为本申请实施例提供的根据权重值确定驻留参数的值的详细流程示意图; 图 4 为本申请实施例提供的根据调度反压重新设定驻留参数的值的详细流程示意 图;  FIG. 2 is a schematic flowchart of a detailed process of determining whether a start pointer resides according to an embodiment of the present disclosure; FIG. 3 is a schematic flowchart of determining a value of a resident parameter according to a weight value according to an embodiment of the present disclosure; A detailed flow diagram of resetting the value of the resident parameter according to the scheduled back pressure provided by the example;
图 5为本申请实施例提供的另一种队列调度方法的流程示意图;  FIG. 5 is a schematic flowchart of another queue scheduling method according to an embodiment of the present disclosure;
图 6为本申请实施例提供的一种队列调度系统的结构示意图;  FIG. 6 is a schematic structural diagram of a queue scheduling system according to an embodiment of the present disclosure;
图 7为本申请实施例提供的驻留判断单元的结构示意图;  FIG. 7 is a schematic structural diagram of a resident determining unit according to an embodiment of the present disclosure;
图 8为本申请实施例提供的驻留计算单元的结构示意图;  FIG. 8 is a schematic structural diagram of a resident computing unit according to an embodiment of the present disclosure;
图 9为本申请实施例提供的驻留参数调整单元的结构示意图;  FIG. 9 is a schematic structural diagram of a resident parameter adjustment unit according to an embodiment of the present application;
图 10为本申请实施例提供的另一种队列调度系统的结构示意图。  FIG. 10 is a schematic structural diagram of another queue scheduling system according to an embodiment of the present application.
具体实施方式 为了使本技术领域的人员更好地理解本申请中的技术方案, 下面将结合本申请实施 例中的附图, 对本申请实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实 施例仅仅是本申请一部分实施例, 而不是全部的实施例。 基于本申请中的实施例, 本领 域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都应当属于本 申请保护的范围。 一个实施例: DETAILED DESCRIPTION OF THE EMBODIMENTS In order to make those skilled in the art better understand the technical solutions in the present application, the technical solutions in the embodiments of the present application will be clearly and completely described in the following with reference to the accompanying drawings in the embodiments of the present application. The described embodiments are only a part of the embodiments of the present application, and not all of the embodiments. All other embodiments obtained by a person of ordinary skill in the art based on the embodiments of the present application without departing from the inventive scope are intended to be within the scope of the application. An embodiment:
图 1为本申请实施例提供的一种队列调度方法的流程示意图。  FIG. 1 is a schematic flowchart of a queue scheduling method according to an embodiment of the present disclosure.
在进行调度前, 预先将待调度范围内的所有子调度单元依次设置有编号, 并且在待 调度范围内预先选取起始指针的初始位置和尾指针的初始位置。  Before scheduling, all sub-scheduling units within the to-be-scheduled range are sequentially set with numbers, and the initial position of the starting pointer and the initial position of the tail pointer are pre-selected within the to-be-scheduled range.
如图 1所示, 该方法包括以下步骤:  As shown in Figure 1, the method includes the following steps:
S 100: 选取调度指针的位置, 并将当前调度指针所在位置的子调度单元中的队列输 出一次。  S 100: Select the position of the scheduling pointer, and output the queue in the sub-scheduling unit where the current scheduling pointer is located.
在选取调度指针时, 选取位于当前起始指针位置与尾指针位置之间、 且沿起始指针 位置指向尾指针位置方向上第一个有效的子调度单元的位置作为当前调度指针的位置。  When the scheduling pointer is selected, the position of the first valid sub-scheduling unit located between the current starting pointer position and the tail pointer position and pointing to the tail pointer position along the starting pointer position is selected as the position of the current scheduling pointer.
这里当前起始指针位置与尾指针位置之间是包括当前起始指针和当前尾指针, 即如 果当前起始指针位置的子调度单元是有效的, 那么第一次选取调度指针时, 就会选择当 前起始指针位置作为调度指针的位置, 即调度指针与当前起始指针的位置会重合。 Here, between the current start pointer position and the tail pointer position, the current start pointer and the current tail pointer are included, that is, If the sub-scheduling unit of the current starting pointer position is valid, then when the scheduling pointer is selected for the first time, the current starting pointer position is selected as the position of the scheduling pointer, that is, the position of the scheduling pointer and the current starting pointer will coincide.
S200 : 根据当前调度指针所在位置的子调度单元的队列长度判断起始指针是否驻 留。  S200: Determine whether the start pointer resides according to the queue length of the sub-scheduling unit where the current scheduling pointer is located.
这里驻留是指起始指针移动到当前调度指针所在位置,将起始指针移动到当前调度 指针所在位置, 使得起始指针的位置与当前调度指针的位置相重合, 那么在下一次选取 调度指针时, 根据上述选取调度指针的方法, 将会仍然选取当前调度指针的位置为下一 次调度指针的位置, 即通过判断起始指针是否驻留, 就可以判断出是否需要对当前指针 位置所在的子调度单元进行重复调度。  Residing here means that the start pointer moves to the position of the current dispatch pointer, and the start pointer is moved to the position of the current dispatch pointer, so that the position of the start pointer coincides with the position of the current dispatch pointer, then the next time the dispatch pointer is selected According to the above method for selecting a dispatch pointer, the position of the current dispatch pointer will still be selected as the position of the next scheduled pointer, that is, by determining whether the start pointer is resident, it can be determined whether the sub-scheduling of the current pointer position is required. The unit performs repeated scheduling.
当该步骤中判断起始指针驻留时, 进行 S300; 当该步骤中判断起始指针不驻留时, 进行 S400。  When it is judged in this step that the start pointer is resident, S300 is performed; when it is judged in this step that the start pointer is not resident, S400 is performed.
S300: 将起始指针的位置移动到当前调度指针所在位置。  S300: Move the position of the start pointer to the position of the current dispatch pointer.
在上述 S200中已经描述了, 驻留的目的是使得起始指针的位置与当前调度指针的 位置相重合。 而在本申请实施例中, 如果当前调度指针的位置与当前起始指针的位置不 重合, 那么当判断起始指针驻留时, 就需要将当前起始指针的位置移动到当前调度指针 所在的位置。  It has been described in the above S200 that the purpose of the relocation is to make the position of the start pointer coincide with the position of the current dispatch pointer. In the embodiment of the present application, if the location of the current scheduling pointer does not coincide with the location of the current starting pointer, when determining that the starting pointer resides, the location of the current starting pointer needs to be moved to the current scheduling pointer. position.
另外, 如果当前调度指针的位置与当前起始指针的位置是原本就是重合在一起的, 那么当判断起始指针驻留时, 就可以直接保持当前起始指针的位置不动, 而无需移动, 当然也可以认为当前起始指针的移动位置是 0。  In addition, if the position of the current dispatch pointer and the position of the current start pointer are originally coincident, when the start pointer is determined to be resident, the position of the current start pointer can be directly maintained without moving, Of course, it can also be considered that the moving position of the current starting pointer is 0.
在将起始指针的位置移动后, 进行 S500。  After moving the position of the start pointer, proceed to S500.
S400:将起始指针的位置移动到沿起始指针位置指向尾指针位置方向上当前调度指 针所在位置后一位子调度单元的位置。  S400: Move the position of the start pointer to the position of one of the sub-scheduling units after the position of the current dispatch pointer in the direction of the start pointer position to the tail pointer position.
如果判断起始指针不驻留时, 即不需要对当前调度指针所在位置的子调度单元进行 重复调度,那么就需要沿着始指针的初始位置指向尾指针的初始位置方向上调度下一个 子调度单元。  If it is judged that the starting pointer does not reside, that is, the sub-scheduling unit at the position where the current scheduling pointer is located does not need to be repeatedly scheduled, then the next sub-scheduling needs to be scheduled along the initial position of the starting pointer to the initial position of the tail pointer. unit.
在进行移位时,选择将起始指针的位置移动到当前调度指针位置后移位子调度单元 的位置, 这样在下一次选取调度指针的位置时, 必然将选取当前调度指针之后的子调度 单元。  When shifting, the position of the start pointer is moved to the position of the current dispatch pointer and then shifted to the position of the sub-scheduling unit, so that the next time the position of the dispatch pointer is selected, the sub-scheduling unit after the current dispatch pointer is necessarily selected.
在将起始指针的位置移动后, 进行 S500。  After moving the position of the start pointer, proceed to S500.
S500: 选取下一个调度指针的位置, 并将下一个调度指针所在位置的子调度单元中 的队列输出一次。 在选取下一个调度指针的位置时, 选取的原则与上述 S100中相同, 选取移位后始 指针位置与尾指针位置之间、且沿移位后起始指针位置指向尾指针位置方向上第一个有 效的子调度单元作为下一个调度指针的位置。 S500: Select the position of the next scheduling pointer, and output the queue in the sub-scheduling unit where the next scheduling pointer is located. When the position of the next scheduling pointer is selected, the selection principle is the same as that in the above S100, and the first position between the pointer position and the tail pointer position after the shift is selected, and the position of the starting pointer position after the shift is directed to the direction of the tail pointer position. A valid sub-scheduling unit is used as the location of the next dispatch pointer.
由于起始指针移位后, 起始指针的位置将与当前调度指针的位置重合, 所以, 选取 的下一个调度指针的位置仍然是当前调度指针, 即实现了对某一个调度子单元重复调 度。  After the start pointer is shifted, the position of the start pointer will coincide with the position of the current dispatch pointer. Therefore, the position of the next scheduled pointer is still the current dispatch pointer, that is, the scheduling is repeated for a certain scheduling subunit.
本申请实施例提供的该队列调度方法,在对当前调度指针所在位置的子调度单元进 行调度后,会对对当前调度指针所在位置的子调度单元的状态进行判断起始指针是否驻 留, 当判断起始指针驻留时, 再次对当前调度指针所在位置的子调度单元进行调度。 即 该方法可以根据当前调度指针所在位置的子调度单元的队列长度来确定调度的次数,这 样使得在调度时, 不再是对每一个子调度单元依次调度, 而可以对待调度方位内的某一 个子调度单元有针对性地多次调度。  The queue scheduling method provided by the embodiment of the present application determines whether the start pointer is resident or not after scheduling the child scheduling unit at the location of the current scheduling pointer. When it is judged that the start pointer resides, the child scheduling unit at the position where the current dispatch pointer is located is scheduled again. That is, the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated. The sub-scheduling unit is scheduled multiple times.
因此, 本申请实施例提供该队列调度方法, 可以根据待调度的子调度单元的队列情 况进行灵活调度, 以解决现有的采用 RR轮询调度时存在的流量抖动、 调度不均匀以及 由于调度不均匀而导致服务质量变差的问题。 又一个实施例:  Therefore, the embodiment of the present application provides the queue scheduling method, which can perform flexible scheduling according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the existing traffic jitter, uneven scheduling, and scheduling due to the RR polling scheduling. Uniformity causes problems in service quality. Yet another embodiment:
在本申请实施例中, 为了方便对子调度单元的队列长度进行描述, 将待调度范围内 所有子调度单元的队列长度用四种状态表示, 分别为: 第一状态、 第二状态、 第三状态 和第四状态, 其中:  In the embodiment of the present application, in order to facilitate the description of the queue length of the sub-scheduling unit, the queue lengths of all the sub-scheduling units in the to-be-scheduled range are represented by four states, namely: a first state, a second state, and a third State and fourth state, where:
第一状态, 表示子调度单元为空; 第二状态, 表示子调度单元有少量报文, 存在可 能被调空的情况; 第三状态, 表示子调度单元在无调度反压的情况下可以连续调度; 第 四状态, 表示子调度单元已经溢出。  The first state indicates that the sub-scheduling unit is empty; the second state indicates that the sub-scheduling unit has a small number of packets, and there may be a situation in which the sub-scheduling unit may be emptied; and the third state indicates that the sub-scheduling unit may continue in the case of no scheduling backpressure Scheduling; fourth state, indicating that the sub-scheduling unit has overflowed.
在实际应用时, 除第一状态和第四状态外, 其它两种状态的情况可以根据实际情况 进行调节。  In practical applications, except for the first state and the fourth state, the other two states can be adjusted according to actual conditions.
另外, 为了方便对起始指针是否驻留有更加量化的表示, 在本申请实施例中, 采用 驻留参数来指示起始指针是否驻留, 具体为:  In addition, in order to facilitate the presence of a more quantified representation of whether the start pointer resides, in the embodiment of the present application, the resident parameter is used to indicate whether the start pointer resides, specifically:
当驻留参数为第一值时, 表示起始指针不驻留; 当驻留参数为第二值时, 表示起始 指针驻留。  When the resident parameter is the first value, it means that the starting pointer does not reside; when the resident parameter is the second value, it means that the starting pointer resides.
图 2为本申请实施例提供的判断起始指针是否驻留的详细流程示意图。  FIG. 2 is a schematic flowchart of determining whether a start pointer resides according to an embodiment of the present application.
如图 2所示, 判断起始指针是否驻留包括以下步骤: S201 : 确定当前调度指针所在位置的子调度单元的状态。 As shown in Figure 2, determining whether the starting pointer resides includes the following steps: S201: Determine the status of the sub-scheduling unit where the current scheduling pointer is located.
根据当前调度指针所在位置的子调度单元内队列的长度来确定子调度单元的状态。 S202: 将驻留参数设置成第一值。  The state of the sub-scheduling unit is determined according to the length of the queue in the sub-scheduling unit where the current scheduling pointer is located. S202: Set the resident parameter to the first value.
当当前调度指针所在位置的子调度单元的状态为第一状态或第二状态时,将驻留参 数设置成第一值;  When the state of the sub-scheduling unit at the position where the current scheduling pointer is located is the first state or the second state, the resident parameter is set to the first value;
S203 : 判断是否第一次调度当前调度指针所在位置的子调度单元。  S203: Determine whether the child scheduling unit at the location where the current scheduling pointer is located is scheduled for the first time.
当当前调度指针所在位置的子调度单元为第三状态时,判断是否第一次调度当前调 度指针所在位置的子调度单元。判断是否第一调度当前调度指针所在位置的子调度单元 的结果, 可以作为是否多次调度当前调度指针所在位置的子调度单元的一种依据。  When the sub-scheduling unit at the location where the current scheduling pointer is located is in the third state, it is determined whether the sub-scheduling unit at the location of the current scheduling pointer is scheduled for the first time. Determining whether the result of the first scheduling unit of the current scheduling pointer is scheduled may be used as a basis for scheduling the sub-scheduling unit at the location of the current scheduling pointer.
并且当不是第一次调度时, 进行 S2031 ; 当是第一次调度时, 进行 S2032。  And when it is not the first scheduling, S2031 is performed; when it is the first scheduling, S2032 is performed.
S2031 : 将驻留参数的值设定为第一值。  S2031: Set the value of the resident parameter to the first value.
S2032: 根据权重值确定驻留参数的值。  S2032: Determine the value of the resident parameter based on the weight value.
在本申请实施例中, 如图 3所示, 该步骤可以包括:  In this embodiment of the present application, as shown in FIG. 3, the step may include:
S301 : 根据权重值确定一个包括权重值在内的随机数范围, 并在随机数范围内随机 生成一个随机数;  S301: Determine a random number range including a weight value according to the weight value, and randomly generate a random number in the random number range;
S302: 将随机数的值与权重值进行比较;  S302: Comparing the value of the random number with the weight value;
S303 : 当随机数的值小于等于权重值, 将驻留参数的值设定为第二值;  S303: When the value of the random number is less than or equal to the weight value, set the value of the resident parameter to the second value;
S304: 当随机数的值大于权重值, 将驻留参数的值设定为第一值。 S204: 将驻留参数的值设定为第二值, 并在调度过程中根据调度反压重新设定驻留 参数的值。  S304: When the value of the random number is greater than the weight value, the value of the resident parameter is set to the first value. S204: Set the value of the resident parameter to the second value, and reset the value of the resident parameter according to the scheduled back pressure during the scheduling process.
当当前调度指针所在位置的子调度单元为第四状态时,将驻留参数的值设定为第二 值, 并在调度过程中根据调度反压重新设定驻留参数的值。  When the sub-scheduling unit at the position where the current scheduling pointer is located is in the fourth state, the value of the resident parameter is set to the second value, and the value of the resident parameter is reset according to the scheduling back pressure during the scheduling process.
在本申请实施例中, 如图 4所示, 在调度过程中根据调度反压重新设定驻留参数的 值可以包括以下步骤:  In the embodiment of the present application, as shown in FIG. 4, resetting the value of the resident parameter according to the scheduling backpressure during the scheduling process may include the following steps:
S401 : 将当前调度指针所在位置的子调度单元被调度的次数与预设最大值进行比 较, 且判断是否出现调度反压。  S401: Compare the number of times the sub-scheduling unit at the location of the current scheduling pointer is scheduled with a preset maximum value, and determine whether a scheduling backpressure occurs.
这里预设最大值小于等于当前子调度单元中调度的最长报文长度与从当前子调度 单元调度的最短报文长度的比值。  The preset maximum value is less than or equal to the ratio of the longest packet length scheduled in the current sub-scheduling unit to the shortest packet length scheduled from the current sub-scheduling unit.
S402: 若当前调度指针所在位置的子调度单元被调度的次数小于预设最大值、且未 出现调度反压, 根据权重值确定驻留参数的值。 S403 : 将驻留参数的值设定为第一值。 S402: If the number of times that the sub-scheduling unit at the current scheduling pointer is scheduled is less than a preset maximum value, and no scheduling back pressure occurs, determining a value of the resident parameter according to the weight value. S403: Set the value of the resident parameter to the first value.
若当前调度指针所在位置的子调度单元被调度的次数大于等于预设最大值或出现 调度反压中有任意一个情况发生时, 均将驻留参数的值设定为第一值。  If the number of times the sub-scheduling unit at the current scheduling pointer is scheduled is greater than or equal to the preset maximum value or any one of the scheduled back pressures occurs, the value of the resident parameter is set to the first value.
在本申请实施例中, 详细描述了如何根据当前调度指针所在位置的子调度单元内的 队列长度来确定是否对当前调度指针所在位置的子调度单元进行重复调度。因而可以根 据待调度的子调度单元的队列情况进行灵活调度, 以解决现有的采用 RR轮询调度时存 在的流量抖动、 调度不均匀以及由于调度不均匀而导致服务质量变差的问题。 又一个实施例:  In the embodiment of the present application, how to determine whether to repeat scheduling the sub-scheduling unit at the location where the current scheduling pointer is located is determined according to the queue length in the sub-scheduling unit where the current scheduling pointer is located. Therefore, the flexible scheduling can be performed according to the queue condition of the sub-scheduling unit to be scheduled, so as to solve the problem that the existing traffic jitter, scheduling unevenness, and service quality deteriorate due to uneven scheduling when using RR polling scheduling. Yet another embodiment:
在上述两个实施例的基础上, 当起始指针沿着起始指针指向尾指针方向移动时, 最 终会出现起始指针与尾指针重合的情况, 当起始指针与尾指针重合, 本申请实施例提供 了另外一种队列调度方法, 以便可以重新对待调度范围内所有子调度单元再次进行调 度。  On the basis of the above two embodiments, when the start pointer moves along the start pointer and the direction of the tail pointer, the start pointer and the tail pointer will eventually coincide. When the start pointer and the tail pointer coincide, the present application The embodiment provides another queue scheduling method, so that all sub-scheduling units within the scheduling range can be re-scheduled.
图 5为本申请实施例提供的另一种队列调度方法的流程示意图。  FIG. 5 is a schematic flowchart diagram of another queue scheduling method according to an embodiment of the present disclosure.
如图 5所示, 该队列调度方法还可以包括:  As shown in FIG. 5, the queue scheduling method may further include:
S600: 判断起始指针的位置是否与尾指针的位置重合。  S600: Determine whether the position of the start pointer coincides with the position of the tail pointer.
上面已经描述了, 当起始指针沿着起始指针指向尾指针方向移动时, 最终会出现起 始指针与尾指针重合的情况, 所以在调度过程中, 需要判断起始指针是否与尾指针相重 合。 S700: 当起始指针的位置是否与尾指针的位置重合后, 将起始指针移动到起始指针 的初始位置。  As described above, when the start pointer moves along the start pointer to the tail pointer direction, the start pointer and the tail pointer will eventually coincide. Therefore, during the scheduling process, it is necessary to determine whether the start pointer is the same as the tail pointer. coincide. S700: Move the start pointer to the initial position of the start pointer when the position of the start pointer coincides with the position of the tail pointer.
将起始指针移动到其初始位置, 也就意味着可以再次对待调度范围内所有子调度单 元进行调度。  Moving the start pointer to its initial position means that all sub-scheduling units within the scheduling range can be scheduled again.
本申请实施例提供的该方法, 在一次调度完成后, 可以将起始指针的位置移动到起 始指针的初始位置,进而可以在一次调度完成后,可以再次对所有子调度单元进行调度。 又一个实施例:  The method provided by the embodiment of the present application may move the position of the start pointer to the initial position of the start pointer after one scheduling is completed, and then all the child scheduling units may be scheduled again after one scheduling is completed. Yet another embodiment:
图 6为本申请实施例提供的一种队列调度系统的结构示意图。  FIG. 6 is a schematic structural diagram of a queue scheduling system according to an embodiment of the present application.
在进行调度前, 预先将待调度范围内的所有子调度单元依次设置有编号, 并且在待 调度范围内预先选取起始指针的初始位置和尾指针的初始位置。  Before scheduling, all sub-scheduling units within the to-be-scheduled range are sequentially set with numbers, and the initial position of the starting pointer and the initial position of the tail pointer are pre-selected within the to-be-scheduled range.
如图 6所示, 该队列调度系统包括: 调度指针位置选取单元 1、 驻留判断单元 2、 起始指针移位单元 3和输出单元 4。 As shown in FIG. 6, the queue scheduling system includes: a scheduling pointer location selecting unit 1, a resident determining unit 2, The pointer shift unit 3 and the output unit 4 are started.
调度指针位置选取单元 1用于选取当前起始指针初始位置与尾指针初始位置之间、 且沿起始指针位置指向尾指针位置方向上第一个有效的子调度单元的位置作为当前调 度指针的位置。  The dispatch pointer position selecting unit 1 is configured to select the position of the first valid sub-scheduling unit between the initial position of the current starting pointer and the initial position of the tail pointer, and the direction of the starting pointer position to the tail pointer position as the current scheduling pointer. position.
这里当前起始指针位置与尾指针位置之间是包括当前起始指针和当前尾指针, 即如 果当前起始指针位置的子调度单元是有效的, 那么第一次选取调度指针时, 就会选择当 前起始指针位置作为调度指针的位置, 即调度指针与当前起始指针的位置会重合。  Here, between the current start pointer position and the tail pointer position, the current start pointer and the current tail pointer are included, that is, if the child scheduling unit of the current start pointer position is valid, then when the schedule pointer is selected for the first time, it is selected. The current starting pointer position is used as the position of the dispatch pointer, that is, the position of the dispatch pointer and the current start pointer will coincide.
驻留判断单元 2, 用于当调度指针位置选取单元 1选取出当前调度指针的位置后, 根据当前调度指针所在位置的子调度单元的状态判断起始指针是否驻留。  The resident judging unit 2 is configured to determine, according to the state of the sub-scheduling unit at the location of the current scheduling pointer, whether the starting pointer resides after the scheduling pointer location selecting unit 1 selects the location of the current scheduling pointer.
通过判断起始指针是否驻留, 就可以判断出是否需要对当前指针位置所在的子调度 单元进行重复调度。  By judging whether the start pointer is resident, it can be determined whether it is necessary to perform repeated scheduling on the sub-scheduling unit where the current pointer position is located.
起始指针移位单元 3, 用于当驻留判断单元判断起始指针驻留时, 将起始指针的位 置移动到当前调度指针所在位置。  The start pointer shifting unit 3 is configured to move the position of the start pointer to the position of the current dispatch pointer when the resident judgment unit determines that the start pointer resides.
驻留的目的是使得起始指针的位置与当前调度指针的位置相重合。而在本申请实施 例中, 如果当前调度指针的位置与当前起始指针的位置不重合, 那么当判断起始指针驻 留时, 就需要将当前起始指针的位置移动到当前调度指针所在的位置。  The purpose of the relocation is to make the position of the starting pointer coincide with the position of the current dispatch pointer. In the embodiment of the present application, if the location of the current scheduling pointer does not coincide with the location of the current starting pointer, when determining that the starting pointer resides, the location of the current starting pointer needs to be moved to the current scheduling pointer. position.
另外, 如果当前调度指针的位置与当前起始指针的位置是原本就是重合在一起的, 那么当判断起始指针驻留时, 就可以直接保持当前起始指针的位置不动, 而无需移动, 当然也可以认为当前起始指针的移动位置是 0。  In addition, if the position of the current dispatch pointer and the position of the current start pointer are originally coincident, when the start pointer is determined to be resident, the position of the current start pointer can be directly maintained without moving, Of course, it can also be considered that the moving position of the current starting pointer is 0.
输出单元 4, 用于当选取出当前调度指针的位置后, 将当前调度指针所在位置的子 调度单元的队列输出一次。  The output unit 4 is configured to output the queue of the sub-scheduling unit at the location of the current scheduling pointer once after selecting the location of the current scheduling pointer.
该系统对当前调度指针所在位置的子调度单元进行调度后,会对对当前调度指针所 在位置的子调度单元的状态进行判断起始指针是否驻留, 当判断起始指针驻留时, 再次 对当前调度指针所在位置的子调度单元进行调度。即该方法可以根据当前调度指针所在 位置的子调度单元的队列长度来确定调度的次数, 这样使得在调度时, 不再是对每一个 子调度单元依次调度, 而可以对待调度方位内的某一个子调度单元有针对性地多次调 度。 又一个实施例:  After scheduling the sub-scheduling unit at the location of the current scheduling pointer, the system determines whether the starting pointer resides on the state of the sub-scheduling unit at the location of the current scheduling pointer, and when determining that the starting pointer resides, The sub-scheduling unit at the location where the current dispatch pointer is located is scheduled. That is, the method can determine the number of scheduling according to the queue length of the sub-scheduling unit at the current scheduling pointer position, so that when scheduling, it is no longer scheduled for each sub-scheduling unit, and one of the scheduling directions can be treated. The sub-scheduling unit is scheduled multiple times. Yet another embodiment:
在本申请实施例中, 为了方便对子调度单元的队列长度进行描述, 将待调度范围内 所有子调度单元的队列长度用四种状态表示, 分别为: 第一状态、 第二状态、 第三状态 和第四状态, 其中: In the embodiment of the present application, in order to facilitate the description of the queue length of the sub-scheduling unit, the queue lengths of all the sub-scheduling units in the to-be-scheduled range are represented by four states, namely: a first state, a second state, and a third State And a fourth state, where:
第一状态, 表示子调度单元为空; 第二状态, 表示子调度单元有少量报文, 存在可 能被调空的情况; 第三状态, 表示子调度单元在无调度反压的情况下可以连续调度; 第 四状态, 表示子调度单元已经溢出。  The first state indicates that the sub-scheduling unit is empty; the second state indicates that the sub-scheduling unit has a small number of packets, and there may be a situation in which the sub-scheduling unit may be emptied; and the third state indicates that the sub-scheduling unit may continue in the case of no scheduling backpressure Scheduling; fourth state, indicating that the sub-scheduling unit has overflowed.
在实际应用时, 除第一状态和第四状态外, 其它两种状态的情况可以根据实际情况 进行调节。  In practical applications, except for the first state and the fourth state, the other two states can be adjusted according to actual conditions.
图 7为本申请实施例提供的驻留判断单元的结构示意图。  FIG. 7 is a schematic structural diagram of a resident determination unit according to an embodiment of the present application.
如图 7所示, 在本申请实施例中, 驻留判断单元 2包括: 状态确定单元 21、第一次 调度判断单元 22、 驻留概率计算单元 23、 驻留参数值设置单元 24和驻留参数调整单元 25。  As shown in FIG. 7, in the embodiment of the present application, the resident determining unit 2 includes: a state determining unit 21, a first scheduling determining unit 22, a resident probability calculating unit 23, a resident parameter value setting unit 24, and a resident. Parameter adjustment unit 25.
状态确定单元 21用于确定当前调度指针所在位置的子调度单元的状态。在确定时, 根据当前调度指针所在位置的子调度单元内队列的长度来确定子调度单元的状态。  The state determining unit 21 is for determining the state of the child scheduling unit at the location where the current scheduling pointer is located. When determining, the state of the sub-scheduling unit is determined according to the length of the queue in the sub-scheduling unit where the current scheduling pointer is located.
第一次调度判断单元 22,用于判断是否第一次调度当前调度指针所在位置的子调度 单元。 判断是否第一调度当前调度指针所在位置的子调度单元的结果, 可以作为是否多 次调度当前调度指针所在位置的子调度单元的一种依据。  The first scheduling determining unit 22 is configured to determine whether to schedule the sub-scheduling unit at the location of the current scheduling pointer for the first time. Determining whether the result of the first scheduling of the sub-scheduling unit at the location where the current scheduling pointer is located may be used as a basis for scheduling the sub-scheduling unit at the location of the current scheduling pointer.
驻留概率计算单元 23,用于根据权重值确定起始指针的是否驻留在当前起始指针的 位置。  The resident probability calculation unit 23 is configured to determine, based on the weight value, whether the start pointer resides at the position of the current start pointer.
在本申请实施例中, 如图 8所示, 该驻留计算单元 23可以包括: 随机数生成单元 31、 第二比较单元 32和驻留概率计算子单元 33, 其中:  In the embodiment of the present application, as shown in FIG. 8, the resident calculation unit 23 may include: a random number generation unit 31, a second comparison unit 32, and a resident probability calculation sub-unit 33, where:
随机数范围生成单元 31, 用于根据权重值确定一个包括权重值在内的随机数范围, 并在随机数范围内随机生成一个随机数;  The random number range generating unit 31 is configured to determine a random number range including the weight value according to the weight value, and randomly generate a random number in the random number range;
第二比较单元 32用于将随机数的值与权重值进行比较;  The second comparison unit 32 is configured to compare the value of the random number with the weight value;
驻留概率计算子单元 33用于根据第二比较单元 32的比较结果计算起始指针是否驻 留, 当随机数的值小于等于权重值, 表示起始指针驻留; 当随机数的值大于权重值, 表 示起始指针不驻留。  The resident probability calculation sub-unit 33 is configured to calculate whether the start pointer resides according to the comparison result of the second comparison unit 32, and when the value of the random number is less than or equal to the weight value, indicating that the start pointer resides; when the value of the random number is greater than the weight A value indicating that the starting pointer does not reside.
驻留参数值设置单元 23用于当当前调度指针所在位置的子调度单元的状态为第一 状态或第二状态时, 将驻留参数设置成第一值;  The resident parameter value setting unit 23 is configured to set the resident parameter to the first value when the state of the sub-scheduling unit at the position where the current scheduling pointer is located is the first state or the second state;
当当前调度指针所在位置的子调度单元为第三状态时, 且不是第一次调度时, 将驻 留参数的值设定为第一值;  When the sub-scheduling unit at the location where the current scheduling pointer is located is in the third state, and is not the first scheduling, the value of the resident parameter is set to the first value;
当当前调度指针所在位置的子调度单元为第三状态时, 且是第一次调度时, 根据驻 留概率计算单元的计算结果将驻留参数设置成第一值或第二值; 当当前调度指针所在位置的子调度单元为第四状态时,将驻留参数的值设定为第二 值。 When the sub-scheduling unit of the current scheduling pointer is in the third state, and is the first scheduling, the resident parameter is set to the first value or the second value according to the calculation result of the resident probability calculation unit; When the sub-scheduling unit at the position where the current scheduling pointer is located is in the fourth state, the value of the resident parameter is set to the second value.
驻留参数调整单元 25用于当当前调度指针所在位置的子调度单元为第四状态时, 且将驻留参数的值设定为第二值, 在调度过程中根据调度反压重新设定驻留参数的值。  The resident parameter adjustment unit 25 is configured to set the value of the resident parameter to the second value when the sub-scheduling unit at the location where the current scheduling pointer is located, and reset the resident according to the scheduling back pressure during the scheduling process. Leave the value of the parameter.
在本申请实施例中, 如图 9所示, 驻留参数调整单元 24可以包括: 第一比较单元 In the embodiment of the present application, as shown in FIG. 9, the resident parameter adjustment unit 24 may include: a first comparison unit
41和调度反压检测单元 42, 其中: 41 and a scheduled back pressure detecting unit 42, wherein:
第一比较单元 41用于将当前调度指针所在位置的子调度单元被调度的次数与预设 最大值进行比较;  The first comparing unit 41 is configured to compare the number of times the sub-scheduling unit of the current scheduling pointer is scheduled with the preset maximum value;
调度反压检测单元 42用于检测在调度过程中是否出现反压  The scheduling back pressure detecting unit 42 is configured to detect whether a back pressure occurs during the scheduling process.
当当前调度指针所在位置的子调度单元被调度的次数小于预设最大值、且未出现调 度反压, 驻留参数值设置单元 24根据驻留概率计算单元 23的计算结果将驻留参数设置 成第一值或第二值, 否则将驻留参数的值设定为第一值。  When the number of times the sub-scheduling unit at the current scheduling pointer is scheduled is less than the preset maximum value and the scheduling back pressure does not occur, the resident parameter value setting unit 24 sets the resident parameter according to the calculation result of the resident probability calculation unit 23 to The first value or the second value, otherwise the value of the resident parameter is set to the first value.
这里预设最大值小于等于当前子调度单元中调度的最长报文长度与从当前子调度 单元调度的最短报文长度的比值。 又一个实施例:  The preset maximum value is less than or equal to the ratio of the longest packet length scheduled in the current sub-scheduling unit to the shortest packet length scheduled from the current sub-scheduling unit. Yet another embodiment:
在上述两个实施例的基础上, 当起始指针沿着起始指针指向尾指针方向移动时, 最 终会出现起始指针与尾指针重合的情况, 当起始指针与尾指针重合, 本申请实施例提供 了另外一种队列调度方法, 以便可以重新对待调度范围内所有子调度单元再次进行调 度。  On the basis of the above two embodiments, when the start pointer moves along the start pointer and the direction of the tail pointer, the start pointer and the tail pointer will eventually coincide. When the start pointer and the tail pointer coincide, the present application The embodiment provides another queue scheduling method, so that all sub-scheduling units within the scheduling range can be re-scheduled.
图 10为本申请实施例提供的另一种队列调度系统的结构示意图。  FIG. 10 is a schematic structural diagram of another queue scheduling system according to an embodiment of the present application.
如图 10所示,该队列调度系统还可以包括:位置判断单元 5和初始化单元 6,其中: 位置判断单元 5用于判断起始指针的位置是否与尾指针的位置重合。上面已经描述 了, 当起始指针沿着起始指针指向尾指针方向移动时, 最终会出现起始指针与尾指针重 合的情况, 所以在调度过程中, 需要判断起始指针是否与尾指针相重合。  As shown in FIG. 10, the queue scheduling system may further include: a position determining unit 5 and an initializing unit 6, wherein: the position determining unit 5 is configured to determine whether the position of the starting pointer coincides with the position of the tail pointer. As described above, when the start pointer moves along the start pointer to the tail pointer direction, the start pointer and the tail pointer will eventually coincide. Therefore, during the scheduling process, it is necessary to determine whether the start pointer is the same as the tail pointer. coincide.
初始化单元 6用于当起始指针的位置是否与尾指针的位置重合后,将起始指针移动 到起始指针的初始位置。 将起始指针移动到其初始位置, 也就意味着可以再次对待调度 范围内所有子调度单元进行调度。  The initializing unit 6 is configured to move the starting pointer to the initial position of the starting pointer after the position of the starting pointer coincides with the position of the tail pointer. Moving the starting pointer to its initial position means that all child scheduling units within the scheduling range can be scheduled again.
本申请实施例提供的该系统, 在一次调度完成后, 可以将起始指针的位置移动到起 始指针的初始位置,进而可以在一次调度完成后,可以再次对所有子调度单元进行调度。 为了描述的方便, 描述以上装置时以功能分为各种单元分别描述。 当然, 在实施本 申请时可以把各单元的功能在同一个或多个软件和 /或硬件中实现。 The system provided by the embodiment of the present application can move the position of the start pointer to the initial position of the start pointer after one scheduling is completed, and then all the child scheduling units can be scheduled again after one scheduling is completed. For the convenience of description, the above devices are described separately by function into various units. Of course, the functions of the various units may be implemented in one or more software and/or hardware in the implementation of the present application.
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借 助软件加必需的通用硬件平台的方式来实现。 基于这样的理解, 本申请的技术方案本质 上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该计算机软件产 品可以存储在存储介质中, 如 ROM/RAM、 磁碟、 光盘等, 包括若干指令用以使得一台 计算机设备 (可以是个人计算机, 服务器, 或者网络设备等)执行本申请各个实施例或 者实施例的某些部分所述的方法。  It will be apparent to those skilled in the art from the above description of the embodiments that the present application can be implemented by means of software plus a necessary general hardware platform. Based on such understanding, the technical solution of the present application, which is essential or contributes to the prior art, may be embodied in the form of a software product, which may be stored in a storage medium such as a ROM/RAM or a disk. , an optical disk, etc., includes instructions for causing a computer device (which may be a personal computer, server, or network device, etc.) to perform the methods described in various embodiments of the present application or portions of the embodiments.
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分 互相参见即可, 每个实施例重点说明的都是与其他实施例的不同之处。 尤其, 对于系统 实施例而言, 由于其基本相似于方法实施例, 所以描述得比较简单, 相关之处参见方法 实施例的部分说明即可。 以上所描述的系统实施例仅仅是示意性的, 其中所述作为分离 部件说明的单元可以是或者也可以不是物理上分开的, 作为单元显示的部件可以是或者 也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以 根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通 技术人员在不付出创造性劳动的情况下, 即可以理解并实施。  The various embodiments in the specification are described in a progressive manner, and the same or similar parts between the various embodiments may be referred to each other, and each embodiment focuses on the differences from the other embodiments. In particular, for the system embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and the relevant parts can be referred to the description of the method embodiment. The system embodiments described above are merely illustrative, wherein the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, ie may be located One place, or it can be distributed to multiple network elements. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the embodiment. Those of ordinary skill in the art can understand and implement without any creative effort.
以上所述仅是本申请的优选实施方式, 使本领域技术人员能够理解或实现本申请。 对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一 般原理可以在不脱离本申请的精神或范围的情况下, 在其它实施例中实现。 因此, 本申 请将不会被限制于本文所示的这些实施例, 而是要符合与本文所公开的原理和新颖特点 相一致的最宽的范围。  The above description is only a preferred embodiment of the present application, so that those skilled in the art can understand or implement the present application. Various modifications to these embodiments are obvious to those skilled in the art, and the general principles defined herein may be implemented in other embodiments without departing from the spirit or scope of the application. Therefore, the present invention is not limited to the embodiments shown herein, but the broadest scope consistent with the principles and novel features disclosed herein.

Claims

权利要求 Rights request
1、 一种队列调度方法, 待调度范围内的所有子调度单元依次设置有编号, 并且在 待调度范围内已选取起始指针的初始位置和尾指针的初始位置, 其特征在于, 包括: 选取当前起始指针的初始位置与尾指针初始位置之间、且沿所述起始指针位置指向 尾指针位置方向上第一个有效的子调度单元的位置作为调度指针的位置, 并将当前调度 指针所在位置的子调度单元中的队列输出一次; 1. A queue scheduling method in which all sub-scheduling units within the range to be scheduled are sequentially set with numbers, and the initial position of the start pointer and the initial position of the tail pointer have been selected within the range to be scheduled, which is characterized by including: selection The position of the first valid sub-scheduling unit between the initial position of the current start pointer and the initial position of the tail pointer, and along the starting pointer position pointing to the direction of the tail pointer position, is used as the position of the scheduling pointer, and the current scheduling pointer is The queue in the sub-scheduling unit at the location is output once;
根据所述当前调度指针所在位置的子调度单元的队列长度判断所述起始指针是否 驻留, 所述驻留是指所述起始指针移动到所述当前调度指针所在位置; Determine whether the start pointer is parked based on the queue length of the sub-scheduling unit where the current scheduling pointer is located. The parking means that the start pointer moves to the location of the current scheduling pointer;
当判断所述起始指针驻留时, 将所述起始指针的位置移动到当前调度指针所在位 置, 且选取移位后所述始指针位置与尾指针位置之间、 且沿移位后所述起始指针位置指 向尾指针位置方向上第一个有效的子调度单元作为下一个调度指针的位置, 并将下一个 调度指针所在位置的子调度单元中的队列输出一次; When it is judged that the starting pointer is resident, the position of the starting pointer is moved to the position of the current scheduling pointer, and the position between the starting pointer position and the tail pointer position after the shift is selected, and the position along the shifted pointer is selected. The starting pointer position points to the first valid sub-scheduling unit in the direction of the tail pointer position as the position of the next scheduling pointer, and the queue in the sub-scheduling unit at the position of the next scheduling pointer is output once;
当判断所述起始指针不驻留时,将所述起始指针的位置移动到沿起所述始指针位置 指向尾指针位置方向上当前调度指针所在位置后一位子调度单元的位置, 并选取移位后 所述始指针位置与尾指针位置之间、且沿移位后所述起始指针位置指向尾指针位置方向 上第一个有效的子调度单元作为下一个调度指针的位置, 并将下一个调度指针所在位置 的子调度单元中的队列输出一次。 When it is judged that the start pointer does not reside, the position of the start pointer is moved to a position one sub-scheduling unit behind the current scheduling pointer position in the direction from the starting pointer position to the tail pointer position, and selects The first valid sub-scheduling unit between the starting pointer position and the tail pointer position after the shift and the starting pointer position pointing to the tail pointer position direction after the shift is the position of the next scheduling pointer, and The queue in the sub-scheduling unit where the next scheduling pointer is located is output once.
2、 根据权利要求 1所述的方法, 其特征在于, 所述待调度范围内的所有子调度单 元的队列长度用四种状态表示, 其中: 第一状态, 表示子调度单元为空; 第二状态, 表 示子调度单元有少量报文, 存在可能被调空的情况; 第三状态, 表示子调度单元在无调 度反压的情况下可以连续调度; 第四状态, 表示子调度单元已经溢出; 2. The method according to claim 1, characterized in that the queue length of all sub-scheduling units within the to-be-scheduled range is represented by four states, wherein: the first state indicates that the sub-scheduling unit is empty; the second state The state indicates that the sub-scheduling unit has a small number of messages and may be empty; the third state indicates that the sub-scheduling unit can be scheduled continuously without scheduling back pressure; the fourth state indicates that the sub-scheduling unit has overflowed;
所述起始指针是否驻留采用驻留参数的来指示, 并且当所述驻留参数为第一值时, 表示所述起始指针不驻留; 当所述驻留参数为第二值时, 表示所述起始指针驻留; 所述根据当前调度指针所在位置的子调度单元的状态判断所述起始指针是否驻留, 具体包括: Whether the start pointer is resident is indicated by the resident parameter, and when the resident parameter is the first value, it means that the start pointer is not resident; when the resident parameter is the second value , indicating that the start pointer is resident; and judging whether the start pointer is resident based on the state of the sub-scheduling unit where the current scheduling pointer is located specifically includes:
确定所述当前调度指针所在位置的子调度单元的状态; Determine the status of the sub-scheduling unit where the current scheduling pointer is located;
当所述当前调度指针所在位置的子调度单元的状态为第一状态或第二状态时,将所 述驻留参数设置成第一值; When the state of the sub-scheduling unit at the position of the current scheduling pointer is the first state or the second state, the resident parameter is set to the first value;
当所述当前调度指针所在位置的子调度单元为第三状态时,判断是否第一次调度所 述当前调度指针所在位置的子调度单元, 并且当不是第一次调度时, 将所述驻留参数的 值设定为第一值, 当是第一次调度时, 根据权重值确定所述驻留参数的值; 当所述当前调度指针所在位置的子调度单元为第四状态时,将所述驻留参数的值设 定为第二值, 并在调度过程中根据调度反压重新设定驻留参数的值。 When the sub-scheduling unit at the position of the current scheduling pointer is in the third state, determine whether the sub-scheduling unit at the position of the current scheduling pointer is scheduled for the first time, and when it is not the first time to schedule, the resident The value of the parameter is set to the first value. When it is scheduled for the first time, the value of the resident parameter is determined based on the weight value; When the sub-scheduling unit where the current scheduling pointer is located is in the fourth state, the value of the dwell parameter is set to the second value, and the value of the dwell parameter is reset according to the scheduling backpressure during the scheduling process. .
3、 根据权利要求 2所述的方法, 其特征在于, 当所述当前调度指针所在位置的子 调度单元为第四状态时,在调度过程中根据调度反压重新设定驻留参数的值,具体包括: 将当前调度指针所在位置的子调度单元被调度的次数与预设最大值进行比较, 且判 断是否出现调度反压; 3. The method according to claim 2, characterized in that, when the sub-scheduling unit at the position of the current scheduling pointer is in the fourth state, the value of the resident parameter is reset according to the scheduling back pressure during the scheduling process, Specifically, it includes: comparing the number of times the sub-scheduling unit at the current scheduling pointer position is scheduled with the preset maximum value, and determining whether scheduling back pressure occurs;
若当前调度指针所在位置的子调度单元被调度的次数小于预设最大值、且未出现调 度反压, 根据权重值确定所述驻留参数的值, 否则将所述驻留参数的值设定为第一值。 If the number of times the sub-scheduling unit at the current scheduling pointer position is scheduled is less than the preset maximum value and no scheduling backpressure occurs, the value of the dwell parameter is determined based on the weight value, otherwise the value of the dwell parameter is set. is the first value.
4、 根据权利要求 2所述的方法, 其特征在于, 所述预设最大值小于等于当前子调 度单元中调度的最长报文长度与从当前子调度单元调度的最短报文长度的比值。 4. The method according to claim 2, wherein the preset maximum value is less than or equal to the ratio of the longest message length scheduled in the current sub-scheduling unit to the shortest message length scheduled from the current sub-scheduling unit.
5、 根据权利要求 2或 3所述的方法, 其特征在于, 所述根据权重值确定所述驻留 参数的值, 具体包括: 5. The method according to claim 2 or 3, characterized in that determining the value of the resident parameter according to the weight value specifically includes:
根据权重值确定一个包括所述权重值在内的随机数范围; Determine a random number range including the weight value according to the weight value;
在所述随机数范围内随机生成一个随机数; Randomly generate a random number within the range of the random number;
将所述随机数的值与所述权重值进行比较; Compare the value of the random number with the weight value;
当所述随机数的值小于等于所述权重值, 将所述驻留参数的值设定为第二值; 当所述随机数的值大于所述权重值, 将所述驻留参数的值设定为第一值。 When the value of the random number is less than or equal to the weight value, the value of the resident parameter is set to the second value; when the value of the random number is greater than the weight value, the value of the resident parameter is set to the second value. Set to the first value.
6、 根据权利要求 1-5任一项所述的方法, 其特征在于, 进一步包括: 6. The method according to any one of claims 1 to 5, further comprising:
判断所述起始指针的位置是否与所述尾指针的位置重合; Determine whether the position of the starting pointer coincides with the position of the tail pointer;
当所述起始指针的位置是否与所述尾指针的位置重合后,将所述起始指针移动到所 述起始指针的初始位置。 When the position of the starting pointer coincides with the position of the tail pointer, the starting pointer is moved to the initial position of the starting pointer.
7、 一种调度系统, 待调度范围内的所有子调度单元依次设置有编号, 并且在待调 度范围内已选取起始指针的初始位置和尾指针的初始位置, 其特征在于, 包括: 7. A scheduling system in which all sub-scheduling units within the range to be scheduled are sequentially set with numbers, and the initial position of the start pointer and the initial position of the tail pointer have been selected within the range to be scheduled, which is characterized by including:
调度指针位置选取单元, 用于选取当前起始指针初始位置与尾指针初始位置之间、 且沿起始指针位置指向尾指针位置方向上第一个有效的子调度单元的位置作为当前调 度指针的位置; The scheduling pointer position selection unit is used to select the position of the first valid sub-scheduling unit between the current initial position of the start pointer and the initial position of the tail pointer and along the direction of the starting pointer position pointing to the tail pointer position as the current scheduling pointer. Location;
驻留判断单元,用于根据所述当前调度指针所在位置的子调度单元的状态判断所述 起始指针是否驻留, 所述驻留是指所述起始指针移动到所述当前调度指针所在位置; 起始指针移位单元, 用于当判断所述起始指针驻留时, 将所述起始指针的位置移动 到当前调度指针所在位置, 或者, 当判断所述起始指针不驻留时, 将所述起始指针的位 置移动到沿起所述始指针位置指向尾指针位置方向上当前调度指针所在位置后一位子 调度单元的位置; A residence judgment unit, configured to determine whether the start pointer resides according to the state of the sub-scheduling unit where the current scheduling pointer is located. The residence means that the start pointer moves to where the current scheduling pointer is located. Position; a starting pointer shifting unit, used to move the position of the starting pointer to the position of the current scheduling pointer when it is judged that the starting pointer is resident, or when it is judged that the starting pointer is not resident. When , move the position of the starting pointer to one position behind the current scheduling pointer in the direction from the starting pointer position to the tail pointer position. The location of the dispatch unit;
输出单元, 用于将所述当前调度指针所在位置的子调度单元中的队列输出一次。 An output unit is used to output the queue in the sub-scheduling unit where the current scheduling pointer is located once.
8、 根据权利要求 6所述的系统, 其特征在于, 所述待调度范围内的所有子调度单 元的队列长度用四种状态表示, 其中: 第一状态, 表示子调度单元为空; 第二状态, 表 示子调度单元有少量报文, 存在可能被调空的情况; 第三状态, 表示子调度单元在无调 度反压的情况下可以连续调度; 第四状态, 表示子调度单元已经溢出; 8. The system according to claim 6, characterized in that the queue length of all sub-scheduling units within the range to be scheduled is represented by four states, wherein: the first state indicates that the sub-scheduling unit is empty; the second state The state indicates that the sub-scheduling unit has a small number of messages and may be empty; the third state indicates that the sub-scheduling unit can be scheduled continuously without scheduling back pressure; the fourth state indicates that the sub-scheduling unit has overflowed;
所述起始指针是否驻留采用驻留参数的来指示, 并且当所述驻留参数为第一值时, 表示所述起始指针不驻留; 当所述驻留参数为第二值时, 表示所述起始指针驻留; 所述驻留判断单元包括: Whether the start pointer is resident is indicated by the resident parameter, and when the resident parameter is the first value, it means that the start pointer is not resident; when the resident parameter is the second value , indicating that the start pointer resides; the residence judgment unit includes:
状态确定单元, 用于确定所述当前调度指针所在位置的子调度单元的状态; 第一次调度判断单元,用于判断是否第一次调度所述当前调度指针所在位置的子调 度单元; The status determination unit is used to determine the status of the sub-scheduling unit where the current scheduling pointer is located; the first scheduling judgment unit is used to determine whether the sub-scheduling unit where the current scheduling pointer is located is scheduled for the first time;
驻留概率计算单元,用于根据权重值确定所述起始指针的是否驻留在当前起始指针 的位置; A residence probability calculation unit, used to determine whether the starting pointer resides at the position of the current starting pointer according to the weight value;
驻留参数值设置单元,用于当所述当前调度指针所在位置的子调度单元的状态为第 一状态或第二状态时, 将驻留参数设置成第一值; 当所述当前调度指针所在位置的子调 度单元为第三状态时, 且不是第一次调度时, 将所述驻留参数的值设定为第一值; 当所 述当前调度指针所在位置的子调度单元为第三状态时, 且是第一次调度时, 根据驻留概 率计算单元的计算结果将所述驻留参数设置成第一值或第二值; 当所述当前调度指针所 在位置的子调度单元为第四状态时, 将所述驻留参数的值设定为第二值; A resident parameter value setting unit, configured to set the resident parameter to a first value when the state of the sub-scheduling unit where the current scheduling pointer is located is the first state or the second state; when the current scheduling pointer is located When the sub-scheduling unit at the position is in the third state, and it is not the first time of scheduling, the value of the resident parameter is set to the first value; when the sub-scheduling unit at the position of the current scheduling pointer is in the third state When , and it is the first time of scheduling, the residency parameter is set to the first value or the second value according to the calculation result of the residency probability calculation unit; when the sub-scheduling unit where the current scheduling pointer is located is the fourth When in the state, set the value of the resident parameter to the second value;
驻留参数调整单元, 用于当所述当前调度指针所在位置的子调度单元为第四状态 时, 且将所述驻留参数的值设定为第二值, 在调度过程中根据调度反压重新设定驻留参 数的值。 A residence parameter adjustment unit, configured to set the value of the residence parameter to a second value when the sub-scheduling unit at the position of the current scheduling pointer is in the fourth state, and to perform the operation according to the scheduling back pressure during the scheduling process. Reset the value of the resident parameter.
9、 根据权利要求 8所述的系统, 其特征在于, 所述驻留参数调整单元包括: 第一比较单元,用于将当前调度指针所在位置的子调度单元被调度的次数与预设最 大值进行比较; 9. The system according to claim 8, characterized in that, the resident parameter adjustment unit includes: a first comparison unit, used to compare the number of times the sub-scheduling unit at the current scheduling pointer position is scheduled with the preset maximum value Compare;
调度反压检测单元, 用于检测在调度过程中是否出现反压; Scheduling back pressure detection unit, used to detect whether back pressure occurs during the scheduling process;
当所述当前调度指针所在位置的子调度单元被调度的次数小于预设最大值、且未出 现调度反压, 驻留参数值设置单元根据驻留概率计算单元的计算结果将所述驻留参数设 置成第一值或第二值, 否则将所述驻留参数的值设定为第一值。 When the number of times the sub-scheduling unit at the position of the current scheduling pointer is scheduled is less than the preset maximum value and no scheduling backpressure occurs, the residency parameter value setting unit sets the residency parameter according to the calculation result of the residency probability calculation unit. Set to the first value or the second value, otherwise the value of the resident parameter is set to the first value.
10、 根据权利要求 9所述的系统, 其特征在于, 所述驻留概率计算单元包括: 随机数范围选取单元, 用于根据权重值确定一个包括所述权重值在内的随机数范 围; 10. The system according to claim 9, characterized in that the residence probability calculation unit includes: A random number range selection unit, used to determine a random number range including the weight value according to the weight value;
随机数生成单元, 用于在所述随机数范围内随机生成一个随机数; A random number generation unit, used to randomly generate a random number within the range of the random number;
第二比较单元, 用于将所述随机数的值与所述权重值进行比较; A second comparison unit, configured to compare the value of the random number with the weight value;
驻留概率计算子单元,用于根据所述第二比较单元的比较结果计算所述起始指针是 否驻留, 当所述随机数的值小于等于所述权重值, 表示所述起始指针驻留; 当所述随机 数的值大于所述权重值, 表示所述起始指针不驻留。 A residence probability calculation subunit is used to calculate whether the start pointer is resident based on the comparison result of the second comparison unit. When the value of the random number is less than or equal to the weight value, it indicates that the start pointer is resident. stay; When the value of the random number is greater than the weight value, it means that the start pointer does not stay.
11、 根据权利要求 7-10任意一项所述的系统, 其特征在于, 该系统进一步包括: 位置判断单元, 用于判断所述起始指针的位置是否与所述尾指针的位置重合; 初始化单元, 用于当所述起始指针的位置是否与所述尾指针的位置重合后, 将所述 起始指针移动到所述起始指针的初始位置。 11. The system according to any one of claims 7-10, characterized in that, the system further includes: a position judgment unit, used to judge whether the position of the start pointer coincides with the position of the tail pointer; initialization A unit configured to move the start pointer to the initial position of the start pointer after checking whether the position of the start pointer coincides with the position of the tail pointer.
PCT/CN2013/077072 2012-06-29 2013-06-09 Queue scheduling method and system WO2014000569A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201210222753.8 2012-06-29
CN201210222753.8A CN102752202B (en) 2012-06-29 2012-06-29 Queue scheduling method and system

Publications (1)

Publication Number Publication Date
WO2014000569A1 true WO2014000569A1 (en) 2014-01-03

Family

ID=47032106

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/077072 WO2014000569A1 (en) 2012-06-29 2013-06-09 Queue scheduling method and system

Country Status (2)

Country Link
CN (1) CN102752202B (en)
WO (1) WO2014000569A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102752202B (en) * 2012-06-29 2015-03-11 华为技术有限公司 Queue scheduling method and system
CN106713172B (en) * 2015-11-16 2019-06-18 华为数字技术(苏州)有限公司 A kind of method and apparatus of schedules message
CN108108148B (en) * 2016-11-24 2021-11-16 舒尔电子(苏州)有限公司 Data processing method and device
CN112737941B (en) * 2020-12-21 2022-05-24 北京信而泰科技股份有限公司 Network flow scheduling method, device and computer readable medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631122B1 (en) * 2007-08-30 2009-12-08 Nvidia Corporation System and method for fast hardware atomic queue allocation
CN102420758A (en) * 2011-11-30 2012-04-18 华为技术有限公司 Method and device for scheduling queue
CN102752202A (en) * 2012-06-29 2012-10-24 华为技术有限公司 Queue scheduling method and system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101252536B (en) * 2008-03-31 2010-06-02 清华大学 Router multi-queue data pack buffer management and output queue scheduling system
CN101621478A (en) * 2009-08-07 2010-01-06 中兴通讯股份有限公司 Method and device for array dispatch

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631122B1 (en) * 2007-08-30 2009-12-08 Nvidia Corporation System and method for fast hardware atomic queue allocation
CN102420758A (en) * 2011-11-30 2012-04-18 华为技术有限公司 Method and device for scheduling queue
CN102752202A (en) * 2012-06-29 2012-10-24 华为技术有限公司 Queue scheduling method and system

Also Published As

Publication number Publication date
CN102752202B (en) 2015-03-11
CN102752202A (en) 2012-10-24

Similar Documents

Publication Publication Date Title
EP2466824B1 (en) Service scheduling method and device
WO2014000569A1 (en) Queue scheduling method and system
CN104702681B (en) The optimization that the presentation information of wireless device is refreshed
EP3576036A1 (en) Service execution method and device
WO2010142226A1 (en) Method, device and system for self-adaptively adjusting data transmission rate
WO2006102354A3 (en) Apparatus and methods for providing queue messaging over a network
CN109982159A (en) The method and terminal of online playing stream media
JP2012505572A (en) Method and system for weighted fair queue management
CN106330765B (en) Cache allocation method and device
US20120327948A1 (en) Adjustment of negative weights in weighted round robin scheduling
JP2009278641A (en) Data channel resource optimization for device in network
CN107920108A (en) A kind of method for pushing of media resource, client and server
US9985902B2 (en) Method and system for providing deterministic quality of service for communication devices
Wu et al. Analysis of the energy-response time tradeoff for delayed mobile cloud offloading
WO2016173133A1 (en) Load sharing implementation method, interface machine, service processor and system
CN102685130A (en) Dispatching control method and system for cloud conference
CN109165142A (en) Service bottleneck judgment method, device, computer equipment and storage medium
CN113098793B (en) Distributed service system current limiting method and distributed service system
CN110251943B (en) Game player matching method, device, equipment and storage medium
GB2558322A (en) Resource Allocation
JP5006267B2 (en) Request reception system
Lenzini et al. Eligibility-based round robin for fair and efficient packet scheduling in wormhole switching networks
CN102685228A (en) Message processing method and system for cloud conference
CN109086107A (en) Barrage message distributing method, device, equipment and storage medium
Xue et al. A new WRR algorithm based on ideal packet interval time

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13808731

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13808731

Country of ref document: EP

Kind code of ref document: A1