Data transmission method and apparatus, device, storage medium, and computer program product
By obtaining the target network interface card (NIC) queue number from the first-in-first-out (FIFO) buffer and determining the scheduling mode, the problem of inflexible multi-queue scheduling is solved, and flexible scheduling and load balancing of NIC queue descriptors are realized.
Patent Information
- Application Number
- PCT/CN2025/087034
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-04-30
- Filing Date
- 2025-04-03
- Publication Date
- 2025-11-06
AI Technical Summary
Existing technologies for multi-queue scheduling are not flexible enough, cannot meet the diverse application scenarios of network cards, and cannot provide fine-grained control over each queue.
The target network card queue number is obtained from the first-in-first-out (FIFO) buffer. A descriptor is requested based on the queue information, and the scheduling mode is determined. It is then determined whether the request principle is met. If it is met, the scheduling continues; otherwise, the card is added back to the FIFO buffer to obtain the next queue number.
It improves the flexibility of multi-queue scheduling, enabling flexible adjustment of the number of each queue descriptor to adapt to the changing application scenarios of network cards, and achieves precise transmission control and load balancing.
Smart Images

Figure CN2025087034_06112025_PF_FP_ABST
Abstract
Description
Data transmission method, device and equipment, storage medium and computer program product
[0001] Cross-reference to related applications
[0002] The present application claims priority to the Chinese patent application No. 202410537425.X, filed on April 30, 2024, and entitled "Data transmission method, device and equipment, storage medium and computer program product", the content of which is incorporated herein by reference in its entirety. TECHNICAL FIELD
[0003] The present application relates to the technical field of computers, more particularly, to a data transmission method, device and equipment, storage medium and computer program product. BACKGROUND
[0004] With the continuous improvement of network input and output bandwidth, a single-core CPU cannot fully meet the needs of a network card. By supporting a multi-queue network card, each queue is bound to a different processor core through an interrupt to meet the bandwidth processing needs. Multi-queue means that each queue has the function of independent descriptor configuration. When data needs to be moved, a queue needs to be applied first. In related technologies, a polling method is generally used to determine which queue to apply, that is, the queue number of the configuration number is written into a FIFO (First In First Out) cache, and the queue is applied in order, one descriptor in the queue is applied each time. When there are still available descriptors in the queue, the queue number is written into the FIFO cache again. When the descriptors in the queue are exhausted, the queue number is no longer written into the FIFO cache. It can be seen that the above queue scheduling is not flexible enough, and cannot finely control each queue, and cannot meet the changing application scenarios of the network card.
[0005] Therefore, how to improve the flexibility of multi-queue scheduling is a technical problem to be solved by those skilled in the art. SUMMARY
[0006] The present application aims to provide a data transmission method, device and equipment, storage medium and computer program product, which improves the flexibility of multi-queue scheduling.
[0007] To achieve the above-mentioned purpose, the present application provides a data transmission method applied to a network card, comprising:
[0008] When there is a data transmission demand, obtaining a target network card queue number from a first-in-first-out cache;
[0009] Applying queue information of a target network card queue according to the target network card queue number, and applying a descriptor from the target network card queue according to the queue information, so as to utilize the descriptor for data transmission.
[0010] determining a scheduling mode, judging whether the target network card queue meets a continue applying principle corresponding to the scheduling mode;
[0011] If yes, re-entering the step of applying for the queue information of the target network card queue according to the target network card queue number;
[0012] If no, re-adding the target network card queue number into the first-in-first-out cache, and re-entering the step of obtaining the target network card queue number from the first-in-first-out cache.
[0013] The determining the scheduling mode comprises:
[0014] obtaining the scheduling mode from the first dual-port random access memory.
[0015] If the scheduling mode is a round-robin mode, the judging whether the target network card queue meets the continue applying principle corresponding to the scheduling mode comprises:
[0016] obtaining a round-robin coefficient corresponding to the target network card queue;
[0017] judging whether a descriptor applying frequency of the target network card queue is less than the round-robin coefficient corresponding to the target network card queue.
[0018] The obtaining the round-robin coefficient corresponding to the target network card queue comprises:
[0019] obtaining the round-robin coefficient corresponding to the target network card queue from the first dual-port random access memory.
[0020] The round-robin coefficient corresponding to the target network card queue is negatively correlated with a load of a processor core corresponding to the target network card queue.
[0021] If the scheduling mode is a time-division multiplexing mode, the judging whether the target network card queue meets the continue applying principle corresponding to the scheduling mode comprises:
[0022] judging whether a descriptor applying time of the target network card queue is less than an applying time threshold corresponding to the target network card queue.
[0023] The applying time threshold corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue.
[0024] Before the judging whether the descriptor applying time of the target network card queue is less than the applying time threshold corresponding to the target network card queue, the method further comprises:
[0025] obtaining a time slice coefficient corresponding to the target network card queue, and calculating a product of the time slice coefficient and a basic time unit as the applying time threshold corresponding to the target network card queue.
[0026] The time slice coefficient corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue.
[0027] The time slice coefficient corresponding to the target network card queue is obtained, including:
[0028] The time slice coefficient corresponding to the target network card queue is obtained from the first dual-port random access memory.
[0029] When there is a data transmission requirement, the target network card queue number is obtained from the first-in-first-out cache, and further including:
[0030] The global enablement and the queue state of the network card queue are obtained.
[0031] If the global enablement is valid and the queue state is in an active state, the queue number of the network card queue is stored in the first intermediate cache.
[0032] The network card queue numbers in the first intermediate cache and the second intermediate cache are aggregated into the first-in-first-out cache, wherein the second intermediate cache is used to store the queue numbers that need to be re-joined into the first-in-first-out cache.
[0033] The target network card queue number is re-joined into the first-in-first-out cache, including:
[0034] The target network card queue number is stored in the second intermediate cache, and the network card queue numbers in the first intermediate cache and the second intermediate cache are aggregated into the first-in-first-out cache.
[0035] The global enablement and the queue state of the network card queue are obtained, including:
[0036] The global enablement of the network card queue is obtained from the second dual-port random access memory, and the queue state of the network card queue is obtained from the third dual-port random access memory.
[0037] After the queue information of the target network card queue is applied according to the target network card queue number, further including:
[0038] It is judged whether the applied queue information is empty.
[0039] If yes, the queue state of the target network card queue in the third dual-port random access memory is set to an inactive state.
[0040] If no, the step of applying a descriptor from the target network card queue according to the queue information is executed.
[0041] The queue information of the target network card queue includes a queue pointer and a descriptor base address of the target network card queue.
[0042] The descriptor is applied from the target network card queue according to the queue information, including:
[0043] generate descriptor application information based on the target network card queue number and the queue information; wherein the descriptor application information comprises the target network card queue number, a queue pointer of the target network card queue, and a descriptor base address;
[0044] apply a descriptor from the target network card queue according to the descriptor application information.
[0045] To achieve the above object, the application provides a data transmission device applied to a network card, comprising:
[0046] an obtaining module, configured to obtain a target network card queue number from a first-in-first-out cache when there is a data transmission demand;
[0047] an application module, configured to apply queue information of a target network card queue according to the target network card queue number, and apply a descriptor from the target network card queue according to the queue information, so as to use the descriptor for data transmission;
[0048] a judgment module, configured to determine a scheduling mode, and judge whether the target network card queue satisfies a continue application principle corresponding to the scheduling mode; if yes, restart a work flow of the application module; if no, start a work flow of a joining module;
[0049] the joining module, configured to re-join the target network card queue number into the first-in-first-out cache, and restart a work flow of the obtaining module.
[0050] The judgment module is specifically configured to obtain the scheduling mode from the first dual-port random access memory.
[0051] If the scheduling mode is a polling mode, the judgment module is specifically configured to obtain a polling coefficient corresponding to the target network card queue, and judge whether a descriptor application number of the target network card queue is less than the polling coefficient corresponding to the target network card queue.
[0052] The judgment module is specifically configured to obtain the polling coefficient corresponding to the target network card queue from the first dual-port random access memory.
[0053] The polling coefficient corresponding to the target network card queue is negatively related to a load of a processor core corresponding to the target network card queue.
[0054] If the scheduling mode is a time division multiplexing mode, the judgment module is specifically configured to judge whether a descriptor application time of the target network card queue is less than an application time threshold value corresponding to the target network card queue.
[0055] The application time threshold value corresponding to the target network card queue is negatively related to the load of the processor core corresponding to the target network card queue.
[0056] The judgment module is further configured to: obtain a time slice coefficient corresponding to the target network card queue, and calculate a product of the time slice coefficient and the basic time unit as an application time threshold corresponding to the target network card queue.
[0057] The time slice coefficient corresponding to the target network card queue is negatively correlated with a load of a processor core corresponding to the target network card queue.
[0058] The judgment module is specifically configured to: obtain the time slice coefficient corresponding to the target network card queue from the first dual-port random access memory.
[0059] The method further includes:
[0060] The storage module is configured to: obtain a global enablement and a queue state of the network card queue; and if the global enablement is valid and the queue state is an active state, store a queue number of the network card queue to a first intermediate cache.
[0061] The aggregation module is configured to: aggregate the network card queue numbers in the first intermediate cache and a second intermediate cache to a first-in-first-out cache; and the second intermediate cache is configured to store queue numbers that need to be re-added to the first-in-first-out cache.
[0062] The joining module is specifically configured to: store the target network card queue number to the second intermediate cache, and aggregate the network card queue numbers in the first intermediate cache and the second intermediate cache to the first-in-first-out cache.
[0063] The storage module is specifically configured to: obtain the global enablement of the network card queue from the second dual-port random access memory, and obtain the queue state of the network card queue from the third dual-port random access memory.
[0064] The application module is further configured to: judge whether the applied queue information is empty; if yes, set the queue state of the target network card queue in the third dual-port random access memory to an inactive state; and if no, execute the step of applying the descriptor from the target network card queue according to the queue information.
[0065] The queue information of the target network card queue includes a queue pointer and a descriptor base address of the target network card queue.
[0066] The application module is specifically configured to: generate descriptor application information based on the target network card queue number and the queue information; the descriptor application information includes the target network card queue number, the queue pointer and the descriptor base address of the target network card queue; and apply the descriptor from the target network card queue according to the descriptor application information.
[0067] To achieve the above object, the present application provides an electronic device, which includes:
[0068] The memory is configured to store a computer program.
[0069] a processor for implementing the steps of the data transmission method as described above when executing a computer program.
[0070] To achieve the above object, the present application provides a non-volatile readable storage medium, which stores a computer program, and the computer program implements the steps of the data transmission method as described above when executed by a processor.
[0071] To achieve the above object, the present application provides a computer program product, which comprises a computer program, and the computer program implements the steps of the data transmission method as described above when executed by a processor.
[0072] According to the above scheme, the data transmission method provided by the present application comprises: when there is a data transmission requirement, obtaining a target network card queue number from a first-in-first-out cache; applying for queue information of a target network card queue according to the target network card queue number, and applying for a descriptor from the target network card queue according to the queue information, so as to perform data transmission by using the descriptor; determining a scheduling mode, and judging whether the target network card queue satisfies a continue applying principle corresponding to the scheduling mode; if yes, re-entering the step of applying for the queue information of the target network card queue according to the target network card queue number; if no, re-adding the target network card queue number into the first-in-first-out cache, and re-entering the step of obtaining the target network card queue number from the first-in-first-out cache.
[0073] The data transmission method provided by the present application, on the basis of polling and scheduling a queue by using a first-in-first-out cache, adds a step of judging whether a target network card queue satisfies a continue applying principle corresponding to a scheduling mode, if yes, continuing to schedule the target network card queue, and if no, scheduling a next network card queue in the first-in-first-out cache, so that the number of descriptors applied for each queue can be flexibly controlled, and the flexibility of multi-queue scheduling is improved. The present application also discloses a data transmission device, an electronic equipment, a non-volatile storage medium and a computer program product, which can also achieve the above technical effects.
[0074] It should be understood that the above general description and the following detailed description are only exemplary and cannot limit the present application. BRIEF DESCRIPTION OF DRAWINGS
[0075] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the prior art, the drawings needed to be used in the embodiments or the prior art description will be briefly introduced below. Obviously, the drawings in the following description only some embodiments of the present application, and those skilled in the art can also obtain other drawings according to these drawings without creating any creative labor. The drawings are used to provide further understanding of the present disclosure and constitute a part of the specification, and together with the following detailed embodiments, they are used to explain the present disclosure, but do not constitute a limitation on the present disclosure. In the drawings:
[0076] FIG. 1 is a flow chart of a data transmission method according to an example embodiment;
[0077] FIG. 2 is a flow chart of another data transmission method according to an example embodiment;
[0078] FIG. 3 is a basic implementation architecture diagram of a network card according to an example embodiment;
[0079] FIG. 4 is a state transition and corresponding operation flow chart of a state machine according to an example embodiment;
[0080] FIG. 5 is a structure diagram of a data transmission apparatus according to an example embodiment;
[0081] FIG. 6 is a structure diagram of an electronic device according to an example embodiment. DETAILED DESCRIPTION
[0082] The technical solutions in the embodiments of the present application will be described clearly and completely below with reference to the drawings in the embodiments of the present application. Obviously, the described embodiments are only some of the embodiments of the present application, not all the embodiments. Based on the embodiments in the present application, all other embodiments obtained by those of ordinary skill in the art without creative work fall within the scope of protection of the present application. In addition, in the embodiments of the present application, "first", "second", etc. are used to distinguish similar objects, not necessarily to describe a specific order or sequence.
[0083] The embodiments of the present application disclose a data transmission method, which improves the flexibility of multi-queue scheduling.
[0084] Referring to FIG. 1, a flow chart of a data transmission method according to an example embodiment is shown in FIG. 1, which includes:
[0085] S101: When there is a data transmission requirement, obtaining a target network card queue number from a first-in-first-out cache;
[0086] The execution subject of the present embodiment can be a network card, which is connected with a processor. When there is a data transmission requirement between the network card and the processor, a network card queue descriptor is selected, and then the obtained descriptor is used to realize data transmission between the network card and the processor.
[0087] In a specific implementation, the first-in-first-out cache is used to store the queue numbers of network card queues. When there is a data transmission requirement, a network card queue number is taken out from the first-in-first-out cache, which is the target network card queue number.
[0088] As a feasible implementation manner, before obtaining the target network card queue number from the first-in first-out cache when there is a data transmission requirement, the method further comprises: obtaining the global enable and the queue state of the network card queue; if the global enable is valid and the queue state is in an active state, storing the queue number of the network card queue into the first intermediate cache; and aggregating the network card queue numbers in the first intermediate cache and the second intermediate cache into the first-in first-out cache; wherein the second intermediate cache is used to store the queue numbers that need to be re-joined into the first-in first-out cache.
[0089] In a specific implementation, the first intermediate cache is used to store the queue numbers of the network card queues whose global enable is valid and whose queue state is in an active state, and the second intermediate cache is used to store the queue numbers that need to be re-joined into the first-in first-out cache after the network card queue is applied. After a network card queue is configured, the network card queue is in an active state, and the global enable and the queue state of each network card queue are sequentially judged. If the global enable is valid and the queue state is in an active state, the queue number of the network card queue is written into the first intermediate cache. After aggregation with the second intermediate cache, the queue number of the network card queue is written into the first-in first-out cache. The first intermediate cache herein can be a FIFO cache with a depth of 1, or can be other forms of caches, which are not specifically limited herein.
[0090] As a feasible implementation manner, the global enable and the queue state of the network card queue are obtained by: obtaining the global enable of the network card queue from the second dual-port random access memory, and obtaining the queue state of the network card queue from the third dual-port random access memory. In a specific implementation, the global enable and the queue state of the network card queue can be stored in the dual-port random access memory (RAM). The use of the dual-port random access memory can optimize the arbitration complexity when different units randomly read and write the dual-port random access memory, and improve the read and write efficiency. Meanwhile, storing the global enable and the queue state of the network card queue in different dual-port random access memories can further improve the efficiency of obtaining the global enable and the queue state of the network card queue.
[0091] S102: applying queue information of a target network card queue according to a target network card queue number, and applying a descriptor from the target network card queue according to the queue information, so as to use the descriptor for data transmission;
[0092] In this step, queue application information is sent to the queue management unit according to the target network card queue number, and the queue information of the target event returned by the queue management unit is received. The queue information of the target network card queue can include a queue pointer and a descriptor base address of the target network card queue, and can also include an empty signal, an error signal, a completion queue number, etc. The completion queue number is used to indicate the network card queue used to send a completion event to the processor after a data transmission event is completed.
[0093] As a feasible implementation, after applying for the queue information of the target network card queue according to the target network card queue number, the method further comprises: judging whether the applied queue information is empty; if yes, setting the queue state of the target network card queue in the third dual-port random access memory as an inactive state; if no, performing the step of applying for a descriptor from the target network card queue according to the queue information.
[0094] In a specific implementation, if the applied queue information is an empty signal, the queue state of the target network card queue in the third dual-port random access memory is set as an inactive state; if normal queue information is applied, a descriptor is applied from the target network card queue according to the queue information, and the descriptor is used for data transmission.
[0095] As a feasible implementation, the step of applying for a descriptor from the target network card queue according to the queue information comprises: generating descriptor application information based on the target network card queue number and the queue information; wherein the descriptor application information comprises the target network card queue number, the queue pointer of the target network card queue, and a descriptor base address; and applying for a descriptor from the target network card queue according to the descriptor application information.
[0096] In a specific implementation, the descriptor application information is constructed based on the target network card queue number and the applied queue information, and comprises the target network card queue number, the queue pointer of the target network card queue, and a descriptor base address, and the descriptor application information is sent to a descriptor acquisition unit to apply for a descriptor in the target network card queue from the descriptor acquisition unit.
[0097] It can be understood that each network card queue has a corresponding processor core, and the network card queue and the processor core can be in a one-to-one relationship or a many-to-one relationship. In order to meet the bandwidth requirement, each processor core can correspond to multiple network card queues.
[0098] S103: determining a scheduling mode, judging whether the target network card queue meets a continuous application principle corresponding to the scheduling mode; if yes, re-entering S102; if no, entering S104;
[0099] In this step, the currently configured scheduling mode is determined. As a feasible implementation, the step of determining the scheduling mode comprises: obtaining the scheduling mode from the first dual-port random access memory. In a specific implementation, the scheduling mode can be stored in the dual-port random access memory, and the dual-port random access memory can be used to optimize the arbitration complexity when different units randomly read and write the dual-port random access memory, thereby improving the read and write efficiency of the scheduling mode. Meanwhile, storing the global enablement of the network card queue, the queue state, and the scheduling mode in different dual-port random access memories can further improve the efficiency of obtaining the global enablement of the network card queue, the queue state, and the scheduling mode.
[0100] It can be understood that different scheduling modes correspond to different continuation application principles. The scheduling modes can include a round-robin mode and / or a time division multiplexing mode. The round-robin mode corresponds to a continuation application principle that the number of descriptor applications of the target network card queue is less than a round-robin coefficient corresponding to the target network card queue. The time division multiplexing mode corresponds to a continuation application principle that the time of descriptor application of the target network card queue is less than an application time threshold corresponding to the target network card queue.
[0101] When the target network card queue satisfies the continuation application principle corresponding to the scheduling mode, the descriptor in the target network card queue is continuously applied for data transmission. Otherwise, S104 is entered to select the next network card queue in the first-in-first-out cache to apply for a descriptor for data transmission.
[0102] It should be noted that the user can select one scheduling mode for configuration, or can configure multiple scheduling modes, so as to realize mixed scheduling of multiple scheduling modes, increase flexibility, adapt to complex requirements of the network card and the intelligent network card for sending descriptor scheduling, and be beneficial to precise transmission control, flow control of the multiple queues in a specific occasion, and load balancing between the queues. In addition, when the mixed scheduling of multiple scheduling modes is selected, the descriptor in the target network card queue can be continuously applied when the continuation application principle corresponding to any scheduling mode is satisfied, or the descriptor in the target network card queue can be continuously applied when the continuation application principle corresponding to all scheduling modes is satisfied, which is not limited here.
[0103] S104: The target network card queue number is re-added to the first-in-first-out cache, and S101 is re-entered.
[0104] In a specific implementation, when the target network card queue does not satisfy the continuation application principle corresponding to the scheduling mode, the target network card queue number is re-added to the first-in-first-out cache, and S101 is re-entered to select the next network card queue in the first-in-first-out cache to apply for a descriptor for data transmission.
[0105] As a feasible implementation manner, re-adding the target network card queue number to the first-in-first-out cache includes: storing the target network card queue number to a second intermediate cache, and aggregating the network card queue numbers in the first intermediate cache and the second intermediate cache to the first-in-first-out cache. In a specific implementation, the target network card queue number is stored to the second intermediate cache, and after aggregation with the second intermediate cache, the queue number of the target network card queue is re-written to the first-in-first-out cache. The second intermediate cache here can be a FIFO cache with a depth of 1, or other forms of cache, which is not limited here.
[0106] The data transmission method provided by the embodiment of the present application increases the step of judging whether the target network card queue meets the continue application principle corresponding to the scheduling mode on the basis of polling the scheduling queue of the first-in-first-out cache, if yes, the target network card queue is continuously scheduled, if no, the next network card queue in the first-in-first-out cache is scheduled, the number of application of each queue descriptor can be flexibly controlled, and the flexibility of multi-queue scheduling is improved.
[0107] The embodiment of the present application discloses a data transmission method, and relative to the previous embodiment, the technical solution is further described and optimized. Specifically,
[0108] Referring to FIG. 2, the flow chart of another data transmission method according to an exemplary embodiment is shown, as shown in FIG. 2, which includes:
[0109] S201: When there is a data transmission demand, obtaining a target network card queue number from the first-in-first-out cache;
[0110] S202: Applying queue information of the target network card queue according to the target network card queue number, and applying a descriptor from the target network card queue according to the queue information, so as to utilize the descriptor for data transmission;
[0111] S203: Determining a scheduling mode,
[0112] S204: If the scheduling mode is a polling mode, obtaining a polling coefficient corresponding to the target network card queue, judging whether the descriptor application times of the target network card queue are less than the polling coefficient corresponding to the target network card queue, if yes, re-entering S202, if no, entering S206;
[0113] In this step, if the scheduling mode is a polling mode, the polling coefficient corresponding to the target network card queue is obtained. As a feasible implementation manner, obtaining the polling coefficient corresponding to the target network card queue includes: obtaining the polling coefficient corresponding to the target network card queue from the first dual-port random access memory. In specific implementation, the polling coefficient corresponding to each network card queue can be stored in the dual-port random access memory, and the arbitration complexity when different units randomly read and write the dual-port random access memory can be optimized by using the dual-port random access memory, and the read-write efficiency of the scheduling mode is improved. At the same time, since the scheduling mode and the polling coefficient cannot be accessed at the same time, the scheduling mode and the polling coefficient can be stored in the same dual-port random access memory, that is, the first dual-port random access memory, which saves the hardware cost while not affecting the access efficiency.
[0114] Further, it is judged whether the descriptor application times of the target network card queue are less than the polling coefficient corresponding to the target network card queue. If yes, the descriptor in the target network card queue is continuously applied for data transmission. If not, S206 is entered to select the next network card queue in the first-in-first-out cache to apply for the descriptor for data transmission.
[0115] As an implementation, the polling coefficient corresponding to the target network card queue is negatively related to the load of the processor core corresponding to the target network card queue. In a specific implementation, the polling coefficient corresponding to the target network card queue can be configured according to the load of the processor core corresponding to the target network card queue. The greater the load of the corresponding processor core, the smaller the polling coefficient corresponding to the target network card queue, that is, the smaller the scheduling times of the target event, thereby reducing the processing pressure of the corresponding processor core. Conversely, the smaller the load of the corresponding processor core, the greater the polling coefficient corresponding to the target network card queue, that is, the greater the scheduling times of the target event, thereby balancing the processing pressure of each processor core.
[0116] S205: If the scheduling mode is the time division multiplexing mode, it is judged whether the descriptor application times of the target network card queue are less than the application time threshold corresponding to the target network card queue. If yes, S202 is re-entered. If not, S206 is entered.
[0117] In this step, if the scheduling mode is the time division multiplexing mode, it is judged whether the descriptor application times of the target network card queue are less than the application time threshold corresponding to the target network card queue. If yes, the descriptor in the target network card queue is continuously applied for data transmission. If not, S206 is entered to select the next network card queue in the first-in-first-out cache to apply for the descriptor for data transmission.
[0118] As an implementation, the application time threshold corresponding to the target network card queue is negatively related to the load of the processor core corresponding to the target network card queue. In a specific implementation, the application time threshold corresponding to the target network card queue can be configured according to the load of the processor core corresponding to the target network card queue. The greater the load of the corresponding processor core, the smaller the application time threshold corresponding to the target network card queue, that is, the smaller the scheduling time of the target event, thereby reducing the processing pressure of the corresponding processor core. Conversely, the smaller the load of the corresponding processor core, the greater the application time threshold corresponding to the target network card queue, that is, the greater the scheduling time of the target event, thereby balancing the processing pressure of each processor core.
[0119] As a feasible implementation, before judging whether the descriptor application time of the target network card queue is less than the application time threshold corresponding to the target network card queue, the method further includes: obtaining a time slice coefficient corresponding to the target network card queue, and calculating the product of the time slice coefficient and a basic time unit as the application time threshold corresponding to the target network card queue. In a specific implementation, the application time threshold corresponding to the network card queue can be configured by configuring the time slice coefficient, that is, the application time threshold is the product of the time slice coefficient and the basic time unit, and the basic time unit can be selected as 8ns-20ns, which is not limited here.
[0120] As a feasible implementation, obtaining the time slice coefficient corresponding to the target network card queue includes: obtaining the time slice coefficient corresponding to the target network card queue from the first dual-port random access memory. In a specific implementation, the time slice coefficient corresponding to each network card queue can be stored in the dual-port random access memory, and the arbitration complexity of random reading and writing of the dual-port random access memory by different units can be optimized by using the dual-port random access memory, thereby improving the reading and writing efficiency of the scheduling mode. At the same time, since the scheduling mode and the time slice coefficient are not accessed at the same time, the scheduling mode and the time slice coefficient can be stored in the same dual-port random access memory, that is, the first dual-port random access memory, thereby saving the hardware cost without affecting the access efficiency.
[0121] As an implementation, the time slice coefficient corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue. In a specific implementation, the time slice coefficient corresponding to the target network card queue can be configured according to the load of the processor core corresponding to the target network card queue, and then the application time threshold corresponding to the target time queue is configured. The greater the load of the corresponding processor core, the smaller the time slice coefficient corresponding to the target network card queue, that is, the smaller the scheduling time corresponding to the target event, thereby reducing the processing pressure of the corresponding processor core. On the contrary, the smaller the load of the corresponding processor core, the greater the time slice coefficient corresponding to the target network card queue, that is, the greater the scheduling time corresponding to the target event, thereby balancing the processing pressure of each processor core.
[0122] S206: re-adding the target network card queue number into the first-in-first-out cache and re-entering S201.
[0123] As can be seen, the embodiment realizes flexible scheduling of the network card queue by the polling mode and the time division multiplexing mode, and balances the processing pressure of each processor core.
[0124] An application embodiment provided by the present application is introduced below. A basic implementation architecture of a network card is shown in FIG. 3. A bus can adopt an APB (Advanced Peripheral Bus) bus, which is mainly used for reading and writing registers and configuring registers. A doorbell can be understood as a notification, which is used to notify that a certain network card queue is configured. After receiving the notification, a corresponding network card queue needs to be set to an active state.
[0125] The dual-port random access memory mainly stores registers such as queue active state, global enable, polling coefficient, time slice coefficient, and scheduling mode, which are stored in three dual-port random access memories.
[0126] A phase or decision unit: when a doorbell arrives or an APB configures a global enable, a global enable corresponding to a queue and a corresponding active state need to be read out. If both are high, that is, the queue is enabled and active, a queue number of the queue is written into a FIFO with a cache depth of 1 for queuing. An aggregation module combines two polling signals into one and writes them into a first-in-first-out cache.
[0127] A time slice unit: when a start signal is received, timing starts. When the timing ends, a timeout signal is given. The module can configure a timing length. The timing length is a time slice coefficient multiplied by a basic time unit. The basic time unit is generally 8 ns to 20 ns.
[0128] A control unit is used to control scheduling and is designed using a state machine. The control unit interacts with a queue management unit, applies for queue information of a certain queue from the queue management unit, and obtains the queue information returned by the queue management unit, including a queue pointer, a descriptor base address, an empty signal, an error signal, and a completed queue number. The control unit interacts with a descriptor acquisition unit, which is used to send an application for acquiring a descriptor to the descriptor acquisition unit, including a queue number, a descriptor base address, a completed queue number, a pointer, and the like, and receives a descriptor returned by the descriptor acquisition unit.
[0129] State transitions and corresponding operations of the state machine are shown in FIG. 4. The state transition and corresponding operation process includes:
[0130] 1. Idle state: the state machine enters this state at the beginning. In this state, whether there is a queue number in a first-in-first-out cache is queried. When there is no queue number in the first-in-first-out cache, the state machine remains in this state. When there is a queue number in the first-in-first-out cache, the state machine enters a queue number taking state.
[0131] 2. Queue number taking state: a queue number is taken from the first-in-first-out cache. After the queue number is taken, the state machine enters a RAM reading state.
[0132] 3. Read the RAM state: according to the queue number, take out the corresponding configuration information from the RAM, poll coefficient, time slice coefficient, scheduling mode, according to the scheduling mode to select into the polling mode or time division multiplexing mode.
[0133] If entering the polling mode, the following steps are executed:
[0134] Step 1: send the queue application information to the queue management module according to the queue number, and then wait for the returned information.
[0135] Step 2: if the queue is empty in the returned information, update the queue state, set the state corresponding to the queue to the inactive state, and return to the idle state.
[0136] Step 3: if the queue is not empty in the returned information, notify the descriptor acquisition module to acquire a sending descriptor.
[0137] Step 4: if the number of applications does not exceed the polling coefficient, continue to apply for the queue, and loop steps 1-3. If the polling coefficient is exceeded, write the queue number into the first-in-first-out buffer to requeue, and return to the idle state.
[0138] If entering the time division multiplexing mode, the following steps are executed:
[0139] Step 1: configure the time slice coefficient, start the time slice, and start timing.
[0140] Step 2: send the queue application information to the queue management module according to the queue number, and then wait for the returned information.
[0141] Step 3: if the queue is empty in the returned information, update the queue state, set the state corresponding to the queue to the inactive state, and return to the idle state.
[0142] Step 4: if the queue is not empty in the returned information, notify the descriptor acquisition module to acquire a sending descriptor.
[0143] Step 5: if the time slice does not time out, continue to apply for the queue, and loop steps 2-4. If the time slice times out, write the queue number into the first-in-first-out buffer to requeue, and return to the idle state.
[0144] Next, a data transmission device provided by the embodiment of the application is introduced, and the data transmission device described below can be referred to the data transmission method described above.
[0145] Referring to FIG. 5, a structure diagram of a data transmission device according to an exemplary embodiment is shown, as shown in FIG. 5, comprising:
[0146] The acquisition module 501 is configured to acquire a target network card queue number from the first-in first-out cache when there is a data transmission requirement.
[0147] The execution subject of the embodiment can be a network card, which is connected with a processor. When there is a data transmission requirement between the network card and the processor, a network card queue is selected to apply for a descriptor, and then the data transmission between the network card and the processor is implemented by using the applied descriptor.
[0148] In a specific implementation, the first-in first-out cache is configured to store the queue numbers of the network card queues. When there is a data transmission requirement, a network card queue number, that is, a target network card queue number, is acquired from the first-in first-out cache.
[0149] The application module 502 is configured to apply for queue information of a target network card queue according to the target network card queue number, and apply for a descriptor from the target network card queue according to the queue information, so as to perform data transmission by using the descriptor.
[0150] In this step, queue application information is sent to a queue management unit according to the target network card queue number, and queue information of a target event returned by the queue management unit is received. The queue information of the target network card queue can include a queue pointer and a descriptor base address of the target network card queue, and can also include a null signal, an error signal, a completion queue number, and the like. The completion queue number is used to indicate a network card queue used to send a completion event to the processor after a data transmission event is completed.
[0151] The judgment module 503 is configured to determine a scheduling mode, and determine whether the target network card queue meets a continue application principle corresponding to the scheduling mode. If yes, the work flow of the application module 502 is restarted. If no, the work flow of the joining module 504 is started.
[0152] In this step, a currently configured scheduling mode is determined. Different scheduling modes correspond to different continue application principles. The scheduling mode can include a round robin mode and / or a time division multiplexing mode. The continue application principle corresponding to the round robin mode is that the number of descriptor applications of the target network card queue is less than a round robin coefficient corresponding to the target network card queue. The continue application principle corresponding to the time division multiplexing mode is that the time of descriptor application of the target network card queue is less than an application time threshold value corresponding to the target network card queue.
[0153] When the target network card queue meets the continue application principle corresponding to the scheduling mode, the descriptor in the target network card queue is continuously applied for data transmission. Otherwise, the work flow of the joining module 504 is started, and the next network card queue in the first-in first-out cache is selected to apply for a descriptor for data transmission.
[0154] It should be noted that the user can select one scheduling mode for configuration, or configure multiple scheduling modes, so as to realize mixed scheduling of multiple scheduling modes, increase flexibility, adapt to the complex requirements of the network card and the intelligent network card for scheduling of the sending descriptor, and be beneficial to precise transmission control, flow control of the multiple queues and load balancing between the queues in a specific occasion. In addition, when the mixed scheduling of multiple scheduling modes is selected, the descriptors in the target network card queue can be configured to meet the continue application principle corresponding to any scheduling mode, or the descriptors in the target network card queue can be configured to meet the continue application principle corresponding to all scheduling modes, which is not limited here.
[0155] The joining module 504 is configured to re-join the target network card queue number in the first-in-first-out cache, and restart the working process of the obtaining module.
[0156] In a specific implementation, when the target network card queue does not meet the continue application principle corresponding to the scheduling mode, the target network card queue number is re-joined in the first-in-first-out cache, the working process of the obtaining module 501 is restarted, and the next network card queue in the first-in-first-out cache is selected to apply for a descriptor for data transmission.
[0157] The data transmission device provided by the embodiment of the application adds the step of judging whether the target network card queue meets the continue application principle corresponding to the scheduling mode on the basis of polling the scheduling queue in the first-in-first-out cache, if yes, the target network card queue is continuously scheduled, and if no, the next network card queue in the first-in-first-out cache is scheduled, so that the number of descriptors applied for each queue can be flexibly controlled, and the flexibility of the multiple queue scheduling is improved.
[0158] On the basis of the above embodiment, as an implementation manner, the judging module 503 is specifically configured to obtain the scheduling mode from the first dual-port random access memory.
[0159] On the basis of the above embodiment, as an implementation manner, if the scheduling mode is the polling mode, the judging module 503 is specifically configured to obtain the polling coefficient corresponding to the target network card queue, and judge whether the number of descriptor applications of the target network card queue is less than the polling coefficient corresponding to the target network card queue.
[0160] On the basis of the above embodiment, as an implementation manner, the judging module 503 is specifically configured to obtain the polling coefficient corresponding to the target network card queue from the first dual-port random access memory.
[0161] On the basis of the above embodiment, as an implementation manner, the polling coefficient corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue.
[0162] On the basis of the above embodiment, as an implementation form, if the scheduling mode is the time division multiplexing mode, the judging module 503 is specifically configured to: judge whether the descriptor application time of the target network card queue is less than the application time threshold corresponding to the target network card queue.
[0163] On the basis of the above embodiment, as an implementation form, the application time threshold corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue.
[0164] On the basis of the above embodiment, as an implementation form, the judging module 503 is further configured to: obtain the time slice coefficient corresponding to the target network card queue, and calculate the product of the time slice coefficient and the basic time unit as the application time threshold corresponding to the target network card queue.
[0165] On the basis of the above embodiment, as an implementation form, the time slice coefficient corresponding to the target network card queue is negatively correlated with the load of the processor core corresponding to the target network card queue.
[0166] On the basis of the above embodiment, as an implementation form, the judging module 503 is specifically configured to: obtain the time slice coefficient corresponding to the target network card queue from the first dual-port random access memory.
[0167] On the basis of the above embodiment, as an implementation form, the method further comprises:
[0168] The storage module is configured to: obtain the global enablement and the queue state of the network card queue; and if the global enablement is valid and the queue state is the active state, store the queue number of the network card queue into the first intermediate cache.
[0169] The aggregation module is configured to: aggregate the network card queue numbers in the first intermediate cache and the second intermediate cache into the first-in-first-out cache; and the second intermediate cache is configured to store the queue numbers that need to be re-joined into the first-in-first-out cache.
[0170] In a specific implementation, the first intermediate cache is configured to store the queue numbers of the network card queues whose global enablement is valid and whose queue state is the active state, and the second intermediate cache is configured to store the queue numbers that need to be re-joined into the first-in-first-out cache after the network card queues are applied. After a network card queue is configured, the network card queue is in the active state, the global enablement and the queue state of each network card queue are sequentially judged, if the global enablement is valid and the queue state is the active state, the queue number of the network card queue is written into the first intermediate cache, and after the aggregation with the second intermediate cache, the queue number of the network card queue is written into the first-in-first-out cache. The first intermediate cache herein can be a FIFO cache with a depth of 1, or can be other forms of cache, which are not specifically limited herein.
[0171] On the basis of the above embodiment, as an implementation form, the adding module 504 is specifically configured to store the target network card queue number into the second intermediate cache, and aggregate the network card queue numbers in the first intermediate cache and the second intermediate cache into the first-in-first-out cache.
[0172] In a specific implementation, the target network card queue number is stored into the second intermediate cache, and after the aggregation with the second intermediate cache, the queue number of the target network card queue is written into the first-in-first-out cache again. The second intermediate cache here can be a FIFO cache with a depth of 1, or other forms of cache, which are not specifically limited here.
[0173] On the basis of the above embodiment, as an implementation form, the storage module is specifically configured to obtain the global enablement of the network card queue from the second dual-port random access memory, and obtain the queue state of the network card queue from the third dual-port random access memory.
[0174] On the basis of the above embodiment, as an implementation form, the application module 502 is further configured to determine whether the applied queue information is empty; if yes, set the queue state of the target network card queue in the third dual-port random access memory to an inactive state; if not, execute the step of applying a descriptor from the target network card queue according to the queue information.
[0175] On the basis of the above embodiment, as an implementation form, the queue information of the target network card queue includes a queue pointer and a descriptor base address of the target network card queue.
[0176] On the basis of the above embodiment, as an implementation form, the application module 502 is specifically configured to generate descriptor application information based on the target network card queue number and the queue information; wherein the descriptor application information includes the target network card queue number, the queue pointer and the descriptor base address of the target network card queue; and apply a descriptor from the target network card queue according to the descriptor application information.
[0177] In a specific implementation, the descriptor application information is constructed based on the target network card queue number and the applied queue information, and includes the target network card queue number, the queue pointer and the descriptor base address of the target network card queue, and the descriptor application information is sent to the descriptor obtaining unit to apply a descriptor from the descriptor obtaining unit.
[0178] It can be understood that each network card queue has a corresponding processor core, and the network card queue and the processor core can be in a one-to-one relationship or a many-to-one relationship. In order to meet the bandwidth requirement, each processor core can correspond to multiple network card queues.
[0179] With regard to the apparatus in the above-described embodiments, the specific manner in which the various modules perform operations has been described in detail in the embodiments related to the method, and will not be described in detail here.
[0180] Based on the hardware implementation of the above program modules, and in order to implement the method of the embodiments of the present application, the embodiments of the present application also provide an electronic device. FIG. 6 is a structural diagram of an electronic device according to an exemplary embodiment. As shown in FIG. 6, the electronic device includes:
[0181] The communication interface 1 is capable of information interaction with other devices such as network devices and the like;
[0182] The processor 2 is connected with the communication interface 1 to realize information interaction with other devices, and is used to run a computer program to execute the data transmission method provided by one or more technical solutions described above. The computer program is stored on the memory 3.
[0183] Of course, in actual application, various components in the electronic device are coupled together through a bus system 4. It can be understood that the bus system 4 is used to realize the connection and communication between the components. The bus system 4 includes not only a data bus, but also a power bus, a control bus and a status signal bus. However, in order to clearly illustrate, various buses are marked as the bus system 4 in FIG. 6.
[0184] The memory 3 in the embodiments of the present application is used to store various types of data to support the operation of the electronic device. Examples of these data include: any computer program used to operate on the electronic device.
[0185] It can be understood that the memory 3 can be a volatile memory or a non-volatile memory, and can also include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a ferromagnetic random access memory (FRAM), a flash memory, a magnetic surface memory, an optical disc, or a compact disc read-only memory (CD-ROM). The magnetic surface memory can be a disk memory or a tape memory. The volatile memory can be a random access memory (RAM) used as an external cache. By way of example but not limitation, many forms of RAM can be used, such as static random access memory (SRAM), synchronous static random access memory (SSRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), sync link dynamic random access memory (SLDRAM), and direct rambus random access memory (DRRAM).The memory 3 described in the embodiments of the present application is intended to include, but not limited to, these and any other suitable types of memory.
[0186] The method disclosed in the embodiments of the present application can be applied to or implemented by the processor 2. The processor 2 can be an integrated circuit chip with processing capability. In the implementation process, the steps of the above method can be completed by the integrated logic circuit or the instruction of the software form in the processor 2. The processor 2 described above can be a general processor, a DSP, or other programmable logic device, discrete gate or transistor logic device, discrete hardware component, etc. The processor 2 can implement or execute the disclosed methods, steps and logic block diagrams in the embodiments of the present application. The general processor can be a microprocessor or any conventional processor, etc. In combination with the steps of the method disclosed in the embodiments of the present application, the hardware code processor can be directly embodied to execute the completion, or the combination of hardware and software modules in the code processor can be executed to complete. The software module can be located in the storage medium, which is located in the memory 3. The processor 2 reads the program in the memory 3 and combines the hardware to complete the steps of the above method.
[0187] The processor 2 executes the program to implement the corresponding flow in each method of the embodiments of the present application. For brevity, it will not be repeated here.
[0188] In the exemplary embodiments, the embodiments of the present application also provide a non-volatile readable storage medium, which stores a computer program. The computer program can be executed by the processor 2 to complete the above method steps.
[0189] In the exemplary embodiments, the embodiments of the present application also provide a computer program product, which includes a computer program. The computer program is executed by the processor 2 to complete the above method steps.
[0190] Those skilled in the art can understand that all or part of the steps of the above method embodiments can be completed by the related hardware of the computer program instruction. The above computer program can be stored in a non-volatile readable storage medium. When the computer program is executed, the execution includes the steps of the above method embodiments. Or, when the above integrated units of the present application are realized in the form of software function modules and sold or used as independent products, they can also be stored in a non-volatile readable storage medium. Based on such understanding, the technical solutions of the embodiments of the present application can be embodied in the form of software products, which are stored in a non-volatile readable storage medium, including a plurality of instructions for making an electronic device (which can be a personal computer, a server, a network device, etc.) execute all or part of the embodiments of the present application.
[0191] The above merely provides the specific implementation of the present application, but the protection scope of the present application is not limited to this. Any person skilled in the art can easily think of the changes or replacements within the technical range disclosed by the present application, and all the changes and replacements should be covered within the protection scope of the present application.
Claims
1. A data transmission method, characterized by, The application is applied to a network card, comprising: when there is a data transmission requirement, obtaining a target network card queue number from a first-in-first-out cache; applying for queue information of a target network card queue according to the target network card queue number, and applying for a descriptor from the target network card queue according to the queue information, so as to use the descriptor for data transmission; determining a scheduling mode, and judging whether the target network card queue meets a continuous application principle corresponding to the scheduling mode; if yes, re-entering the step of applying for queue information of a target network card queue according to the target network card queue number; if no, re-adding the target network card queue number to the first-in-first-out cache, and re-entering the step of obtaining a target network card queue number from the first-in-first-out cache.
2. The data transmission method of claim 1, wherein, determining a scheduling mode, comprising: obtaining a scheduling mode from a first dual-port random access memory.
3. The data transmission method of claim 1, wherein, if the scheduling mode is a polling mode, judging whether the target network card queue meets a continuous application principle corresponding to the scheduling mode, comprising: obtaining a polling coefficient corresponding to the target network card queue; judging whether the descriptor application times of the target network card queue are less than the polling coefficient corresponding to the target network card queue.
4. The data transmission method of claim 3, wherein, obtaining a polling coefficient corresponding to the target network card queue, comprising: obtaining the polling coefficient corresponding to the target network card queue from the first dual-port random access memory.
5. The data transmission method of claim 3, wherein, The polling coefficient corresponding to the target network card queue is negatively related to the load of a processor core corresponding to the target network card queue.
6. The data transmission method of claim 1, wherein, if the scheduling mode is a time division multiplexing mode, judging whether the target network card queue meets a continuous application principle corresponding to the scheduling mode, comprising: judging whether the descriptor application time of the target network card queue is less than an application time threshold value corresponding to the target network card queue.
7. The data transmission method of claim 6, wherein, The application time threshold value corresponding to the target network card queue is negatively related to the load of a processor core corresponding to the target network card queue.
8. The data transmission method of claim 6, wherein, Before judging whether the descriptor application time of the target network card queue is less than the application time threshold value corresponding to the target network card queue, further comprising: obtaining a time slice coefficient corresponding to the target network card queue, and calculating the product of the time slice coefficient and a basic time unit as the application time threshold value corresponding to the target network card queue.
9. The data transmission method of claim 8, wherein, The time slice coefficient corresponding to the target network card queue is negatively related to the load of a processor core corresponding to the target network card queue.
10. The data transmission method of claim 8, wherein, Obtaining a time slice coefficient corresponding to the target network card queue, comprising: obtaining the time slice coefficient corresponding to the target network card queue from the first dual-port random access memory.
11. The data transmission method of claim 1, wherein, Before obtaining a target network card queue number from a first-in-first-out cache when there is a data transmission requirement, further comprising: obtaining a global enablement and a queue state of a network card queue; if the global enablement is valid and the queue state is an active state, storing the queue number of the network card queue to a first intermediate cache; aggregating the network card queue numbers in the first intermediate cache and a second intermediate cache to the first-in-first-out cache; wherein the second intermediate cache is used to store the queue numbers that need to be re-added to the first-in-first-out cache.
12. The data transmission method of claim 11, wherein, Re-adding the target network card queue number to the first-in-first-out cache, comprising: The target network card queue number is stored in the second intermediate cache, and the network card queue numbers in the first and second intermediate caches are aggregated in the first-in-first-out cache.
13. The data transmission method of claim 11, wherein, The global enablement and queue state of the network card queue are acquired, including: The global enablement of the network card queue is acquired from the second dual-port random access memory, and the queue state of the network card queue is acquired from the third dual-port random access memory.
14. The data transmission method of claim 13, wherein, After the queue information of the target network card queue is applied according to the target network card queue number, the following steps are further included: It is judged whether the applied queue information is empty or not. If yes, the queue state of the target network card queue in the third dual-port random access memory is set to an inactive state. If no, the step of applying a descriptor from the target network card queue according to the queue information is executed.
15. The data transmission method of claim 1, wherein, The queue information of the target network card queue includes a queue pointer and a descriptor base address of the target network card queue.
16. The data transmission method of claim 15, wherein, The step of applying a descriptor from the target network card queue according to the queue information includes: The descriptor application information is generated based on the target network card queue number and the queue information, wherein the descriptor application information includes the target network card queue number, the queue pointer and the descriptor base address of the target network card queue. A descriptor is applied from the target network card queue according to the descriptor application information.
17. A data transmission apparatus, characterized by comprising: The application is applied to a network card, including: The obtaining module is configured to obtain a target network card queue number from a first-in-first-out cache when there is a data transmission demand. The application module is configured to apply queue information of a target network card queue according to the target network card queue number, and apply a descriptor from the target network card queue according to the queue information, so as to perform data transmission by using the descriptor. The judgment module is configured to determine a scheduling mode, judge whether the target network card queue satisfies a continuous application principle corresponding to the scheduling mode or not, if yes, restart a work flow of the application module, and if no, start a work flow of a joining module. The joining module is configured to re-join the target network card queue number in the first-in-first-out cache, and restart a work flow of the obtaining module.
18. An electronic device, comprising: It includes: A memory is configured to store a computer program. A processor is configured to execute the computer program to implement steps of the data transmission method according to any one of claims 1 to 16.
19. A non-volatile readable storage medium, characterized by The non-volatile readable storage medium stores a computer program, and the computer program is executed to implement steps of the data transmission method according to any one of claims 1 to 16.
20. A computer program product, characterised in that, The computer program is executed by the processor to implement steps of the data transmission method according to any one of claims 1 to 16.
Citation Information
Patent Citations
Data scheduling method and device, network equipment and computer storage medium
CN110830388A
Multi-queue scheduling method and device based on FPGA, computer equipment and storage medium
CN111522643A
Dynamic configurable high-performance queue scheduling method, system, processor and protocol
CN114827048A
Data transmission method, device and equipment, storage medium and computer program product
CN118113445A
Network communication method and apparatus, and electronic device
WO2020087523A1