Congestion control method and device, server, storage medium and program product

By receiving and processing network load data and device load data in the host and implementing optimization and adjustment strategies, joint congestion control of CXL devices and Ethernet is realized, and the problems of insufficient perception capabilities and high operation and maintenance costs caused by the independent congestion control mechanism in the prior art are solved.

CN119922129APending Publication Date: 2025-05-02CHINA MOBILE (SUZHOU) SOFTWARE TECH CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510073181.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-01-16
Publication Date
2025-05-02

AI Technical Summary

Technical Problem

In the prior art, the congestion control mechanisms of Ethernet and CXL devices operate independently, resulting in the host lacking the ability to perceive the overall congestion status of the system and being unable to implement optimal congestion management decisions, which increases network operation and maintenance costs.

Method used

A joint congestion control method for end network is proposed, which receives load data, including network load data and device load data through the host, and performs optimization and adjustment strategies to control congestion for host accessing CXL devices.

Benefits of technology

It realizes the periphery and network side congestion conditions, promotes the optimal execution of congestion control decisions, reduces network operation and maintenance costs, and improves the overall performance of the system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119922129A_ABST
    Figure CN119922129A_ABST
Patent Text Reader

Abstract

The invention discloses a congestion control method and device, a server, a storage medium and a program product. The method comprises the following steps: receiving load data sent by a second server, wherein the load data comprises network load data and equipment load data or the load data is determined based on the network load data and the equipment load data; and executing an optimization and adjustment strategy based on the load data, wherein the optimization and adjustment strategy is used for performing congestion control on a CXL (Computing Fast Link) device accessed by the host in the second server. Therefore, the end-side congestion control and the network-side congestion control are fused, so that the optimal congestion control decision execution is promoted, and the network operation and maintenance cost is effectively reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of infrastructure and IT support technology, and in particular to a congestion control method and device, a server, a storage medium, and a program product. Background Art

[0002] Network congestion usually leads to increased network latency, packet loss and retransmission, and may even cause network disconnection. For upper-layer memory-intensive applications such as databases and real-time processing systems, they rely on fast memory access to maintain performance. Therefore, network congestion not only affects communication at the network level, but may also have a negative impact on the application layer, reducing overall system performance.

[0003] Under the current technical framework, the Ethernet congestion control mechanism and the Compute ExpressLink (CXL) congestion control mechanism operate independently. The host can only process congestion notifications from CXL devices and formulate corresponding optimization strategies accordingly. This means that the host's congestion management strategy is designed specifically for CXL devices and will not be affected by the Ethernet network status. Summary of the invention

[0004] The present application provides a congestion control method and device, a server, a computer storage medium, and a computer program product.

[0005] The congestion control method provided by the present application is applied to a host in a first server, including:

[0006] receiving load data sent by the second server, wherein the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data;

[0007] An optimization adjustment strategy is executed based on the load data, where the optimization adjustment strategy is used to perform congestion control on access by the host to the CXL device in the second server.

[0008] The congestion control method provided in the present application is applied to the second server, including:

[0009] Generate network load data and device load data;

[0010] Sending load data to a host in the first server, the load data including the network load data and the device load data or the load data being determined based on the network load data and the device load data;

[0011] The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0012] The congestion control device provided by the present application is applied to a host in a first server, and the device includes:

[0013] A receiving unit, configured to receive load data sent by the second server, wherein the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data;

[0014] A control unit is used to execute an optimization adjustment strategy based on the load data, wherein the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0015] The congestion control device provided by the present application is applied to a second server, and the device includes:

[0016] A generating unit, used for generating network load data and device load data;

[0017] a sending unit, configured to send load data to a host in the first server, wherein the load data includes the network load data and the device load data or the load data is determined based on the network load data and the device load data;

[0018] The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0019] The server provided in the present application includes: a processor and a memory, the memory is used to store a computer program, and the processor is used to call and run the computer program stored in the memory to execute any one of the above-mentioned congestion control methods.

[0020] The computer-readable storage medium provided in the present application is used to store a computer program, and the computer program enables a computer to execute any one of the above-mentioned congestion control methods.

[0021] The computer program product provided in the present application includes computer program instructions, which enable a computer to execute any one of the above congestion control methods.

[0022] The present application proposes a joint end-network congestion control solution for "Ethernet-based bus interconnection scenarios". In the solution of the present application, the host receives load data, which includes network load data and device load data or the load data is determined based on the network load data and the device load data; the host executes an optimization adjustment strategy based on the load data, thereby performing congestion control on the host's access to the CXL device. The solution of the present application integrates the end-side congestion control and the network-side congestion control. This integration gives the host the ability to perceive the congestion status of both the end side (i.e., CXL device) and the network side (i.e., Ethernet), thereby promoting the optimal execution of congestion control decisions and effectively reducing network operation and maintenance costs. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] Figure 1 This is a flow diagram of the congestion control method provided in the embodiment of the present application. Figure 1 ;

[0024] Figure 2 This is a flow diagram of the congestion control method provided in the embodiment of the present application. Figure 2 ;

[0025] Figure 3 This is an Ethernet-based bus interconnection system architecture diagram provided in an embodiment of the present application;

[0026] Figure 4 is a flow chart of an Ethernet-based bus interconnection system architecture diagram provided in an embodiment of the present application;

[0027] Figure 5 It is a flow chart of application example 1 of this application;

[0028] Figure 6 It is a flow chart of application example 2 of this application;

[0029] Figure 7 It is a flow chart of application example 3 of this application;

[0030] Figure 8 This is a flow chart of application example 4 of this application;

[0031] Fig. 9 The structure of the congestion control device provided in the embodiment of the present application is shown in FIG. Figure 1 ;

[0032] Fig.10 The structure of the congestion control device provided in the embodiment of the present application is shown in FIG. Figure 2 ;

[0033] Fig.11 is a schematic structural diagram of a server provided in an embodiment of the present application;

[0034] Fig.12It is a schematic structural diagram of the chip of an embodiment of the present application. DETAILED DESCRIPTION

[0035] The following will describe the technical solutions in the embodiments of the present application in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.

[0036] In the following description, reference is made to “some embodiments”, which describe a subset of all possible embodiments, but it will be understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.

[0037] It should also be pointed out that the terms "first\second\third" involved in the embodiments of the present application are only used to distinguish similar objects and do not represent a specific ordering of the objects. It can be understood that "first\second\third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of the present application described here can be implemented in an order other than that illustrated or described here.

[0038] The term "and / or" herein is merely a description of the association relationship of associated objects, indicating that three relationships may exist. For example, A and / or B may represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the character " / " herein generally indicates that the associated objects before and after are in an "or" relationship. It should also be understood that the "corresponding" mentioned in the embodiments of the present application may indicate that there is a direct or indirect corresponding relationship between the two, or may indicate that there is an association relationship between the two.

[0039] To facilitate understanding of the technical solutions of the embodiments of the present application, the relevant technologies of the embodiments of the present application are described below.

[0040] Ethernet congestion control is an important technology in network communication, which aims to manage access to shared resources and prevent network congestion. In Ethernet networks (also referred to as Ethernet or Ethernet), there are several mature and reliable congestion control algorithms, such as Priority Flow Control (PFC) algorithm, Explicit Congestion Notification (ECN) algorithm, Quantized Congestion Notification (QCN) algorithm and Transmission Control Protocol (TCP) congestion control algorithm, etc. These algorithms and mechanisms have their own characteristics. They can be used alone or in combination to adapt to different network environments and requirements, so as to minimize network congestion and packet loss.

[0041] CXL is a high-speed interconnect technology designed to solve the interconnection problem between computing and storage. CXL connects CXL devices to the host through a bus, realizing the separation of storage and computing, allowing the host to access a larger memory pool on the CXL device with low latency and high bandwidth, thereby expanding memory. For type 2 CXL devices (CXL TYPE2 Device) and type 3 CXL devices (CXL TYPE3 Device), congestion control is mainly reflected in the Quality of Service Telemetry (QoS Telemetry) mechanism. This mechanism allows CXL devices (such as memory controllers or accelerators) to provide feedback to the host about the current memory load and performance. Through this feedback, the host can adjust the frequency of memory access requests to optimize performance and reduce congestion.

[0042] In the related art, the Ethernet congestion control mechanism and the CXL congestion control mechanism operate independently. The host can only process the congestion notification from the CXL device and formulate corresponding optimization strategies accordingly. This means that the host's congestion management strategy is designed specifically for the CXL device and will not be affected by the Ethernet network status. The related art has the following disadvantages:

[0043] 1) End-to-Network Separation: There is a clear operational boundary between the end side (CXL device) and the network side (Ethernet). As the decision-making layer for congestion control in Ethernet-based bus interconnection scenarios, the host lacks the ability to perceive the overall congestion status of the system. That is, the host is limited to perceiving the memory load indicators of the CXL device and cannot perceive the congestion status of the Ethernet, so it is unable to implement the optimal congestion management decision.

[0044] 2) Difficulties in operation and maintenance: The congestion management mechanisms on the end side and the network side operate independently, resulting in high challenges in operation and maintenance management. Operation and maintenance management requires a comprehensive assessment of the congestion situation on the end side and the network side to make appropriate operation and maintenance decisions. This places higher demands on the skills and experience of operation and maintenance managers.

[0045] In view of the above disadvantages, the embodiment of the present application proposes a joint end-to-network congestion control solution for Ethernet-based bus interconnection scenarios, which integrates the end-side congestion control and the network-side congestion control. This fusion strategy gives the CXL decision layer (such as the host) the ability to perceive the congestion conditions of both the end side (i.e., CXL device) and the network side (i.e., Ethernet), thereby promoting the optimal execution of congestion control decisions and effectively reducing network operation and maintenance costs.

[0046] To facilitate understanding of the technical solutions of the embodiments of the present application, the technical solutions of the present application are described in detail below through specific embodiments.

[0047] It should be noted that the “host” described in the embodiments of the present application refers to the CXL decision layer, and the “host” can also be replaced by “CXL host”. In some embodiments, the host is a CPU.

[0048] It should be noted that the "CXL device" described in the embodiments of the present application refers to the end side, and the "CXL device" can also be replaced by "device". In some embodiments, the CXL device is a memory controller or accelerator, etc. The "CXL device" described in the embodiments of the present application can be, but is not limited to: CXL Type 2 devices (such as GPU, FPGA, AI-type accelerators), CXL Type 3 devices (such as memory expansion devices).

[0049] Figure 1 This is a flow diagram of the congestion control method provided in the embodiment of the present application. Figure 1 , applied to the host in the first server, such as Figure 1 As shown, the congestion control method includes the following steps:

[0050] Step 101: The host receives load data sent by the second server, where the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data.

[0051] In the embodiment of the present application, the network load data includes a first load level, which indicates the load level of the Ethernet; the device load data includes a second load level, which indicates the load level of the CXL device.

[0052] In some embodiments, the load levels include, from low to high, a light load level, an optimal load level, a moderate overload level, and a severe overload level. Not limited to this, the load level can also have more or fewer levels, and the load level can be divided according to actual scenarios.

[0053] Exemplarily, the meanings of the various load levels corresponding to the network load data described in the embodiments of the present application can be referred to as shown in the following Table 1, where the request frequency in the following Table 1 refers to the frequency of memory access requests.

[0054] Table 1: Meaning of load levels

[0055] Load level meaning Light load The network bandwidth utilization is low, the delay is small, and the host can increase the request frequency Optimal load The system performance is in the optimal state, and the host does not need to adjust the request frequency Medium load The network usage is high. It is recommended that the host reduce the request frequency. Severe overload The network is extremely busy. It is recommended that the host significantly reduce the request frequency.

[0056] In the embodiment of the present application, the host receives the load data sent by the second server, which can be implemented in the following ways:

[0057] Method 1: The host receives a memory access response sent by the second server, where the memory access response carries load data, and the load data includes a target load level, where the target load level is a higher load level between the first load level and the second load level.

[0058] Before the host receives the memory access response sent by the second server, the host sends a memory access request to the second server; the CXL device in the second server monitors the device load, generates device load (DevLoad) data, the device load data is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the DevLoad field in the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, the network load data is represented by the first load level (or the network load data includes the first load level), and updates the larger value of the device load data and the network load data (that is, the higher load level of the first load level and the second load level) and fills it into the DevLoad field in the memory access response, so that the load data carried in the memory access response is the larger value of the device load data and the network load data.

[0059] Method 2: The host receives a memory access response sent by the second server, where the memory access response carries load data, and the load data includes a first load level and a second load level.

[0060] Before the host receives the memory access response sent by the second server, the host sends a memory access request to the second server; the CXL device in the second server monitors the device load and generates device load (DevLoad) data, which is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the DevLoad field in the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, which is represented by the first load level (or the network load data includes the first load level), and fills the network load data into the NetworkLoad field or the reserved (RSVD) field in the memory access response, so that the load data carried in the memory access response includes device load data and network load data.

[0061] Mode three: the host receives the memory access response and the network load report sent by the second server, the memory access response carries the second load level, and the network load report carries the first load level.

[0062] Before the host receives the memory access response sent by the second server, the host sends a memory access request to the second server; the CXL device in the second server monitors the device load, generates device load (DevLoad) data, the device load data is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, the network load data is represented by the first load level (or the network load data includes the first load level), and fills the network load data into the network load report (NetworkLoadReport), so that the memory access response carries the device load data, and the network load report carries the network load data.

[0063] In some implementations, sending the memory access request to the second server includes:

[0064] The host of the first server sends a memory access request to the CXL device of the first server through the CXL protocol. The memory access request carries a virtual memory address to be accessed. The virtual memory address to be accessed is used by the CXL device of the first server to encapsulate the memory access request into an Ethernet data packet and send it to the second server when determining that the target device to be accessed is a remote device; wherein, when the virtual memory address to be accessed is located in the memory domain of the remote device, the target device to be accessed is a remote device. For the CXL device of the first server, when receiving the memory access request sent by the host of the first server, the memory access request is parsed and the virtual memory address to be accessed is obtained, and it is determined whether the virtual memory address to be accessed is located in the memory domain of the remote device. If it is determined that the virtual memory address to be accessed is located in the memory domain of the remote device, the memory access request is encapsulated into an Ethernet data packet and sent to the second server.

[0065] Step 102: The host executes an optimization adjustment strategy based on the load data, where the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0066] In an embodiment of the present application, the host dynamically evaluates the sending frequency of the memory access request for the CXL device based on the network load data and / or the device load data, and optimizes and adjusts the sending frequency (that is, executes the optimization adjustment strategy) to reduce congestion and improve the overall performance of the system. For example: if the larger value of the network load data and the device load data (that is, the higher load level of the first load level and the second load level) is a light load level, the sending frequency is increased by a first value. If the larger value of the network load data and the device load data (that is, the higher load level of the first load level and the second load level) is the optimal load level, the sending frequency is maintained unchanged. If the larger value of the network load data and the device load data (that is, the higher load level of the first load level and the second load level) is a moderate load level, the sending frequency is maintained unchanged or the sending frequency is lowered by a second value. If the larger value of the network load data and the device load data (that is, the higher load level of the first load level and the second load level) is a severe overload level, the sending frequency is lowered by a third value. Here, the first value, the second value, and the third value can be flexibly set according to the actual scenario, and this application does not limit this.

[0067] It should be noted that the host and CXL device described in the embodiment of the present application are located in different servers respectively, the host is located in the first server, and the CXL device is located in the second server. The host of the first server can access the device memory of the CXL device of the remote second server through this system.

[0068] Figure 2 This is a flow diagram of the congestion control method provided in the embodiment of the present application. Figure 2 , applied to the second server, such as Figure 2 As shown, the congestion control method includes the following steps:

[0069] Step 201: The second server generates network load data and device load data.

[0070] In the embodiment of the present application, the network load data includes a first load level, which indicates the load level of the Ethernet; the device load data includes a second load level, which indicates the load level of the CXL device.

[0071] In some embodiments, the load levels include, from low to high, a light load level, an optimal load level, a moderate overload level, and a severe overload level. Not limited to this, the load level can also have more or fewer levels, and the load level can be divided according to actual scenarios.

[0072] The congestion control module of the CXL device in the second server monitors the device load (i.e., the load of the device memory) and generates corresponding device load (DevLoad) data, which is represented by the second load level (or the device load data includes the second load level). The Ethernet congestion control module in the second server generates network load (NetworkLoad) data, which is represented by the first load level (or the network load data includes the first load level).

[0073] Step 202: The second server sends load data to the host in the first server, where the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data.

[0074] The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0075] In the embodiment of the present application, the second server sends load data to the host in the first server, which can be implemented in the following ways:

[0076] Method 1: The second server sends a memory access response to the host, the memory access response carries load data, the load data includes a target load level, and the target load level is a higher load level between the first load level and the second load level.

[0077] Before the second server sends a memory access response to the host, the second server receives the memory access request sent by the host; the CXL device in the second server monitors the device load, generates device load (DevLoad) data, the device load data is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the DevLoad field in the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, the network load data is represented by the first load level (or the network load data includes the first load level), and updates the larger value of the device load data and the network load data (that is, the higher load level of the first load level and the second load level) and fills it into the DevLoad field in the memory access response, so that the load data carried in the memory access response is the larger value of the device load data and the network load data.

[0078] Method 2: The second server sends a memory access response to the host, where the memory access response carries load data, and the load data includes a first load level and a second load level.

[0079] Before the second server sends a memory access response to the host, the second server receives the memory access request sent by the host; the CXL device in the second server monitors the device load and generates device load (DevLoad) data, which is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the DevLoad field in the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, which is represented by the first load level (or the network load data includes the first load level), and fills the network load data into the NetworkLoad field or the reserved (RSVD) field in the memory access response, so that the load data carried in the memory access response includes device load data and network load data.

[0080] Mode three: the second server sends a memory access response and a network load report to the host, the memory access response carries the second load level, and the network load report carries the first load level.

[0081] Before the second server sends a memory access response to the host, the second server receives the memory access request sent by the host; the CXL device in the second server monitors the device load, generates device load (DevLoad) data, the device load data is represented by the second load level (or the device load data includes the second load level), and fills the device load data into the memory access response; the Ethernet congestion control module in the second server generates network load (NetworkLoad) data, the network load data is represented by the first load level (or the network load data includes the first load level), and fills the network load data into the network load report (NetworkLoadReport), so that the memory access response carries the device load data, and the network load report carries the network load data.

[0082] In some implementations, the memory access request is encapsulated into an Ethernet data packet; the method further includes: after the second server parses the memory access request from the Ethernet data packet, converting the virtual memory address in the memory access request into a physical memory address, and accessing the CXL device corresponding to the physical memory address.

[0083] It should be noted that the host and CXL device described in the embodiment of the present application are located in different servers respectively, the host is located in the first server, and the CXL device is located in the second server. The host of the first server can access the device memory of the CXL device of the remote second server through this system.

[0084] The technical solution of the embodiment of the present application proposes a load classification system, which subdivides the network load / device load into four levels. By integrating the congestion control information on the end side (i.e., device load data) with the congestion control information on the Ethernet layer (i.e., network load data), a unified system-level congestion view is formed. In this way, the host can use this comprehensive data to adjust its congestion control algorithm and optimize network performance. In addition, a host-side Ethernet congestion perception mechanism is proposed, allowing the host to dynamically receive Ethernet congestion information (i.e., network load data) provided by the device. The technical solution of the embodiment of the present application has at least the following advantages: 1) Lower latency: The end-network joint congestion control method can optimize the host decision-making process, ensure that the system congestion is in a manageable state, and effectively reduce network latency. 2) Higher system performance: The end-network joint congestion control method reduces the memory response time synchronization of the upper-layer application by reducing network latency, effectively improving the overall system performance. 3) Higher flexibility: The system can deploy different Ethernet congestion control algorithms according to the application scenario without affecting the overall congestion control strategy of the system. 4) Better maintainability: The end-to-network joint congestion control method simplifies operation and maintenance work, improves network maintainability, and reduces failure rate and maintenance costs.

[0085] Figure 3 1 is an Ethernet-based bus interconnection system architecture diagram provided in an embodiment of the present application. Server 1 (corresponding to the first server in the above solution) can access the device memory (i.e., extended memory) of remote server 2 (corresponding to the second server in the above solution) through this system. In the embodiment of the present application, the CPU of server 1 corresponds to the host in the above solution, and the CXL device of server 2 corresponds to the CXL device in the above solution. Figure 3 As shown, the process is as follows:

[0086] 1) The CPU of server 1 uses standard load / store instructions to access memory.

[0087] 2) The bus logic of server 1 determines whether the virtual memory address of the memory access belongs to the CXL device domain. If so, server 1 communicates with the CXL device through the CXL protocol and sends a memory access request (request (REQ) message for short) to access the CXL device.

[0088] 3) The address resolver of the CXL device is responsible for determining whether the virtual memory address is located in the memory domain of the remote device. Once confirmed, the address resolver of the CXL device will encapsulate the CPU's memory access request into an Ethernet message and send it to the network card of the remote server 2 through the local network card.

[0089] 4) The network card of server 2 receives the Ethernet message and decapsulates it, and sends the memory access request to the local address resolver.

[0090] 5) The address translation logic of server 2 is responsible for processing the virtual address space and converting the virtual address to a physical memory address. After completing the address translation, server 2 will access the corresponding physical memory location and send a memory access response (which can be referred to as a response (RSP) message) to the CPU of server 1 based on this operation.

[0091] 6) Before sending a memory access response message, the CXL device of server 2 monitors the load of the device, fills in the device load (DevLoad) data in the memory access response, and reports its current workload to the CPU of server 1.

[0092] 7) The Ethernet congestion control module of server 2 is responsible for monitoring the congestion status of the Ethernet, generating network load (NetworkLoad) data, and transmitting the network load data to the CPU of server 1.

[0093] 8) The CPU of server 1 dynamically evaluates the sending frequency of memory access requests for CXL devices based on the device load data and network load data, and performs optimization and adjustment to reduce congestion and improve the overall system performance.

[0094] Figure 4 is a flow chart of an Ethernet-based bus interconnection system architecture diagram provided in an embodiment of the present application, such as Figure 4 As shown, the process includes the following steps:

[0095] Step 401: The host sends a memory access request (ie, a REQ message) to the CXL device.

[0096] Step 402: The CXL device monitors the device load.

[0097] Step 403: The CXL device generates device load data, and fills the device load data into a memory access response (ie, RSP message) and sends it to the host.

[0098] Step 404: The Ethernet congestion control module monitors the network load.

[0099] Step 405: The Ethernet congestion control module generates network load data.

[0100] Step 406: The Ethernet congestion control module sends the network load data to the host.

[0101] Step 407: The host receives the memory access response.

[0102] Step 408: The host performs optimization adjustment according to the device load data and / or the network load data.

[0103] In the technical solution of the embodiment of the present application, the core of the end-to-network joint congestion control is to integrate the load data of the end side (CXL device) and the network side (Ethernet) and feed it back to the host. The host performs optimization adjustments based on this data to alleviate congestion and enhance the overall performance of the system.

[0104] The following further illustrates the technical solution of the embodiment of the present application based on the different ways in which the Ethernet congestion control module feeds back network load data to the host.

[0105] Application Example 1

[0106] In this application example, when the Ethernet congestion control module feeds back the network load (NetworkLoad) data to the host, it reuses the device load (DevLoad) field in the RSP message (i.e., memory access response) to merge the network load data with the device load data. The host makes the best congestion handling strategy based on the merged load data. The overall process is as follows: Figure 5 As shown, the following steps are included:

[0107] Step 501: The host sends a memory access request (ie, a REQ message) to the CXL device.

[0108] Step 502: The CXL device monitors the device load.

[0109] Step 503: The CXL device generates device load data, and fills the device load data into a memory access response (ie, RSP message).

[0110] Step 504: The Ethernet congestion control module monitors the network load.

[0111] Step 505: The Ethernet congestion control module generates network load data.

[0112] Step 506: The Ethernet congestion control module merges the network load data and the device load data, and the merged load data is the larger value of the network load data and the device load data.

[0113] Step 507: The Ethernet congestion control module updates the device load data in the memory access response to the fused load data, and sends it to the host.

[0114] Step 508: The host receives the memory access response.

[0115] Step 509: The host performs optimization adjustment according to the integrated load data.

[0116] In the above scheme, the network load data is represented by the first load level, which represents the load level of Ethernet; the device load data is represented by the second load level, which represents the load level of the CXL device. The levels of the load levels include, from low to high, light load (Light Load) level, optimal load (OptimalLoad) level, moderate load (Moderate Overload) level, and severe overload (Severe Overload) level. Not limited to this, the levels of the load level can also have more or fewer levels, and the levels of the load level can be divided according to the actual scenario. The CXL device fills the device load data (i.e., the second load level) into the DevLoad field in the memory access response; the Ethernet congestion control module updates the larger value of the device load data and the network load data (i.e., the higher load level of the first load level and the second load level) and fills it into the DevLoad field in the memory access response. Based on the fused load data, the host dynamically evaluates the sending frequency of the REQ message for the CXL device and optimizes and adjusts it to reduce congestion and improve the overall performance of the system.

[0117] Application Example 2

[0118] In this application example, the CXL protocol is enhanced. Specifically, a new network load (NetworkLoad) field is added to the RSP message (i.e., memory access response). When the Ethernet congestion control module feeds back the network load (NetworkLoad) data to the host, the network load data is filled into the network load field. The host makes the best congestion handling strategy based on the device load data and the network load data. The overall process is as follows: Figure 6 As shown, the following steps are included:

[0119] Step 601: The host sends a memory access request (ie, a REQ message) to the CXL device.

[0120] Step 602: The CXL device monitors the device load.

[0121] Step 603: The CXL device generates device load data, and fills the device load data into the device load field in the memory access response (ie, RSP message).

[0122] Step 604: The Ethernet congestion control module monitors the network load.

[0123] Step 605: The Ethernet congestion control module generates network load data, and fills the network load data into the network load field in the memory access response (ie, RSP message).

[0124] Step 606: The host receives the memory access response.

[0125] Step 607: The host performs optimization adjustment according to the device load data and / or the network load data.

[0126] In the above scheme, the network load data is represented by the first load level, which represents the load level of Ethernet; the device load data is represented by the second load level, which represents the load level of the CXL device. The levels of load levels include, from low to high: light load (Light Load) level, optimal load (OptimalLoad) level, moderate load (Moderate Overload) level, and severe overload (Severe Overload) level. Not limited to this, the levels of load levels can also have more or fewer levels, and the levels of load levels can be divided according to actual scenarios. The CXL device fills the device load data (i.e., the second load level) into the DevLoad field in the memory access response; the Ethernet congestion control module fills the network load data (i.e., the first load level) into the NetworkLoad field in the memory access response. After receiving the device load data and the network load data, the host dynamically evaluates the sending frequency of the REQ message for the CXL device and optimizes and adjusts it to reduce congestion and improve the overall performance of the system.

[0127] Application Example 3

[0128] In this application example, the CXL protocol is enhanced. Specifically, a message type called Network Load Report is added. This message will be sent by the network interface card (NIC) or Ethernet congestion control module to report the current network load data to the host. After receiving the network load data, the host will formulate the best network congestion management strategy based on the data. This process aims to optimize the network traffic management of the data center and improve resource utilization and network communication efficiency. The overall process is as follows: Figure 7 As shown, the following steps are included:

[0129] Step 701: The host sends a memory access request (ie, a REQ message) to the CXL device.

[0130] Step 702: The CXL device monitors the device load.

[0131] Step 703: The CXL device generates device load data, and fills the device load data into a memory access response (ie, RSP message).

[0132] Step 704: The Ethernet congestion control module monitors the network load.

[0133] Step 705: The Ethernet congestion control module generates network load data and fills the network load data into the network load report.

[0134] Step 706: The host receives the memory access response and the network load report.

[0135] Step 707: The host performs optimization adjustment according to the device load data and / or the network load data.

[0136] In the above scheme, the network load data is represented by the first load level, which represents the load level of Ethernet; the device load data is represented by the second load level, which represents the load level of the CXL device. The load levels include, from low to high, light load (Light Load) level, optimal load (OptimalLoad) level, moderate load (Moderate Overload) level, and severe overload (Severe Overload) level. Not limited to this, the load level can also have more or fewer levels, and the load level can be divided according to the actual scenario. The CXL device fills the device load data (i.e., the second load level) into the memory access response; the Ethernet congestion control module fills the network load data (i.e., the first load level) into the network load report. Here, the Ethernet congestion control module dynamically monitors the network load, and when the load level of the network load changes, the new network load data is sent to the host through the network load report. After receiving the device load data and the network load data, the host dynamically evaluates the sending frequency of the REQ message for the CXL device and optimizes and adjusts it to reduce congestion and improve the overall performance of the system.

[0137] Application Example 4

[0138] In this application example, the CXL protocol is enhanced. Specifically, the RSVD field in the RSP message is reused. When the Ethernet congestion control module feeds back the network load (NetworkLoad) data to the host, the network load data is written into the RSVD field. The host makes the best congestion handling strategy based on the device load data and the network load data. The overall process is as follows: Figure 8 As shown, the following steps are included:

[0139] Step 801: The host sends a memory access request (ie, a REQ message) to the CXL device.

[0140] Step 802: The CXL device monitors the device load.

[0141] Step 803: The CXL device generates device load data, and fills the device load data into the device load field in the memory access response (ie, RSP message).

[0142] Step 804: The Ethernet congestion control module monitors the network load.

[0143] Step 805: The Ethernet congestion control module generates network load data, and fills the network load data into the RSVD field in the memory access response (ie, RSP message).

[0144] Step 806: The host receives a memory access response.

[0145] Step 807: The host performs optimization adjustment according to the device load data and / or the network load data.

[0146] In the above scheme, the network load data is represented by the first load level, which represents the load level of Ethernet; the device load data is represented by the second load level, which represents the load level of the CXL device. The levels of load levels include, from low to high: light load (Light Load) level, optimal load (OptimalLoad) level, moderate load (Moderate Overload) level, and severe overload (Severe Overload) level. Not limited to this, the levels of load levels can also have more or fewer levels, and the levels of load levels can be divided according to actual scenarios. The CXL device fills the device load data (i.e., the second load level) into the DevLoad field in the memory access response; the Ethernet congestion control module fills the network load data (i.e., the first load level) into the RSVD field in the memory access response. After receiving the device load data and the network load data, the host dynamically evaluates the sending frequency of the REQ message for the CXL device and optimizes and adjusts it to reduce congestion and improve the overall performance of the system.

[0147] Fig. 9 The structure of the congestion control device provided in the embodiment of the present application is shown in FIG. Figure 1 , applied to the host in the first server, such as Fig. 9 As shown, the congestion control device includes:

[0148] A receiving unit 901 is configured to receive load data sent by a second server, where the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data;

[0149] The control unit 902 is configured to execute an optimization adjustment strategy based on the load data, wherein the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0150] In some embodiments, the network load data includes a first load level, the first load level indicating a load level of the Ethernet; the device load data includes a second load level, the second load level indicating a load level of the CXL device;

[0151] The load levels are ranked from low to high in order: light load level, optimal load level, medium load level, and severe overload level.

[0152] In some embodiments, the receiving unit 901 is used to receive a memory access response sent by a second server, the memory access response carrying load data, the load data including a target load level, and the target load level being a higher load level between the first load level and the second load level; or, to receive a memory access response sent by a second server, the memory access response carrying load data, the load data including the first load level and the second load level; or, to receive a memory access response and a network load report sent by the second server, the memory access response carrying the second load level, and the network load report carrying the first load level.

[0153] In some implementations, the apparatus further includes: a sending unit 903, configured to send a memory access request to the second server.

[0154] In some implementations, the sending unit 903 is used to send a memory access request to the CXL device of the first server through the CXL protocol, where the memory access request carries a virtual memory address to be accessed, and the virtual memory address to be accessed is used for the CXL device of the first server to encapsulate the memory access request into an Ethernet data packet and send it to the second server when it is determined that the target device to be accessed is a remote device; wherein, when the virtual memory address to be accessed is located in a memory domain of a remote device, the target device to be accessed is the remote device.

[0155] Those skilled in the art should understand that Fig. 9 The implementation functions of each unit in the congestion control device shown can be understood by referring to the relevant description of the aforementioned method. Fig. 9 The functions of each unit in the congestion control device shown can be implemented by a program running on a processor, or by a specific logic circuit.

[0156] Fig.10 The structure of the congestion control device provided in the embodiment of the present application is shown in FIG. Figure 2 , applied to the second server, such as Fig.10 As shown, the congestion control device includes:

[0157] A generating unit 1001, configured to generate network load data and device load data;

[0158] A sending unit 1002 is configured to send load data to a host in a first server, where the load data includes the network load data and the device load data or the load data is determined based on the network load data and the device load data;

[0159] The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

[0160] In some embodiments, the network load data includes a first load level, the first load level indicating a load level of the Ethernet; the device load data includes a second load level, the second load level indicating a load level of the CXL device;

[0161] The load levels are ranked from low to high in order: light load level, optimal load level, medium load level, and severe overload level.

[0162] In some embodiments, the sending unit 1002 is used to send a memory access response to the host, the memory access response carrying load data, the load data including a target load level, and the target load level is a higher load level between the first load level and the second load level; or, send a memory access response to the host, the memory access response carrying load data, the load data including the first load level and the second load level; or, send a memory access response and a network load report to the host, the memory access response carrying the second load level, and the network load report carrying the first load level.

[0163] In some implementations, the device further includes: a receiving unit 1003, configured to receive a memory access request sent by the host.

[0164] In some implementations, the memory access request is encapsulated into an Ethernet data packet; the receiving unit 1003 is used to parse the memory access request from the Ethernet data packet, convert the virtual memory address in the memory access request into a physical memory address, and access the CXL device corresponding to the physical memory address.

[0165] Those skilled in the art should understand that Fig.10 The implementation functions of each unit in the congestion control device shown can be understood by referring to the relevant description of the aforementioned method. Fig.10 The functions of each unit in the congestion control device shown can be implemented by a program running on a processor, or by a specific logic circuit.

[0166] Fig.11 It is a schematic structural diagram of a server 1100 provided in an embodiment of the present application. Fig.11 The server 1100 shown includes a processor 1110, which can call and run a computer program from a memory to implement the method in the embodiment of the present application.

[0167] Alternatively, if Fig.11 As shown, the server 1100 may further include a memory 1120. The processor 1110 may call and run a computer program from the memory 1120 to implement the method in the embodiment of the present application.

[0168] The memory 1120 may be a separate device independent of the processor 1110 , or may be integrated into the processor 1110 .

[0169] Fig.12 It is a schematic structural diagram of the chip of an embodiment of the present application. Fig.12 The chip 1200 shown includes a processor 1210, which can call and run a computer program from a memory to implement the method in the embodiment of the present application.

[0170] Alternatively, if Fig.12 As shown, the chip 1200 may further include a memory 1220. The processor 1210 may call and run a computer program from the memory 1220 to implement the method in the embodiment of the present application.

[0171] The memory 1220 may be a separate device independent of the processor 1210 , or may be integrated into the processor 1210 .

[0172] It should be understood that the chip mentioned in the embodiments of the present application can also be called a system-level chip, a system chip, a chip system or a system-on-chip chip, etc.

[0173] It should be understood that the processor of the embodiment of the present application may be an integrated circuit chip with signal processing capabilities. In the implementation process, each step of the above method embodiment can be completed by the hardware integrated logic circuit or software instructions in the processor. The above processor can be a general processor, a digital signal processor (Digital Signal Processor, DSP), an application-specific integrated circuit (Application Specific Integrated Circuit, ASIC), a field programmable gate array (Field Programmable Gate Array, FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components. The methods, steps and logic block diagrams disclosed in the embodiments of the present application can be implemented or executed. The general processor can be a microprocessor or the processor can also be any conventional processor. The steps of the method disclosed in the embodiment of the present application can be directly embodied as a hardware decoding processor to perform, or the hardware and software modules in the decoding processor are combined and performed. The software module can be located in a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, and other mature storage media in the art. The storage medium is located in the memory, and the processor reads the information in the memory and completes the steps of the above method in combination with its hardware.

[0174] It can be understood that the memory in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can 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), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example and not limitation, many forms of RAM are available, such as static random access memory (SRAM), 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), synchronous link dynamic random access memory (SLDRAM), and direct RAM bus random access memory (DR RAM). It should be noted that the memory of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.

[0175] It should be understood that the above-mentioned memory is exemplary but not restrictive. For example, the memory in the embodiments of the present application may also be static random access memory (static RAM, SRAM), dynamic random access memory (dynamic RAM, DRAM), synchronous dynamic random access memory (synchronous DRAM, 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 (synch link DRAM, SLDRAM) and direct memory bus random access memory (Direct Rambus RAM, DR RAM), etc. That is to say, the memory in the embodiments of the present application is intended to include but not limited to these and any other suitable types of memory.

[0176] The embodiment of the present application further provides a computer-readable storage medium for storing a computer program. The computer program enables a computer to execute the corresponding processes implemented by each method of the embodiment of the present application, which will not be described in detail for the sake of brevity.

[0177] The embodiment of the present application further provides a computer program product, including computer program instructions. The computer program instructions enable a computer to execute the corresponding processes implemented by the various methods of the embodiment of the present application, which will not be described in detail for the sake of brevity.

[0178] Those of ordinary skill in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered to be beyond the scope of this application.

[0179] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0180] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.

[0181] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple 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.

[0182] In addition, each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.

[0183] If the functions are implemented in the form of software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application can be essentially or partly embodied in the form of a software product that contributes to the prior art. The computer software product is stored in a storage medium and includes several instructions for a computer device (which can be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the methods described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk.

[0184] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with the technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

Claims

1. A congestion control method, characterized in that: Applied to a host in a first server, the method comprises: Receiving load data sent by the second server, the load data including network load data and device load data or the load data being determined based on the network load data and the device load data; An optimization adjustment strategy is executed based on the load data, where the optimization adjustment strategy is used to perform congestion control on the host accessing the Compute Express Link (CXL) device in the second server.

2. The method according to claim 1, characterized in that The network load data includes a first load level, the first load level indicates the load level of the Ethernet; the device load data includes a second load level, the second load level indicates the load level of the CXL device; The load levels are ranked from low to high in order: light load level, optimal load level, medium load level, and severe overload level.

3. The method according to claim 2, characterized in that The receiving the load data sent by the second server includes: receiving a memory access response sent by a second server, wherein the memory access response carries load data, wherein the load data includes a target load level, and the target load level is a higher load level between the first load level and the second load level; or, receiving a memory access response sent by a second server, wherein the memory access response carries load data, and the load data includes the first load level and the second load level; or, A memory access response and a network load report sent by a second server are received, wherein the memory access response carries the second load level, and the network load report carries the first load level.

4. The method according to claim 3, characterized in that Before receiving the memory access response sent by the second server, the method further includes: A memory access request is sent to the second server.

5. The method according to claim 4, characterized in that The sending the memory access request to the second server includes: A memory access request is sent to the CXL device of the first server through the CXL protocol, wherein the memory access request carries a virtual memory address to be accessed, and the virtual memory address to be accessed is used by the CXL device of the first server to encapsulate the memory access request into an Ethernet data packet and send it to the second server when it is determined that the target device to be accessed is a remote device; wherein when the virtual memory address to be accessed is located in a memory domain of a remote device, the target device to be accessed is the remote device.

6. A congestion control method, characterized in that: Applied to the second server, the method comprises: Generate network load data and device load data; Sending load data to a host in the first server, the load data including the network load data and the device load data or the load data being determined based on the network load data and the device load data; The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

7. The method according to claim 6, characterized in that The network load data includes a first load level, the first load level indicates the load level of the Ethernet; the device load data includes a second load level, the second load level indicates the load level of the CXL device; The load levels are ranked from low to high in order: light load level, optimal load level, medium load level, and severe overload level.

8. The method according to claim 7, characterized in that The sending of load data to the host in the first server includes: Sending a memory access response to the host, the memory access response carrying load data, the load data including a target load level, the target load level being a higher load level between the first load level and the second load level; or, Sending a memory access response to the host, the memory access response carrying load data, the load data including the first load level and the second load level; or, A memory access response and a network load report are sent to the host, wherein the memory access response carries the second load level, and the network load report carries the first load level.

9. The method according to claim 8, characterized in that Before sending the memory access response to the host, the method further includes: Receive a memory access request sent by the host.

10. The method according to claim 9, characterized in that The memory access request is encapsulated into an Ethernet data packet; the method further comprises: After parsing the memory access request from the Ethernet data packet, the virtual memory address in the memory access request is converted into a physical memory address, and the CXL device corresponding to the physical memory address is accessed.

11. A congestion control device, characterized in that: Applied to a host in a first server, the device comprises: A receiving unit, configured to receive load data sent by the second server, wherein the load data includes network load data and device load data or the load data is determined based on the network load data and the device load data; A control unit is used to execute an optimization adjustment strategy based on the load data, wherein the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

12. A congestion control device, characterized in that: Applied to a second server, the device comprises: A generating unit, used for generating network load data and device load data; a sending unit, configured to send load data to a host in the first server, wherein the load data includes the network load data and the device load data or the load data is determined based on the network load data and the device load data; The load data is used by the host to execute an optimization adjustment strategy, and the optimization adjustment strategy is used to perform congestion control on the host accessing the CXL device in the second server.

13. A server, characterized in that: include: A processor and a memory, the memory being used to store a computer program, the processor being used to call and run the computer program stored in the memory to execute the method according to any one of claims 1 to 10.

14. A computer-readable storage medium, characterized in that: Used to store a computer program, wherein the computer program causes a computer to execute the method according to any one of claims 1 to 10.

15. A computer program product, characterized in that The method comprises computer program instructions which cause a computer to execute the method as claimed in any one of claims 1 to 10.