CN118057792A - Method and device for transmitting data - Google Patents

Method and device for transmitting data Download PDF

Info

Publication number
CN118057792A
CN118057792A CN202211456651.2A CN202211456651A CN118057792A CN 118057792 A CN118057792 A CN 118057792A CN 202211456651 A CN202211456651 A CN 202211456651A CN 118057792 A CN118057792 A CN 118057792A
Authority
CN
China
Prior art keywords
application
communication
configuration information
corresponding relation
data stream
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202211456651.2A
Other languages
Chinese (zh)
Inventor
刘卿
周超
周辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211456651.2A priority Critical patent/CN118057792A/en
Publication of CN118057792A publication Critical patent/CN118057792A/en
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

The embodiment of the application provides a method and a device for transmitting data, wherein the method comprises the following steps: generating first configuration information, wherein the first configuration information indicates a forwarding priority of a data stream of a first process, and when the first process is a primary process of a first application and the second process is a secondary process of the first application, the forwarding priority of the data stream of the first process is higher than the forwarding priority of the data stream of the second process, or when the first process is a secondary process of the first application and the second process is a primary process of the first application, the forwarding priority of the data stream of the first process is lower than the forwarding priority of the data stream of the second process; and sending the data stream of the first process according to the first configuration information. The method can preferentially transmit the data streams of the main process in the application and optimize the application performance by identifying the main process of the application and setting the forwarding priority of the data streams of the main process to be higher than the forwarding priority of the data streams of other processes.

Description

Method and device for transmitting data
Technical Field
The present application relates to the field of software engineering technology, and more particularly, to a method and apparatus for transmitting data.
Background
In recent years, with the rapid growth of computing power demands and the continuous development of data centers, the high performance computing (high performance computing, HPC) operated by supercomputer centers has been increasingly applied to artificial intelligence (ARTIFICIAL INTELLIGENCE, AI). The optimization of application performance of the application can improve the calculation efficiency and save the calculation cost. In the existing scheme, the model, algorithm, architecture and the like are optimized mainly through software means to realize application performance optimization. The HPC/AI is complex and various in application, different in application and optimization methods corresponding to different scenes, and high in optimization cost.
Disclosure of Invention
The application provides a method and a device for transmitting data, which can preferentially transmit the data flow of a key process in an application and optimize the application performance.
In a first aspect, there is provided a method of transmitting data, the method comprising: generating first configuration information, where the first configuration information is used to indicate a forwarding priority of a data stream of a first process, where when the first process is a primary process of a first application and the second process is a secondary process of the first application, the forwarding priority of the data stream of the first process is higher than the forwarding priority of the data stream of the second process, or when the first process is a secondary process of the first application and the second process is a primary process of the first application, the forwarding priority of the data stream of the first process is lower than the forwarding priority of the data stream of the second process; and sending the data stream of the first process according to the first configuration information.
Based on the scheme, the data flow of the main process in the application can be preferentially scheduled and the application performance can be optimized by identifying the main process in the application and setting the forwarding priority of the data flow of the main process to be higher than that of the data flow of other processes.
With reference to the first aspect, in some implementations of the first aspect, generating second configuration information and a first corresponding relation, where the second configuration information includes a communication weight of a source process to communicate with a destination process, the first corresponding relation includes a corresponding relation between the source process, the destination process, and queue pair information of the source process, the first process belongs to the source process or the destination process, and the communication weight is related to a type of a communication operator related to the first process; and generating a second corresponding relation according to the second configuration information and the first corresponding relation, wherein the second corresponding relation comprises the corresponding relation between the communication weight and the queue pair information.
Based on the scheme, the communication weight of the first process and the communication of the target process can be determined through the type of the communication operator related to the first process, so that the corresponding relation between the queue pair information of the first process and the communication weight can be determined, and the hardware layer can forward the data flow of the first process based on the communication weight.
With reference to the first aspect, in some implementations of the first aspect, the first configuration information is generated according to the second correspondence, and a forwarding priority of a data flow of the first process corresponds to the communication weight. For example, the communication weight may be translated into a forwarding priority of the data flow of the first process.
Optionally, the first configuration information includes a correspondence between a forwarding priority of the data flow of the first process and the queue pair information of the first process.
Based on the above scheme, the corresponding relation between the queue pair information of the first process and the forwarding priority of the data stream of the first process can be determined based on the corresponding relation between the queue pair information of the first process and the communication weight, so that the hardware layer can forward the data stream of the first process preferentially.
With reference to the first aspect, in some implementations of the first aspect, the forwarding priority is represented by a value of a differentiated services code point, and when the first process is a primary process of the first application and the second process is a secondary process of the first application, the value of the differentiated services code point of the data flow of the first process is greater than the value of the differentiated services code point corresponding to the data flow of the second process; or when the first process is a secondary process of the first application and the second process is a primary process of the first application, the value of the differentiated services code point of the data stream of the first process is smaller than the value of the differentiated services code point corresponding to the data stream of the second process.
Illustratively, the communication weight may be converted to a value of the differentiated services code point.
Based on the above scheme, the hardware layer can forward the data stream of the first process based on the queue pair information of the first process and the value of the differentiated service coding point of the data stream of the first process, so that the data stream of the main process in the application can be preferentially scheduled.
With reference to the first aspect, in certain implementation manners of the first aspect, the first process is identified according to a communication characteristic of the process, where the communication characteristic includes a dependency relationship between processes in the first application, and at least one of usage conditions of a communication operator in the first application.
The first process may be identified by analyzing trends in data flows of processes in the application to determine dependencies between the processes, for example. Or by analyzing the use of the communication operator.
In a second aspect, an apparatus for optimizing performance of an application is provided, where the apparatus includes a processing module and a transceiver module, where the processing module is configured to generate first configuration information, where the first configuration information is used to indicate a forwarding priority of a data flow of a first process, where when the first process is a primary process of the first application and the second process is a secondary process of the first application, the forwarding priority of the data flow of the first process is higher than the forwarding priority of the data flow of the second process, or where when the first process is a secondary process of the first application and the second process is a primary process of the first application, the forwarding priority of the data flow of the first process is lower than the forwarding priority of the data flow of the second process; the transceiver module is configured to send a data stream of the first process according to the first configuration information.
With reference to the second aspect, in some implementations of the second aspect, the processing module is further configured to generate second configuration information and a first correspondence, where the second configuration information includes a communication weight of a source process to communicate with a destination process, the first correspondence includes a correspondence between queue pair information of the source process, the destination process, and the first process belongs to the source process or the destination process, and the communication weight is related to a type of a communication operator related to the first process; and generating a second corresponding relation according to the second configuration information and the first corresponding relation, wherein the second corresponding relation comprises the corresponding relation between the communication weight and the queue pair information.
With reference to the second aspect, in some implementations of the second aspect, the processing module is specifically configured to generate the first configuration information according to the second correspondence, where a forwarding priority of a data flow of the first process corresponds to the communication weight. For example, the communication weight may be translated into a forwarding priority of the data flow of the first process.
Optionally, the first configuration information includes a correspondence between a forwarding priority of the data flow of the first process and the queue pair information of the first process.
With reference to the second aspect, in some implementations of the second aspect, the forwarding priority is represented by a value of a differentiated services code point, and when the first process is a primary process of the first application and the second process is a secondary process of the first application, the value of the differentiated services code point of the data flow of the first process is greater than the value of the differentiated services code point corresponding to the data flow of the second process; or when the first process is a secondary process of the first application and the second process is a primary process of the first application, the value of the differentiated services code point of the data stream of the first process is smaller than the value of the differentiated services code point corresponding to the data stream of the second process.
Illustratively, the communication weight may be converted to a value of the differentiated services code point.
With reference to the second aspect, in some implementations of the second aspect, the processing unit is further configured to identify the first process according to a communication characteristic of the process, where the communication characteristic includes a dependency relationship between processes in the first application, and at least one of usage situations of a communication operator in the first application.
The first process may be identified by analyzing trends in data flows of processes in the application to determine dependencies between the processes, for example. Or by analyzing the use of the communication operator.
In a third aspect, a computing device is provided that includes a processor and a memory, and optionally, an input-output interface. Wherein the processor is configured to control the input-output interface to send and receive information, the memory is configured to store a computer program, and the processor is configured to call and run the computer program from the memory, so that the method of the first aspect or any one of the possible implementation manners of the first aspect is performed.
In the alternative, the processor may be a general purpose processor, and may be implemented in hardware or in software. When implemented in hardware, the processor may be a logic circuit, an integrated circuit, or the like; when implemented in software, the processor may be a general-purpose processor, implemented by reading software code stored in a memory, which may be integrated in the processor, or may reside outside the processor, and exist separately.
In a fourth aspect, a cluster of computing devices is provided, comprising at least one computing device, each computing device comprising a processor and a memory; the processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device to cause the cluster of computing devices to perform the method of the first aspect or any one of the possible implementations of the first aspect.
In a fifth aspect, a chip is provided, which obtains instructions and executes the instructions to implement the method of the first aspect and any implementation manner of the first aspect.
Optionally, as an implementation manner, the chip includes a processor and a data interface, where the processor reads instructions stored on a memory through the data interface, and performs the method in any implementation manner of the first aspect and the first aspect.
Optionally, as an implementation manner, the chip may further include a memory, where the memory stores instructions, and the processor is configured to execute the instructions stored on the memory, where the instructions, when executed, are configured to perform the method in the first aspect and any implementation manner of the first aspect.
In a sixth aspect, there is provided a computer program product comprising instructions which, when executed by a blockchain node, cause the blockchain node to perform the method as in any of the implementations of the first aspect and the first aspect described above.
In a seventh aspect, there is provided a computer program product comprising instructions which, when executed by a cluster of computing devices, cause the cluster of computing devices to perform a method as in any of the implementations of the first aspect and the first aspect described above.
An eighth aspect provides a computer readable storage medium comprising computer program instructions which, when executed by a computing device, perform a method as in the first aspect and any implementation of the first aspect.
By way of example, these computer-readable stores include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (erasable PROM, EPROM), flash memory, electrically EPROM (EEPROM), and hard disk drive (HARD DRIVE).
Alternatively, as an implementation manner, the storage medium may be a nonvolatile storage medium.
A ninth aspect provides a computer readable storage medium comprising computer program instructions which, when executed by a cluster of computing devices, perform a method as in the first aspect and any implementation of the first aspect above.
By way of example, these computer-readable stores include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (erasable PROM, EPROM), flash memory, electrically EPROM (EEPROM), and hard disk drive (HARD DRIVE).
Alternatively, as an implementation manner, the storage medium may be a nonvolatile storage medium.
Drawings
Fig. 1 is a schematic diagram of an application communication scenario to which an embodiment of the present application is applicable.
Fig. 2 is a schematic diagram of data transmission according to an embodiment of the present application.
Fig. 3 is a schematic block diagram of a system architecture provided by an embodiment of the present application.
Fig. 4 is a schematic flow chart of a method for transmitting data according to an embodiment of the present application.
Fig. 5 is a schematic diagram of another data transmission according to an embodiment of the present application.
Fig. 6 is a schematic block diagram of an apparatus 600 provided by an embodiment of the present application.
Fig. 7 is a schematic architecture diagram of a computing device 700 according to an embodiment of the present application.
Fig. 8 is a schematic architecture diagram of a computing device cluster according to an embodiment of the present application.
Fig. 9 is a schematic diagram of a connection between computing devices 700A and 700B via a network provided by an embodiment of the present application.
Detailed Description
The technical scheme of the application will be described below with reference to the accompanying drawings.
The present application will present various aspects, embodiments, or features about a system comprising a plurality of devices, components, modules, etc. It is to be understood and appreciated that the various systems may include additional devices, components, modules, etc. and/or may not include all of the devices, components, modules etc. discussed in connection with the figures. Furthermore, combinations of these schemes may also be used.
In addition, in the embodiments of the present application, words such as "exemplary," "for example," and the like are used to indicate examples, illustrations, or descriptions. Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. Rather, the term use of an example is intended to present concepts in a concrete fashion.
In embodiments of the present application, "corresponding (corresponding, relevant)" and "corresponding (corresponding)" may sometimes be used in combination, and it should be noted that the meaning of their intended expression is consistent when de-emphasizing their distinction.
The service scenario described in the embodiment of the present application is to more clearly illustrate the technical solution of the embodiment of the present application, and does not constitute a limitation on the technical solution provided by the embodiment of the present application, and as a person of ordinary skill in the art can know that, with the evolution of the network architecture and the appearance of a new service scenario, the technical solution provided by the embodiment of the present application is equally applicable to similar technical problems.
Reference in the specification to "one embodiment" or "some embodiments" or the like means that a particular feature, structure, or characteristic described in connection with the embodiment is included in one or more embodiments of the application. Thus, appearances of the phrases "in one embodiment," "in some embodiments," "in other embodiments," and the like in the specification are not necessarily all referring to the same embodiment, but mean "one or more but not all embodiments" unless expressly specified otherwise. The terms "comprising," "including," "having," and variations thereof mean "including but not limited to," unless expressly specified otherwise.
In the present application, "at least one" means one or more, and "a plurality" means two or more. "and/or", describes an association relationship of an association object, and indicates that there may be three relationships, for example, a and/or B, and may indicate: including the case where a alone exists, both a and B together, and B alone, where a, B may be singular or plural. The character "/" generally indicates that the context-dependent object is an "or" relationship. "at least one of" or the like means any combination of these items, including any combination of single item(s) or plural items(s). For example, at least one (one) of a, b, or c may represent: a, b, c, a and b, a-c, b-c, or a-b-c, wherein a, b, c may be single or plural.
For ease of understanding, related terms and concepts that may be involved in embodiments of the present application are described below.
1. Unified communication interface (unified communication X UCX)
UCX is a communication framework for data processing and high performance computing based on remote direct memory access (remote direct memroy access, RDMA), which is one of its underlying cores. UCX can be understood as a middleware located between an application and RDMA API, encapsulating a layer of more developed interfaces to upper level users. The UCX provides an abstract set of communication primitives that provide an optimized communication layer for the data center application. UCX uses high-speed network to make inter-node communication and uses shared memory mechanism to make effective intra-node communication.
2. OpenFabrics Enterprise edition (OpenFabrics enterprise distribution, OFED)
OFED is a set of open source software drivers, core kernel code, middleware, and user level interface programs supporting the InfiniBand (IB) protocol, primarily for high performance computing and enterprise data center management. The infiniband is an open processor and io interconnection standard, has the characteristics of high bandwidth, low delay and the like, and is one of the mainstream networks of HPC interconnection at present. infiniband supports a variety of communication services and communication semantics, simplifying and accelerating the connection between servers, while supporting the connection of servers to remote storage and network devices.
3. Queue Pair (QP)
QP is a virtual interface between hardware and software according to the description in IB protocol. QPs may be a queue structure that stores tasks in order that software issues to hardware. The QP may be understood as a process-level resource, each process may use at least one QP. For example, if there are two nodes, the two nodes may each use one QP; or either one of the two nodes may use multiple QPs, one node communicating using multiple QPs primarily to divide traffic into several channels, e.g., channels that can differentiate between different traffic data.
4. Differentiated services code point (DIFFERENTIATED SERVICES code point, DSCP)
The internet engineering task Force (THE INTERNET ENGINEERING TASK Force, IETF) issued QoS classification criteria for differentiated services Diff-Serv (Differentiated Service). It prioritizes by encoding values in the class of service (TOS) identification bytes of each packet IP header, for example, with the 6 bits used (bits) and the 2 bits unused, the first 6 bits in this TOS identification being referred to as DSCP, the value of DSCP can range from 0 to 63.
In recent years, with the rapid increase of computing power demands and the continuous development of data centers, the HPC/AI application of the super computing center is more and more running. The application performance is optimized, and the method has key effects on improving the calculation efficiency and saving the calculation cost. The current application performance optimization is mainly performed through software means such as models, algorithms, architectures and the like. The HPC/AI is complex and various in application, different in application and different in scene optimization method, and high in optimization cost.
FIG. 1 is a schematic diagram of a communication scenario for an HPC/AI application. As shown in fig. 1, the communication scenario includes three nodes (node #1, node #2, and node # 3) and a switch. Any two of the three nodes may communicate through the switch.
Wherein, the node #1 may run a process (rank) 0, rank1, and rank2; the nodes #2 can run rank3 to rank5; the nodes #3 may run rank6 through rank8. There is a dependency relationship between the processes in the application, as shown in fig. 1, the concurrency of the rank4 and rank2 communication and the rank5 and rank1 communication depends on the communication between rank0 and rank3, the rank7 and rank5 communication, and the concurrency of the rank8 and rank4 communication depends on the communication between rank3 and rank 6. Namely, in the phase A, after the communication of the rank0 and the rank3 is completed, the rank4 and the rank5 are respectively communicated with the rank2 and the rank 1; in B-stage, rank3 and rank6 communicate; finally, in stage C, rank7 and rank8 communicate with rank5 and rank4, respectively. Among them, rank0, rank3, and rank6 can be understood as the main (key) processes. It can be seen that inter-process dependencies within an application can affect process concurrency.
In existing schemes, the underlying communication network generally cannot identify which process is the primary process, e.g., for the underlying network, the 3 processes rank3, rank4, rank5 may not be different. As shown in fig. 2, after entering the B-stage, if the communication between the rank4 and the rank5 has not ended, the network traffic of the communication between the rank3 and the rank6 is disturbed. In fig. 2, a QP is shown to include rank3, rank4, and rank5 packets, and rank4 and rank5 packets are the majority. In severe cases, for example, when the rank4 and the rank5 perform ultra-large packet communication, the long tail delay of the communication between the rank3 and the rank6 is deteriorated, so that the trigger timing of the stage C is delayed, thereby reducing the overall calculation concurrency of the application and affecting the overall performance of the application.
For the scene, processes 0, 3 and 6 need to be optimized to improve application concurrency and reduce application running time. For example, the rank arrangement can be optimized to reduce communication interference of the secondary process to the primary process. However, the HPC/AI application has complex internal logic and various application types, and the method and the application are strongly coupled, so that time and labor are consumed, the inter-process interference cannot be completely relieved, and the limitation is large.
In view of this, the embodiment of the application provides a method for transmitting data, which can optimize application performance by preferentially scheduling traffic of key processes in an application. The method has universality for optimizing the application performance of the HPC/AI.
Fig. 3 shows a schematic diagram of a system architecture according to an embodiment of the present application. The application scene of the system architecture can perform performance optimization for applications such as HPC/AI in the data center. The system architecture may include a software layer, a driver layer, and a hardware layer. The software layers may include, for example, HPC/AI applications, messaging interfaces (MESSAGE PASSING INTERFACE, MPI), and UCX, among others. Wherein the MPI software layer provides a set of parallel programming libraries for high performance computing, such as common MPI OpenMPI, intelMPI, MPICH, etc. HPC applications are typically developed based on the software stack; the driver layer may be OFED, which provides the MPI software layer with the Verbs interface in the north direction and interfaces with the hardware layer network card in the south direction. For example, common OFED is MLNX-OFED; the hardware layer may include a network card. The hardware layer network card is responsible for the communication of the bottom layer network, and interfaces with network equipment such as a switch, for example, the common network card in a data center is provided with ConnectX series network cards of MLNX manufacturers.
Fig. 4 is a schematic flow chart of a method for transmitting data according to an embodiment of the present application. The method may be performed by a first node, which may be used to execute an HPC/AI application. The first node may internally run a plurality of processes of the application. As shown in fig. 4, the method may include the following steps.
Optionally, S410, a first process in the application is identified according to the communication characteristics of the process.
Wherein the communication characteristic may comprise a dependency between processes in the first application. The first process may be a primary process or a secondary process of the application.
Illustratively, if the communication between process #1 and process #2 depends on the communication between other processes, the other processes may be understood as the primary process of the application, and the process #1 and process #2 may be secondary processes of the first application. Taking fig. 2 as an example, the nodes #1 and #2 include rank 0 to rank2, rank 3 to rank 5, respectively, and the communication features may include dependency relationships between rank 0 to rank 5. The communication between rank 5 and rank 1, and the communication between rank 4 and rank2 depends on the communication between rank 3 and rank 0, then the rank 0 and rank 3 can be understood as the primary processes of the application, and the rank 1, rank2, rank 4, and rank 5 can be understood as the secondary processes of the application.
In one possible implementation, the first process may be identified by analyzing (profiling) the dependencies between processes by an analysis tool.
For example, dependencies between processes may be determined by analyzing trends (trace) of data streams of the processes by an analysis tool. For example, in the application shown in fig. 2, the analysis tool may analyze that the destination process of the data stream transmission of rank 0 is rank 3, and the data streams of ranks 0 to rank 3 may trigger rank 4 to transmit the data stream to rank 2, and rank 5 to transmit the data stream to rank 1, so it may be determined that the ranks 0 and 3 are the main processes of the application.
It should be understood that the above dependency relationships between rank 0 and rank 5 are merely examples, and in practical applications, the number of processes may be greater, and the dependency relationships between processes may be more complex, which is not limited by the present application.
In another possible implementation, the communication feature may further include information of a use condition of the communication operator in the application. I.e. the first process is identified by analyzing the use of the applied communication operator.
In particular, at least one communication operator may be included in one application, and the use of each communication operator may be different. The use condition of the communication operators in the application can comprise the operation duration of each communication operator, the occupied resource size and the like.
For example, if the analysis tool analyzes that one or more communication operator operations are longer in duration, the communication operator may be related to the performance of the application. The process associated with the communication operator may be understood as the primary process of the application.
Wherein the at least one communication operator may be of a plurality of types. The types of communication operators may include, for example, point-to-point (point to point), broadcast (broadcast), many-to-one (also referred to as incast), and the like.
Specific implementation of the analysis tool to analyze the communication characteristics of the application may refer to existing related descriptions, for example, for HPC applications, a common open source tool has comprehensive performance monitoring (INTEGRATED PERFORMANCE MONITORING, IPM), tuning and Analysis Utilities (TAU), etc.
S420, first configuration information is generated, where the first configuration information indicates a forwarding priority of a data flow of the first process.
Wherein when the first process is a primary process of a first application and the second process is a secondary process of the first application, the forwarding priority of the data stream of the first process is higher than the forwarding priority of the data stream of the second process, or when the first process is a secondary process of the first application and the second process is a primary process of the first application, the forwarding priority of the data stream of the first process is lower than the forwarding priority of the data stream of the second process.
Illustratively, since the data flow of the application is forwarded by the hardware layer, the forwarding priority may be information that the hardware layer can identify.
For example, the forwarding priority of the data flow may be a value of DSCP to which the data flow corresponds. When the first process is a primary process of a first application and the second process is a secondary process of the first application, the data flow of the first process can be forwarded preferentially by setting the value of the DSCP of the first process to be larger than that of the DSCP of the second process; when the first process is a secondary process of the first application and the second process is a primary process of the first application, the preferential forwarding of the data stream of the second process can be achieved by setting the value of the DSCP of the first process to be smaller than the value of the DSCP of the second process.
Optionally, the first configuration information may further include QP information of the first process, through which the hardware layer may learn a location of data storage of the software layer and a destination address of the data transmission. Each of the first processes may include at least one QP, which may be, for example, a queue pair context (queue pair context, QPC), and QP information may be used to store related attributes of the QP for the first process. For example, the QP information may include information such as a queue pair index (queue pair number, QPN) for the QP, a type of service for the QP, a number of work queue elements (work queue element, WQE) that may be stored, and the like.
In a possible implementation manner, the first configuration information is generated through the second configuration information and the first corresponding relation. Wherein the second configuration information includes a communication weight of the first process communicating with other processes, and the communication weight may correspond to a forwarding priority of a data flow of the first process, or the communication weight information may be converted into the priority information.
In particular, the second configuration information may include source process (set) information, destination process (set) information, and a communication weight of communication between the source process (set) and the destination process (set). The source process (set) and/or the destination process (set) may belong to the first process.
Optionally, the second configuration information may further include a type of communication operator to which the process relates. The meaning of each field in the second configuration information may be as shown in table 1.
TABLE 1
Fields Meaning of
src_rank(s) Source process (set)
dst_rank(s) Destination process (set)
type Communication operator type
weight Communication weight
The communication weight may be determined, for example, based on the type of communication operator. Each type of communication operator may correspond to a value of one or more communication weights, and the type of communication operator may be described with reference to S410. Or the communication weight may be determined according to the use condition of the communication operator, for example, for the same type of communication operator, the duration that the communication operator is used by multiple processes is different, and the communication weights corresponding to the multiple processes may be different.
The second configuration information may be expressed as { src_ranges } { dst_ranges } { type } _ { weight }. Illustratively, the second configuration information may include src0_dst0_type0_weight0. Wherein src0 is an example of the first process, dst0 is a destination process of the first process communication, and type0 may be any of the communication operator types described above.
For example, "0_6_0_32" may represent point-to-point communication of rank0 to rank6, and the communication weight of the rank0 to the rank6 communication is 32; "0_set0_1_48" may represent one-to-many communication of rank0 to the destination process set0, and the communication weight of the rank0 and set0 communication is 48. Wherein rank0 may be an example of the first process.
Optionally, the second configuration information may further include a communication weight of other processes (second processes) within the application. The second process may be a secondary process in the application.
Illustratively, the second configuration information may further include src1_dst1_type1_weight1, where src1 is an example of the second process, dst1 is a destination process of the secondary process communication, and type1 may be any of the communication operator types described above. The weight1 may be smaller than the weight0.
In practical applications, the number of bits occupied by the communication weight may be configured according to the number of processes in the application and the complexity of the dependency between the processes, which is not limited by the present application. For example, the communication weight field may be 6 bits, with the communication weights supporting 64 levels (0-63). When the dependency relationship between the processes is simpler, the communication weight can be 2bit or 4bit.
The second configuration information may be generated by a software layer (e.g., UCX) during an application initialization phase. The initialization phase of the application can complete the establishment of the inter-process connection.
The first correspondence may include a correspondence between a source process, a destination process, and QP information. During the initialization phase of the application, the software layer may obtain QP information for all processes within the application. Thus, during the initialization phase of the application, the software layer may generate the first correspondence.
Illustratively, the first correspondence may be expressed as: { src_rank } { dst_rank } { qp_code }. Wherein qp_code may represent QP information for the src_rank.
Further, it may be determined by the second configuration information and the first correspondence relation: the correspondence between the communication weights of the source process and the destination process and the QP information (noted as a second correspondence). Illustratively, the second correspondence may be expressed as: { qp_code } { weight }.
For example, assuming that the second configuration information is "0_6_0_weight1" and the first correspondence is "0_6_qp1", it may be determined that the second correspondence is "qp1_weight1". The second configuration information may indicate that the communication weight between rank0 and rank6 is weight1, the first correspondence may indicate that rank0 communicates with rank6, and QP information of rank0 is QP1, so that QP1 may be determined to correspond to weight1 according to the second configuration information and the first correspondence.
The forwarding priority of the data stream of the first process can be determined by determining the correspondence between the QP information of the first process and the communication weight, that is, the higher the communication weight of the first process is, the higher the forwarding priority of the data stream of the first process is. Since the above-described communication weight may not be recognized for the driver layer and the hardware layer of the application, the communication weight may be converted into forwarding priority information that the driver layer and the hardware layer can recognize. The second correspondence may be converted into the first configuration information.
For example, the second correspondence may be converted into a correspondence between QP information and DSCP values of the first process. I.e. the value of the communication weight is converted into a DSCP value.
Specifically, in converting the value of the communication weight into a DSCP value, the DSCP value corresponding to the first process may be converted into a DSCP value greater than that of other secondary processes in the application. The specific value of DSCP may be related to the MPI interface type. For example, if the application employs an OpenMPI interface, the DSCP value of the data flow is typically defaulted to 26, in which case the communication weight of the first process may be mapped to a DSCP value greater than 26.
The application is not limited to a particular way of converting the value of the communication weight into a DSCP value. For example, the communication weight may be converted into the DSCP value by a preset rule or a correspondence, the preset rule may be a functional or other rule, and the correspondence may be a correspondence table.
S430, sending the data stream of the first process according to the first configuration information.
In the forwarding stage of the data stream, the driver layer updates the forwarding priority of the data stream, e.g. updates the DSCP value of the data stream, based on the QP information of the data stream and the first configuration information. On the hardware layer network card side, the data stream of the first process can be forwarded preferentially based on the forwarding strategy of the DSCP.
Based on the scheme, the data flow of the key process in the priority scheduling application can be realized by identifying the key process of the application and setting the forwarding priority of the data flow of the key process to be higher than that of the data flow of other processes, so that the application performance is optimized.
As shown in fig. 5, for the application scenario shown in fig. 2, a primary process rank3 in the application may be identified, and then by setting the forwarding priority of the data stream of rank3 higher than the forwarding priority of the data streams of rank 4 and rank 5, the underlying network may be enabled to forward the data stream of rank3 preferentially, so as to optimize the interference of the secondary processes (such as rank 4 and rank 5) on rank3, and improve the application performance. As shown in fig. 5, after setting the forwarding priority of the data flow of rank3, the DSCP value of forwarding the data flow of rank3 after entering the B-stage in fig. 1 may be mapped to 34 (a value 26 higher than the application default DSCP).
The method for transmitting data provided by the embodiment of the present application is described in detail above with reference to fig. 1 to 5, and the apparatus for transmitting data provided by the present application will be described in detail below with reference to fig. 6 to 9.
It is to be understood that the description of the method embodiments corresponds to the description of the device embodiments, and that parts not described in detail can therefore be seen in the preceding method embodiments.
Fig. 6 is a schematic block diagram of an apparatus 600 for transmitting data according to an embodiment of the present application. The apparatus 600 may be implemented in software, hardware, or a combination of both. The apparatus 600 provided by the embodiment of the present application may implement the method flow shown in fig. 4 in the embodiment of the present application.
The apparatus 600 includes: a processing module 610 and a transceiver module 620.
The processing module 610 is configured to identify a first process according to a communication characteristic of the process, where the first process is a main process of the application; the processing module 610 is further configured to generate first configuration information, where the first configuration information includes forwarding priority information of a data flow of the first process, where the forwarding priority of the data flow of the first process is higher than the forwarding priority of a data flow of the second process, and where the process of the application includes the second process.
The transceiver module 620 is configured to send the data stream of the first process according to the first configuration information.
Optionally, the processing module 610 is further configured to generate second configuration information and a first correspondence, where the second configuration information includes a communication weight of a source process to communicate with a destination process, the first correspondence includes a correspondence between the source process, the destination process, and queue pair information of the source process, the first process belongs to the source process or the destination process, and the communication weight is related to a type of a communication operator related to the first process; and generating a second corresponding relation according to the second configuration information and the first corresponding relation, wherein the second corresponding relation comprises the corresponding relation between the communication weight and the queue pair information.
The processing module 610 is specifically configured to generate the first configuration information according to the second correspondence, where forwarding priority information of a data flow of the first process corresponds to the communication weight, and the first configuration information further includes the queue pair information.
The forwarding priority information includes a value of a differentiated services code point, where the value of the differentiated services code point of the data stream of the first process is greater than a value of the differentiated services code point corresponding to the data stream of the second process.
The processing module 610 may identify the first process by analyzing trends in data flow of processes in the application to determine dependencies between the processes.
The processing module 610 may determine the first process by analyzing the usage of the communication operator.
It should be noted that: in the implementation of the method of the apparatus 600 provided in the above embodiment, only the division of the above functional modules is illustrated, and in practical application, the above functional allocation may be performed by different functional modules according to needs, that is, the internal structure of the apparatus is divided into different functional modules, so as to perform all or part of the functions described above.
For example, the transceiver module may be used to perform any of the steps of the method, and the processing module may be used to perform any of the steps of the method. The steps that the transceiver module and the processing module are responsible for implementing may be specified as needed, and the processing module implements different steps in the method to implement all the functions of the apparatus 600 through the transceiver module.
The apparatus 600 herein may be embodied in the form of functional modules. The term "module" herein may be implemented in software and/or hardware, and is not specifically limited thereto.
For example, a "module" may be a software program, a hardware circuit, or a combination of both that implements the functionality described above. Illustratively, the implementation of the transceiver module is described next as an example of the transceiver module. Similarly, other modules, such as the implementation of the processing module, may refer to the implementation of the receiving module.
Module as an example of a software functional unit, the transceiver module may comprise code running on a computing instance. The computing instance may include at least one of a physical host (computing device), a virtual machine, and a container, among others. Further, the above-described computing examples may be one or more. For example, the transceiver module may include code that runs on multiple hosts/virtual machines/containers. It should be noted that, multiple hosts/virtual machines/containers for running the code may be distributed in the same region (region), or may be distributed in different regions. Further, multiple hosts/virtual machines/containers for running the code may be distributed in the same availability zone (availability zone, AZ) or may be distributed in different AZs, each AZ comprising one data center or multiple geographically close data centers. Wherein typically a region may comprise a plurality of AZs.
Also, multiple hosts/virtual machines/containers for running the code may be distributed in the same virtual private cloud (virtual private cloud, VPC) or may be distributed in multiple VPCs. In general, one VPC is disposed in one region, and a communication gateway is disposed in each VPC for implementing inter-connection between VPCs in the same region and between VPCs in different regions.
Modules as an example of hardware functional units, a transceiver module may include at least one computing device, such as a server or the like. Alternatively, the transceiver module may be a device implemented using an application-specific integrated circuit (ASIC), a programmable logic device (programmable logic device, PLD), or the like. The PLD may be implemented as a complex program logic device (complex programmable logical device, CPLD), a field-programmable gate array (FPGA) GATE ARRAY, a general-purpose array logic (GENERIC ARRAY logic, GAL), or any combination thereof.
The transceiver module may include multiple computing devices that are distributed in the same region or may be distributed in different regions. The plurality of computing devices included in the receiving module may be distributed in the same AZ or may be distributed in different AZ. Also, the transceiver module may include multiple computing devices distributed in the same VPC, or may be distributed in multiple VPCs. Wherein the plurality of computing devices may be any combination of computing devices such as servers, ASIC, PLD, CPLD, FPGA, and GAL.
Thus, the modules of the examples described in the embodiments of the present application can be implemented in electronic hardware, or in a combination of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the solution. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
In addition, the device for transmitting data and the method embodiment for transmitting data provided by the application belong to the same conception, and the specific implementation process is detailed in the above method embodiment, which is not repeated here.
The method of transmitting data provided by the embodiments of the present application may be performed by a computing device, which may also be referred to as a computer system. Including a hardware layer, an operating system layer running on top of the hardware layer, and an application layer running on top of the operating system layer. The hardware layer includes hardware such as a processing unit, a memory control unit, and the like, and the functions and structures of the hardware are described in detail later. The operating system is any one or more computer operating systems for realizing business processing through processes (processes), for example, a Linux operating system, a Unix operating system, an Android operating system, an iOS operating system, a windows operating system, or the like. The application layer comprises application programs such as a browser, an address book, word processing software, instant messaging software and the like. Alternatively, the computer system may be a handheld device such as a smart phone, or a terminal device such as a personal computer, and the present application is not particularly limited as long as the method provided by the embodiment of the present application is able to be used. The execution body of the method for transmitting data provided by the embodiment of the application can be a computing device or a functional module in the computing device, which can call a program and execute the program.
A computing device provided by an embodiment of the present application is described in detail below in conjunction with fig. 7.
Fig. 7 is a schematic architecture diagram of a computing device 700 according to an embodiment of the present application. The computing device 700 may be a server or a computer or other computing device. The computing device 700 shown in fig. 7 includes: at least one processor 710 and a memory 720.
It should be understood that the present application is not limited to the number of processors, memories in computing device 700.
Processor 710 executes instructions in memory 720 that cause computing device 700 to implement the methods of transmitting data provided by the present application. Or processor 710 executes instructions in memory 720 to cause computing device 700 to implement the functional modules provided by the present application, thereby implementing the methods of transmitting data provided by the present application.
Optionally, computing device 700 also includes a communication interface 730. Communication interface 730 enables communication between computing device 700 and other devices or communication networks using transceiver modules such as, but not limited to, network interface cards, transceivers, and the like.
Optionally, computing device 700 also includes a system bus 740. In computing device 700, processor 710, memory 720, and communication interface 730 are each coupled to system bus 740. The processor 710 can access the memory 720 through the system bus 740, for example, the processor 710 can perform data reading and writing or code execution in the memory 720 through the system bus 740.
The system bus 740 is a peripheral component interconnect express (PERIPHERAL COMPONENT INTERCONNECT EXPRESS, PCI) bus, or an extended industry standard architecture (extended industry standard architecture, EISA) bus, or the like. The system bus 740 is divided into an address bus, a data bus, a control bus, and the like. For ease of illustration, only one thick line is shown in fig. 7, but not only one bus or one type of bus.
In one possible implementation, the main function of the processor 710 is to interpret instructions (or code) of a computer program and process data in computer software. Wherein the instructions of the computer program and the data in the computer software can be stored in the memory 720 or the cache 716.
Alternatively, the processor 710 may be an integrated circuit chip with signal processing capabilities.
By way of example, and not limitation, processor 710 is a general purpose processor, digital signal processor (DIGITAL SIGNAL processor, DSP), application SPECIFIC INTEGRATED Circuit (ASIC), off-the-shelf programmable gate array (field programmable GATE ARRAY, FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components. Wherein the general purpose processor is a microprocessor or the like. For example, the processor 710 is a central processing unit (central processing unit, CPU).
Optionally, each processor 710 may include at least one processing unit 712 and a memory control unit 714.
Optionally, processing unit 712, also referred to as a core or kernel, is the most important component of the processor. The processing unit 712 is manufactured from single crystal silicon in a certain manufacturing process, and all the calculation, acceptance command, storage command and processing data of the processor are executed by the core. The processing units 712 independently run the program instructions, respectively, and the parallel computing capability is utilized to speed up the running of the program. Various processing units have a fixed logic structure, e.g., processing units include logic units such as a first-level cache, a second-level cache, an execution unit, an instruction-level unit, and a bus interface.
In one possible implementation, the memory control unit 714 may be used to control data interactions between the memory 720 and the processing unit 712.
Specifically, the memory control unit 714 may receive a memory access request from the processing unit 712 and control access to memory based on the memory access request. By way of example, and not limitation, the memory control unit is a memory management unit (memory management unit, MMU) or the like.
In another possible implementation, each memory control unit 714 addresses memory 720 through a system bus. And an arbiter (not shown in fig. 7) is configured in the system bus, which is responsible for handling and coordinating competing accesses by the plurality of processing units 712.
In yet another possible implementation, the processing unit 712 and the memory control unit 714 are communicatively connected via connection lines, such as address lines, internal to the chip, so as to enable communication between the processing unit 712 and the memory control unit 714.
Optionally, each processor 710 may also include a cache 716. Where the cache is a buffer of data exchanges (referred to as a cache). When the processing unit 712 is to read data, it will first look up the required data from the cache, execute it directly if found, and look up it from the memory if not found. Since the cache operates at a much faster rate than the memory, the cache functions to help the processing unit 712 operate faster.
Memory 720 can provide a runtime space for processes in computing device 700, e.g., memory 720 holds computer programs (specifically, code for programs) for generating processes. After the computer program is run by the processor to generate a process, the processor allocates a corresponding memory space for the process in memory 720. Further, the storage space further includes a text segment, an initialization data segment, a bit initialization data segment, a stack segment, a heap segment, and the like. The memory 720 holds data generated during the running of the process, for example, intermediate data, or process data, etc., in the memory space corresponding to the above process.
Optionally, the memory is also referred to as a memory, and is used to temporarily store the operation data in the processor 710, and data exchanged with an external memory such as a hard disk. As long as the computer is running, the processor 710 will call the data to be operated on into the memory for operation, and the processing unit 712 will then send out the result when the operation is completed.
By way of example, and not limitation, memory 720 is either volatile memory or nonvolatile memory, or may include both volatile and nonvolatile memory. The nonvolatile memory is a read-only memory (ROM), a Programmable ROM (PROM), an erasable programmable ROM (erasable PROM), an electrically erasable programmable EPROM (EEPROM), or a flash memory. Volatile memory is random access memory (random access memory, RAM), which acts as external cache memory. By way of example, and not limitation, many forms of RAM are available, such as static random access memory (STATIC RAM, SRAM), dynamic random access memory (DYNAMIC RAM, DRAM), synchronous Dynamic Random Access Memory (SDRAM), double data rate synchronous dynamic random access memory (double DATA RATE SDRAM, DDR SDRAM), enhanced synchronous dynamic random access memory (ENHANCED SDRAM, ESDRAM), synchronous link dynamic random access memory (SYNCHLINK DRAM, SLDRAM), and direct memory bus random access memory (direct rambus RAM, DR RAM). It should be noted that the memory 720 of the systems and methods described herein is intended to comprise, without being limited to, these and any other suitable types of memory.
The above-listed structure of the computing device 700 is only an exemplary illustration, and the present application is not limited thereto, and the computing device 700 of the embodiment of the present application includes various hardware in the computer system in the related art, for example, the computing device 700 includes other memories besides the memory 720, for example, a disk memory, etc. Those skilled in the art will appreciate that computing device 700 may also include other components necessary to achieve proper operation. Meanwhile, the computing device 700 described above may also include hardware devices that implement other additional functions, as desired.
Furthermore, those skilled in the art will appreciate that the computing device 700 described above may also include only the necessary components to implement embodiments of the present application, and not necessarily all of the components shown in FIG. 7.
The embodiment of the application also provides a computing device cluster. The cluster of computing devices may include at least one computing device. The computing device may be a server. In some embodiments, the computing device may also be a terminal device such as a desktop, notebook, or smart phone.
As shown in fig. 8, the cluster of computing devices includes at least one computing device 700. The same instructions for performing the method of transferring data may be stored in memory 720 in one or more computing devices 700 in the cluster of computing devices.
In some possible implementations, the memory 720 in one or more computing devices 700 in the cluster of computing devices may also each have stored therein a portion of the instructions for performing the method of transmitting data. In other words, a combination of one or more computing devices 700 may collectively execute instructions for performing a method of transmitting data.
It should be noted that, the memory 720 in different computing devices 700 in the computing device cluster may store different instructions for performing part of the functions of the apparatus for transmitting data, respectively. That is, the instructions stored in memory 720 in different computing devices 700 may implement the functionality of one or more modules in the apparatus that will transmit data.
In some possible implementations, one or more computing devices in a cluster of computing devices may be connected through a network. Wherein the network may be a wide area network or a local area network, etc. Fig. 9 shows one possible implementation. As shown in fig. 9, two computing devices 700A and 700B are connected by a network.
Specifically, the connection to the network is made through a communication interface in each computing device. In this type of possible implementation, the memory 720 in the computing device 700A has instructions to perform the functions of a transceiver module and a processing module. Meanwhile, the memory 720 in the computing device 700B stores therein instructions for performing the functions of the transceiver module and the processing module.
It should be appreciated that the functionality of computing device 700A shown in fig. 9 may also be performed by multiple computing devices 700. Likewise, the functionality of computing device 700B may also be performed by multiple computing devices 700.
In this embodiment, a computer program product comprising instructions is also provided, which may be a software or program product comprising instructions, capable of running on a computing device or stored in any available medium. Which, when executed on a computing device, causes the computing device to perform the above-described method of transmitting data, or causes the computing device to perform the above-described functions of the apparatus for transmitting data.
In this embodiment, a computer program product comprising instructions is also provided, which may be a software or program product comprising instructions, capable of running on a cluster of computing devices or stored in any available medium. When executed by the computing device cluster, causes the computing device cluster to perform the method of transmitting data described above, or causes the computing device cluster to perform the function of the apparatus for transmitting data described above.
In this embodiment, a computer-readable storage medium is also provided, where the computer-readable storage medium may be any available medium that can be stored by a computing device or a data storage device such as a data center that includes one or more available media. The usable medium may be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid state disk), etc. The computer-readable storage medium includes instructions that, when executed on a computing device, cause the computing device to perform the method of transmitting data provided above.
In this embodiment, a computer-readable storage medium is also provided, where the computer-readable storage medium may be any available medium that can be stored by a computing device or a data storage device such as a data center that includes one or more available media. The usable medium may be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid state disk), etc. The computer readable storage medium includes instructions that, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the method of transmitting data provided above.
It should be understood that, in various embodiments of the present application, the sequence numbers of the foregoing processes do not mean the order of execution, and the order of execution of the processes should be determined by the functions and internal logic thereof, and should not constitute any limitation on the implementation process of the embodiments of the present application.
Those of ordinary skill in the art will appreciate that the various illustrative elements and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, or combinations of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the solution. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
It will be clear to those skilled in the art that, for convenience and brevity of description, specific working procedures of the above-described systems, apparatuses and units may refer to corresponding procedures in the foregoing method embodiments, and are not repeated herein.
The systems, devices, and methods disclosed in the several embodiments provided herein may be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative, e.g., the division of the units is merely a logical function division, and there may be additional divisions when actually implemented, e.g., multiple units or components may be combined or integrated into another system, or some features may be omitted or not performed. Alternatively, the coupling or direct coupling or communication connection shown or discussed with each other may be an indirect coupling or communication connection via some interfaces, devices or units, which may be in electrical, mechanical or other form.
The units described as separate units may or may not be physically separate, and units shown as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
In addition, each functional unit in the embodiments of the present application may be integrated in one processing unit, or each unit may exist alone physically, or two or more units may be integrated in one unit.
The functions, if implemented in the form of software functional units and sold or used as a stand-alone product, may be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application may be embodied essentially or in a part contributing to the prior art or in a part of the technical solution, in the form of a software product stored in a storage medium, comprising several instructions for causing a computer device (which may be a personal computer, a server, a network device, etc.) to perform all or part of the steps of the method according to the embodiments of the present application. And the aforementioned storage medium includes: a U-disk, a removable hard disk, a read-only memory (ROM), a random access memory (random access memory, RAM), a magnetic disk, or an optical disk, or other various media capable of storing program codes.
The foregoing is merely illustrative of the present application, and the present application is not limited thereto, and any person skilled in the art will readily recognize that variations or substitutions are within the scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims.

Claims (16)

1. A method of transmitting data, comprising:
Generating first configuration information, where the first configuration information is used to indicate a forwarding priority of a data stream of a first process, where when the first process is a primary process of a first application and the second process is a secondary process of the first application, the forwarding priority of the data stream of the first process is higher than the forwarding priority of the data stream of the second process, or
When the first process is a secondary process of a first application and the second process is a primary process of the first application, the forwarding priority of the data flow of the first process is lower than that of the data flow of the second process;
And sending the data flow of the first process according to the first configuration information.
2. The method according to claim 1, wherein the method further comprises:
generating second configuration information and a first corresponding relation, wherein the second configuration information indicates a communication weight of communication between a source process and a destination process, the first corresponding relation comprises the corresponding relation between the source process, the destination process and queue pair information of the source process, the first process belongs to the source process or the destination process, and the communication weight is related to a type of a communication operator related to the first process;
generating a second corresponding relation according to the second configuration information and the first corresponding relation, wherein the second corresponding relation comprises a corresponding relation between the communication weight and the queue pair information.
3. The method of claim 2, wherein the generating the first configuration information comprises:
And generating the first configuration information according to the second corresponding relation, wherein the forwarding priority of the data flow of the first process corresponds to the communication weight.
4. A method according to any one of claims 1 to 3, characterized in that before generating the first configuration information, the method further comprises:
and identifying the first process according to the communication characteristics of the processes, wherein the communication characteristics comprise the dependency relationship among the processes in the application, and at least one of the use conditions of the communication operators in the first application.
5. The method according to any one of claims 1 to 4, wherein the forwarding priority is represented by a value of a differentiated services code point,
When the first process is a primary process of the first application and the second process is a secondary process of the first application, the value of the differentiated services code point of the data stream of the first process is larger than the value of the differentiated services code point corresponding to the data stream of the second process; or alternatively
When the first process is a secondary process of the first application and the second process is a primary process of the first application, the value of the differentiated services code point of the data stream of the first process is smaller than the value of the differentiated services code point corresponding to the data stream of the second process.
6. An apparatus for transmitting data, wherein the apparatus comprises a processing module and a transceiver module,
The processing module is configured to generate first configuration information, where the first configuration information is used to indicate a forwarding priority of a data flow of a first process, and when the first process is a primary process of a first application and the second process is a secondary process of the first application, the forwarding priority of the data flow of the first process is higher than the forwarding priority of the data flow of the second process, or
When the first process is a secondary process of a first application and the second process is a primary process of the first application, the forwarding priority of the data flow of the first process is lower than that of the data flow of the second process;
The transceiver module is configured to send a data stream of the first process according to the first configuration information.
7. The apparatus of claim 6, wherein the processing module is specifically configured to:
generating second configuration information and a first corresponding relation, wherein the second configuration information indicates a communication weight of communication between a source process and a destination process, the first corresponding relation comprises the corresponding relation between the source process, the destination process and queue pair information of the source process, the first process belongs to the source process or the destination process, and the communication weight is related to a type of a communication operator related to the first process;
generating a second corresponding relation according to the second configuration information and the first corresponding relation, wherein the second corresponding relation comprises a corresponding relation between the communication weight and the queue pair information.
8. The apparatus of claim 7, wherein the processing module is specifically configured to:
And generating the first configuration information according to the second corresponding relation, wherein the forwarding priority of the data flow of the first process corresponds to the communication weight.
9. The apparatus of any one of claims 6 to 8, wherein the processing module is further configured to:
and identifying the first process according to the communication characteristics of the processes, wherein the communication characteristics comprise the dependency relationship among the processes in the application, and at least one of the use conditions of the communication operators in the first application.
10. The apparatus according to any one of claims 6 to 9, wherein the forwarding priority is represented by a value of a differentiated services code point,
When the first process is a primary process of the first application and the second process is a secondary process of the first application, the value of the differentiated services code point of the data stream of the first process is larger than the value of the differentiated services code point corresponding to the data stream of the second process; or alternatively
When the first process is a secondary process of the first application and the second process is a primary process of the first application, the value of the differentiated services code point of the data stream of the first process is smaller than the value of the differentiated services code point corresponding to the data stream of the second process.
11. A computing device comprising a processor and a memory, the processor to execute instructions stored in the memory to cause the computing device to perform the method of any one of claims 1 to 5.
12. A cluster of computing devices, comprising at least one computing device, each computing device comprising a processor and a memory;
The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device to cause the cluster of computing devices to perform the method of any one of claims 1 to 5.
13. A computer program product containing instructions that, when executed by a computing device, cause the computing device to perform the method of any of claims 1 to 5.
14. A computer program product containing instructions that, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the method of any of claims 1 to 5.
15. A computer readable storage medium comprising computer program instructions which, when executed by a computing device, perform the method of any of claims 1 to 5.
16. A computer readable storage medium comprising computer program instructions which, when executed by a cluster of computing devices, perform the method of any of claims 1 to 5.
CN202211456651.2A 2022-11-21 2022-11-21 Method and device for transmitting data Pending CN118057792A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211456651.2A CN118057792A (en) 2022-11-21 2022-11-21 Method and device for transmitting data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211456651.2A CN118057792A (en) 2022-11-21 2022-11-21 Method and device for transmitting data

Publications (1)

Publication Number Publication Date
CN118057792A true CN118057792A (en) 2024-05-21

Family

ID=91069240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211456651.2A Pending CN118057792A (en) 2022-11-21 2022-11-21 Method and device for transmitting data

Country Status (1)

Country Link
CN (1) CN118057792A (en)

Similar Documents

Publication Publication Date Title
US9965441B2 (en) Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
US11240155B2 (en) Technologies for network device load balancers for accelerated functions as a service
US20210243247A1 (en) Service mesh offload to network devices
US10097378B2 (en) Efficient TCAM resource sharing
US11494212B2 (en) Technologies for adaptive platform resource assignment
CN108268328B (en) Data processing device and computer
CN108809854B (en) Reconfigurable chip architecture for large-flow network processing
EP2933955B1 (en) Deep packet inspection method, device, and coprocessor
CN109076029B (en) Method and apparatus for non-uniform network input/output access acceleration
US11265235B2 (en) Technologies for capturing processing resource metrics as a function of time
US20140233588A1 (en) Large receive offload functionality for a system on chip
US20170318082A1 (en) Method and system for providing efficient receive network traffic distribution that balances the load in multi-core processor systems
CN106571978B (en) Data packet capturing method and device
US11403023B2 (en) Method of organizing a programmable atomic unit instruction memory
Rizzo Revisiting Network I/O APIs: The netmap Framework: It is possible to achieve huge performance improvements in the way packet processing is done on modern operating systems.
WO2023116340A1 (en) Data message forwarding method and apparatus
US11258707B1 (en) Systems for building data structures with highly scalable algorithms for a distributed LPM implementation
DE102022126611A1 (en) SERVICE MESH OFFSET TO NETWORK DEVICES
CN114513472A (en) Network congestion control method and device
Watanabe et al. Accelerating NFV application using CPU-FPGA tightly coupled architecture
US11283723B2 (en) Technologies for managing single-producer and single consumer rings
US10616116B1 (en) Network traffic load balancing using rotating hash
US11301305B2 (en) Dynamic resource clustering architecture
CN118057792A (en) Method and device for transmitting data
EP4020933A1 (en) Methods and apparatus to process data packets for logical and virtual switch acceleration in memory

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination