Data processing method and apparatus, and computing device
By having the NPU in the storage system directly obtain routing information from the VM to process IO requests, the problem of low IO request processing efficiency in existing technologies is solved, thereby improving system performance and reliability.
Patent Information
- Application Number
- PCT/CN2025/080655
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-08-22
- Filing Date
- 2025-03-05
- Publication Date
- 2025-12-26
AI Technical Summary
The low efficiency of I/O request processing in existing storage systems leads to reduced system performance and reliability.
The NPU obtains the routing information required for IO requests directly from the VM, avoiding obtaining it from the SPU. By offloading the NPU of the card to handle IO requests, processing efficiency is improved.
It improves the efficiency of IO request processing, thereby enhancing system performance and reliability.
Smart Images

Figure CN2025080655_26122025_PF_FP_ABST
Abstract
Description
Data processing methods, apparatus and computing devices
[0001] This application claims priority to Chinese Patent Application No. 202410799383.7, filed on June 19, 2024, entitled "Method, Apparatus and Computing Device for Data Processing", and Chinese Patent Application No. 202411161658.0, filed on August 22, 2024, also entitled "Method, Apparatus and Computing Device for Data Processing", the entire contents of which are incorporated herein by reference. Technical Field
[0002] This application relates to the field of cloud computing, and more specifically, to a data processing method, apparatus, and computing device. Background Technology
[0003] To improve the utilization of server (also known as host) hardware resources, the industry has proposed a new generation of hardware offloading technology, which can offload server services (such as computing, networking, storage, security, etc.) to an offloading card, allowing the server to free up more physical resources for tenants to use.
[0004] In a current storage system architecture, storage and networking services from the host can be offloaded to a smart network interface card (NIC), which then handles these services. This smart NIC consists of a network processing unit (NPU) and a service processing unit (SPU). Upon receiving an I / O request from the virtual machine (VM), the NPU retrieves routing information from the SPU and uses this information to forward the I / O request to the corresponding storage node, thus achieving I / O request routing and forwarding. However, this storage system architecture suffers from low I / O request processing efficiency, reducing system performance and reliability.
[0005] Therefore, improving the efficiency of IO request processing and enhancing system performance has become an urgent technical problem to be solved. Summary of the Invention
[0006] This application provides a data processing method that can improve the processing efficiency of IO requests and enhance system performance.
[0007] In a first aspect, a data processing method is provided, applied to a storage system including a storage pool and an offload card inserted on a compute node. The storage pool and the compute node are located in at least one data center providing cloud services. A virtual instance for implementing tenant services runs on the compute node, and a storage client is deployed on the virtual instance. The offload card includes a network processing unit (NPU). The method includes: the NPU obtaining a first address and routing information corresponding to a target I / O request from a first queue, wherein the first queue is stored on the compute node, the target I / O request is an I / O request issued by the storage client, and the first address is the address on the compute node where the target I / O request is stored; the NPU obtaining the target I / O request from the compute node based on the first address; the NPU determining a target storage node among a plurality of storage nodes based on the routing information corresponding to the target I / O request; and the NPU sending the target I / O request to the target storage node.
[0008] In the above technical solution, the NPU can directly obtain the routing information required to process IO requests from the VM, thereby avoiding obtaining the routing information required to process IO requests from the SPU, improving the processing efficiency of IO requests, and thus improving the performance and reliability of the system.
[0009] In conjunction with the first aspect, in some implementations of the first aspect, the first queue includes a first element, which includes the first address and the routing information corresponding to the target IO request. The NPU obtains the first element from the first queue; the NPU obtains the first address and the routing information corresponding to the target IO request from the first element.
[0010] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: the NPU writing a second element to a second queue, the second element including the first address and the completion status of the target IO request.
[0011] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: the computing node obtaining the second element from the second queue; and, if the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node reclaiming the memory resources occupied by the target IO request.
[0012] In the above technical solution, when the completion status of the target IO request indicates that the target IO request has been successfully sent to the target storage node, the memory resources occupied by the target IO request in the computing node can be reclaimed, thereby improving the utilization rate of memory resources in the computing node.
[0013] In conjunction with the first aspect, in some implementations of the first aspect, the offloading card further includes a service processing unit (SPU). Before the NPU obtains the first address and the routing information corresponding to the target IO request from the first queue, the method further includes: the SPU sending the base address of the first queue to the NPU; and the NPU obtaining the first queue from the computing node based on the base address of the first queue.
[0014] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: the NPU receiving an IO response message for the target IO request sent by the target storage node; the NPU obtaining a third element from a third queue, wherein the third element includes a second address for storing the IO response message; and the NPU storing the IO response message in the compute node according to the second address.
[0015] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: the NPU writing a fourth element to the second queue, the fourth element including the second address and the processing status of the IO response message.
[0016] In conjunction with the first aspect, in some implementations of the first aspect, the method further includes: when the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node reclaims the memory resources occupied by the IO response message.
[0017] In the above technical solution, when the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the memory resources occupied by the IO response message in the computing node can be reclaimed, thereby improving the utilization rate of memory resources in the computing node.
[0018] Secondly, a data processing method is provided, applied to a storage system including compute nodes, offload card bearer nodes, management nodes, and a storage pool. The compute nodes, offload card bearer nodes, management nodes, and storage pool are located in at least one data center providing cloud services. The compute nodes run virtual instances that implement tenant services, and these virtual instances deploy storage clients. The offload card bearer nodes have multiple offload cards installed. The management node includes a Service Processing Unit (SPU). The storage pool includes multiple storage nodes. The method includes: the SPU selecting a first offload card from the multiple offload cards. The first offloading card includes a first network processing unit (NPU). The first NPU obtains a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the compute node, the target IO request is an IO request issued by the storage client, and the first address is the address in the compute node where the target IO request is stored. The first NPU obtains the target IO request from the compute node based on the first address. The first NPU determines the target storage node among the plurality of storage nodes based on the routing information corresponding to the target IO request. The first NPU sends the target IO request to the target storage node.
[0019] In conjunction with the second aspect, in some implementations of the second aspect, the first queue includes a first element, which includes the first address and the routing information corresponding to the target IO request. The first NPU obtains the first element from the first queue; the first NPU obtains the first address and the routing information corresponding to the target IO request from the first element.
[0020] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the first NPU writing a second element to a second queue, the second element including the first address and the completion status of the target IO request.
[0021] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the computing node obtaining the second element from the second queue; and, if the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node reclaiming the memory resources occupied by the target IO request.
[0022] In conjunction with the second aspect, in some implementations of the second aspect, the plurality of offloading cards further includes a second offloading card, which includes a second NPU. Before the first NPU obtains the first address and the routing information corresponding to the target IO request from the first queue, the method further includes: the SPU sending the base address of the first queue to the first NPU and the second NPU; and the first NPU obtaining the first queue from the compute node based on the base address of the first queue.
[0023] In conjunction with the second aspect, in some implementations of the second aspect, when the first NPU malfunctions, the method further includes: the second NPU obtaining the first queue from the compute node based on the base address of the first queue; the second NPU obtaining the target IO request from the compute node based on the first address in the first queue; the second NPU determining the target storage node among the plurality of storage nodes based on the routing information corresponding to the target IO request in the first queue; and the second NPU sending the target IO request to the target storage node.
[0024] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the first NPU receiving an IO response message for the target IO request sent by the target storage node; the first NPU obtaining a third element from a third queue, wherein the third element includes a second address for storing the IO response message; and the first NPU storing the IO response message in the computing node according to the second address.
[0025] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: the first NPU writing a fourth element to the second queue, the fourth element including the second address and the processing status of the IO response message.
[0026] In conjunction with the second aspect, in some implementations of the second aspect, the method further includes: when the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node reclaims the memory resources occupied by the IO response message.
[0027] It should be understood that the beneficial effects of the second aspect and its various implementations can be found in the first aspect and its various implementations, and will not be elaborated here.
[0028] Thirdly, a storage system is provided, comprising a storage pool and an offloading card inserted on a compute node. The storage pool and the compute node are located in at least one data center providing cloud services. A virtual instance for implementing tenant services runs on the compute node, and a storage client is deployed on the virtual instance. The offloading card includes a network processing unit (NPU). The NPU is used to obtain a first address and routing information corresponding to a target IO request from a first queue stored on the compute node. The target IO request is an IO request issued by the storage client, and the first address is the address where the target IO request is stored in the compute node. The NPU is also used to obtain the target IO request from the compute node based on the first address; the NPU is also used to determine a target storage node among a plurality of storage nodes based on the routing information corresponding to the target IO request; and the NPU is also used to send the target IO request to the target storage node.
[0029] In conjunction with the third aspect, in some implementations of the third aspect, the first queue includes a first element, which includes the first address and the routing information corresponding to the target IO request. The NPU is specifically used to: retrieve the first element from the first queue and retrieve the first address and the routing information corresponding to the target IO request from the first element.
[0030] In conjunction with the third aspect, in some implementations of the third aspect, the NPU is also used to write a second element to the second queue, the second element including the first address and the completion status of the target IO request.
[0031] In conjunction with the third aspect, in some implementations of the third aspect, the computing node is used to retrieve the second element from the second queue; and if the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node is also used to reclaim the memory resources occupied by the target IO request.
[0032] In conjunction with the third aspect, in some implementations of the third aspect, the offloading card further includes a service processing unit (SPU), which sends the base address of the first queue to the NPU before the NPU obtains the first address and the routing information corresponding to the target IO request from the first queue; the NPU is also used to obtain the first queue from the computing node based on the base address of the first queue.
[0033] In conjunction with the third aspect, in some implementations of the third aspect, the NPU is further configured to receive an IO response message sent by the target storage node in response to the target IO request; the NPU is further configured to retrieve a third element from a third queue, wherein the third element includes a second address for storing the IO response message; and the NPU is further configured to store the IO response message in the compute node according to the second address.
[0034] In conjunction with the third aspect, in some implementations of the third aspect, the NPU is also used to write a fourth element to the second queue, the fourth element including the second address and the processing status of the IO response message.
[0035] In conjunction with the third aspect, in some implementations of the third aspect, when the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node is also used to reclaim the memory resources occupied by the IO response message.
[0036] It should be understood that the beneficial effects of the third aspect and its various implementations can be found in the first aspect and its various implementations, and will not be elaborated here.
[0037] Fourthly, a storage system is provided, comprising a compute node, an offload card bearer node, a management node, and a storage pool. The compute node, offload card bearer node, management node, and storage pool are located in at least one data center providing cloud services. The compute node runs a virtual instance where users implement tenant services, and the virtual instance deploys storage clients. Multiple offload cards are inserted into the offload card bearer node. The management node includes a Service Processing Unit (SPU). The storage pool includes multiple storage nodes. The SPU is used to select a first offload card from the multiple offload cards. The first offload card includes a first Network Processing Unit (NPU). The first NPU is configured to obtain a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the compute node, the target IO request is an IO request issued by the storage client, and the first address is the address in the compute node where the target IO request is stored; the first NPU is further configured to obtain the target IO request from the compute node based on the first address; the first NPU is further configured to determine a target storage node among the plurality of storage nodes based on the routing information corresponding to the target IO request; and the first NPU is further configured to send the target IO request to the target storage node.
[0038] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the first queue includes a first element, which includes the first address and the routing information corresponding to the target IO request. The first NPU is specifically used to: retrieve the first element from the first queue; and retrieve the first address and the routing information corresponding to the target IO request from the first element.
[0039] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the first NPU is also used to write a second element to the second queue, the second element including the first address and the completion status of the target IO request.
[0040] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the computing node is used to retrieve the second element from the second queue; and if the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node is also used to reclaim the memory resources occupied by the target IO request.
[0041] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the plurality of offloading cards further includes a second offloading card, which includes a second NPU. Before the first NPU obtains the first address and the routing information corresponding to the target IO request from the first queue, the SPU is used to send the base address of the first queue to the first NPU and the second NPU. The first NPU is also used to obtain the first queue from the compute node based on the base address of the first queue.
[0042] In conjunction with the fourth aspect, in some implementations of the fourth aspect, when the first NPU malfunctions, the second NPU is used to retrieve the first queue from the compute node based on the base address of the first queue; the second NPU is also used to retrieve the target IO request from the compute node based on the first address in the first queue; the second NPU is also used to determine the target storage node among the plurality of storage nodes based on the routing information corresponding to the target IO request in the first queue; and the second NPU is also used to send the target IO request to the target storage node.
[0043] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the first NPU is further configured to receive an IO response message sent by the target storage node in response to the target IO request; the first NPU is further configured to retrieve a third element from a third queue, wherein the third element includes a second address, the second address being used to store the IO response message; and the first NPU is further configured to store the IO response message in the computing node according to the second address.
[0044] In conjunction with the fourth aspect, in some implementations of the fourth aspect, the first NPU is also used to write a fourth element into the second queue, the fourth element including the second address and the processing status of the IO response message.
[0045] In conjunction with the fourth aspect, in some implementations of the fourth aspect, when the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node is also used to reclaim the memory resources occupied by the IO response message.
[0046] It should be understood that the beneficial effects of the fourth aspect and its various implementations can be found in the first aspect and its various implementations, and will not be elaborated here.
[0047] Fifthly, a computing device cluster is provided, including at least one computing device, each computing device including 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, such that the computing device cluster performs the method of the first aspect or any possible implementation thereof, or performs the method of the second aspect or any possible implementation thereof.
[0048] In a sixth aspect, a chip is provided that acquires and executes instructions to implement the methods in the first aspect and any implementation thereof, or to implement the methods in the second aspect or any possible implementation thereof.
[0049] Optionally, as one implementation, the chip includes a processor and a data interface, through which the processor reads instructions stored in the memory and executes the methods in the first aspect and any implementation thereof, or executes the methods in the second aspect or any possible implementation thereof.
[0050] Optionally, as one implementation, the chip may further include a memory storing instructions, and the processor is used to execute the instructions stored in the memory. When the instructions are executed, the processor is used to execute the method in the first aspect and any implementation thereof, or to execute the method in the second aspect or any possible implementation thereof.
[0051] In a seventh aspect, a computer program product containing instructions is provided, which, when executed by a cluster of computing devices, cause the cluster of computing devices to perform the methods described in the first aspect and any implementation thereof, or to perform the methods described in the second aspect or any possible implementation thereof.
[0052] Eighthly, a computer-readable storage medium is provided, including computer program instructions that, when executed by a cluster of computing devices, perform a method as described in the first aspect and any implementation thereof, or perform a method as described in the second aspect or any possible implementation thereof.
[0053] As examples, these computer-readable storage devices include, but are not limited to, one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), flash memory, electrically EPROM (EEPROM), and hard drive.
[0054] Alternatively, as one implementation method, the aforementioned storage medium can specifically be a non-volatile storage medium. Attached Figure Description
[0055] Figure 1 is a schematic diagram of a cloud scenario applicable to an embodiment of this application.
[0056] Figure 2 is a schematic diagram of the architecture of a storage system applicable to an embodiment of this application.
[0057] Figure 3 is a schematic diagram of the architecture of another storage system applicable to embodiments of this application.
[0058] Figure 4 is a schematic flowchart of a method for processing I / O requests provided in an embodiment of this application.
[0059] Figure 5 is a schematic flowchart of another method for processing IO requests provided in an embodiment of this application.
[0060] Figure 6 is a schematic diagram of the architecture of a computing device 1500 provided in an embodiment of this application.
[0061] Figure 7 is a schematic diagram of the architecture of a computing device cluster provided in an embodiment of this application.
[0062] Figure 8 is a schematic diagram of the connection between computing devices 1500A and 1500B via a network provided in an embodiment of this application. Detailed Implementation
[0063] The technical solutions in this application will now be described with reference to the accompanying drawings.
[0064] This application will present various aspects, embodiments, or features relating to systems comprising multiple devices, components, modules, etc. It should be understood and appreciated that individual systems may include additional devices, components, modules, etc., and / or may not include all devices, components, modules, etc. discussed in conjunction with the accompanying drawings. Furthermore, combinations of these approaches are also possible.
[0065] Furthermore, in the embodiments of this application, the words "exemplary," "for example," etc., are used to indicate that they are examples, illustrations, or descriptions. Any embodiment or design scheme described as "exemplary" in this application should not be construed as being more preferred or advantageous than other embodiments or design schemes. Specifically, the use of the term "exemplary" is intended to present the concept in a concrete manner.
[0066] In the embodiments of this application, "corresponding" and "corresponding" can sometimes be used interchangeably. It should be noted that when the distinction is not emphasized, their intended meanings are consistent.
[0067] The business scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. As those skilled in the art will know, with the evolution of network architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.
[0068] References to "one embodiment" or "some embodiments" as described in this specification mean that one or more embodiments of this application include a specific feature, structure, or characteristic described in connection with that embodiment. Therefore, the phrases "in one embodiment," "in some embodiments," "in other embodiments," "in still other embodiments," etc., appearing in different parts of this specification do not necessarily refer to the same embodiment, but rather mean "one or more, but not all, embodiments," unless otherwise specifically emphasized. The terms "comprising," "including," "having," and variations thereof mean "including but not limited to," unless otherwise specifically emphasized.
[0069] In this application, "at least one" means one or more, and "more than one" means two or more. "And / or" describes the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can mean: A alone, A and B simultaneously, and B alone, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can mean: a, b, c, ab, ac, bc, or abc, where a, b, and c can be single or multiple.
[0070] As an example, this application can be applied to cloud scenarios. For ease of description, the cloud scenario applied to the embodiments of this application will be described in detail below with reference to Figure 1.
[0071] As exemplified in Figure 1, this cloud scenario may include: the Internet, clients, and data centers providing cloud services. The various components of the cloud scenario are described in detail below.
[0072] The aforementioned data center providing cloud services may include multiple servers and a cloud management platform (also known as a cloud control platform). The servers run virtual machines (VMs), and the cloud management platform provides access interfaces (such as user interfaces or application programming interfaces, APIs). Tenants can use a client to remotely access the cloud management platform, register a cloud account and password, and log in. After successful authentication of the cloud account and password, the tenant can further select and purchase a VM with specific specifications (processor, memory, disk) on the cloud management platform. After successful purchase, the cloud management platform selects a suitable server based on the hardware resource usage on each server in the data center and the specifications of the purchased VM, and instructs the VMM on that server to create the VM. Once the VM is created, the cloud management platform provides the remote login account and password for the purchased VM, along with a connection entry point. The tenant can then log in to the VM by clicking the connection entry point on the client, entering the account and password, and installing and running their applications within the VM.
[0073] The login methods mentioned above may include command-line login and desktop login.
[0074] It should be understood that a VM refers to a complete computer system simulated by software, possessing full hardware system functionality and running in a completely isolated environment. Any task that can be performed on a server (also known as a host) can be performed in a virtual machine. Each virtual machine has its own independent hard drive and operating system, and users can operate the virtual machine as if it were a server.
[0075] The logical functions of the aforementioned cloud management platform may include, but are not limited to: user console, compute management service, network management service, storage management service, authentication service, and image management service. The user console provides an interface or API for interaction with tenants; the compute management service manages servers running virtual machines and containers; the network management service manages network services (such as gateways and firewalls); the storage management service manages storage services (such as data bucket services); the authentication service manages tenant account passwords; and the image management service manages virtual machine images.
[0076] To improve the utilization of server (also known as host) hardware resources, the industry has proposed a new generation of hardware offloading technology, which can offload server services (such as computing, networking, storage, security, etc.) to an offloading card, allowing the server to free up more physical resources for tenants to use.
[0077] As an example, in an existing storage system architecture, storage, network, and other services on the host can be offloaded to a smart network interface card (NIC), which then handles these services. For instance, this storage system architecture may include a host, a smart NIC, and a storage pool. The storage pool comprises multiple storage nodes, and the smart NIC is responsible for processing storage requests (e.g., I / O requests) issued by the VMs on the host, enabling data writing and reading on the storage nodes.
[0078] The aforementioned smart network interface card (NIC) consists of a network processing unit (NPU) and a service processing unit (SPU). After receiving an I / O request from the virtual machine (VM), the NPU retrieves routing information from the SPU and, based on this information, sends the I / O request to the corresponding storage node, thus achieving I / O request routing and forwarding.
[0079] In the existing storage system architecture described above, after the NPU receives the IO request issued by the VM, it also needs to obtain the routing information required to process the IO request from the SPU, which results in low IO request processing efficiency and reduces system performance and reliability.
[0080] In view of this, embodiments of this application provide a storage system in which the NPU can directly obtain the routing information required for processing IO requests from the VM, thereby avoiding obtaining the routing information required for processing IO requests from the SPU, improving the processing efficiency of IO requests, and thus improving the performance and reliability of the system.
[0081] The architecture of the storage system applicable to the embodiments of this application will be illustrated below with reference to Figures 2 and 3.
[0082] Figure 2 is a schematic diagram of the architecture of a storage system applicable to an embodiment of this application. As shown in Figure 2, the storage system includes a storage pool and an offload card inserted on a compute node. The offload card includes a network processing unit (NPU) and a service processing unit (SPU). The storage pool includes multiple storage nodes.
[0083] The aforementioned computing nodes and storage pool can be located in at least one data center that provides cloud services. For example, the computing nodes can be servers in the cloud data center shown in Figure 1, and the storage pool includes multiple storage nodes that can be servers in the cloud data center shown in Figure 1.
[0084] The aforementioned compute nodes (also known as hosts) run virtual instances or applications that are available for remote use by tenants. These virtual instances may include, but are not limited to, virtual machines (VMs) and containers.
[0085] For example, the offloading card mentioned above may include, but is not limited to: data processing unit (DPU), smart network interface card (smartNIC), intelligent processing unit (IPU), smart network card, etc.
[0086] As an example, there is a fixed correspondence between the unloading card and the computing node. The unloading card can be inserted into the computing node, and the unloading card connects to the computing node through the connection channel between the unloading card and the computing node.
[0087] It should be understood that the connection channel between the offloading card and the computing node can be implemented through bus technology, high-speed interconnection network, or other communication methods. This application embodiment does not specifically limit this.
[0088] As an example, the bus technology may include, but is not limited to: Extended Peripheral Component Interconnect Express (PCIE) bus, Compute Express Link (CXL), Unified Bus (UB), Remote Direct Memory Access (RDMA), etc.
[0089] The aforementioned offloading card may include an NPU and an SPU, with a connection channel provided between the NPU and the SPU. This connection channel may be implemented through bus technology, a high-speed interconnect network, or other communication methods; this application embodiment does not specifically limit this.
[0090] The aforementioned NPU is used to obtain target IO requests issued by the virtual instance running on the compute node, process the target IO request to generate a request message, and send the request message to the target storage node among the multiple storage nodes.
[0091] It should be understood that the process by which the NPU processes the target IO request includes, but is not limited to: QoS control, data encryption and decryption, data integrity field (DIF) processing, DIF verification, and routing forwarding.
[0092] By offloading the data plane processing of IO requests from the SPU to the NPU, the above approach avoids excessive DMA operations and data copying between the SPU and NPU, thereby reducing IO processing latency. Furthermore, since the NPU has more hardware resources than the SPU, processing the target IO request through the NPU can improve IO concurrency.
[0093] As an example, since the NPU is responsible for I / O parsing and routing, the transport layer protocol for data transmission between the NPU and storage nodes must also be implemented in the NPU. Because the connection establishment, negotiation, termination, and connection state maintenance processes between the NPU and storage nodes are quite complex, implementing them all in the NPU would increase the complexity of its design and implementation. The SPU provides connection management functionality, which handles connection establishment, negotiation, termination, and connection state maintenance within the SPU.
[0094] The target storage node among the aforementioned multiple storage nodes is used to receive and process the request message sent by the NPU, generate a corresponding response message, and send the response message to the NPU.
[0095] Figure 3 is a schematic diagram of the architecture of another storage system applicable to an embodiment of this application. As shown in Figure 3, the storage system includes an offload card bearer node, a management node, and a storage pool.
[0096] It should be understood that the architecture shown in Figure 3 is a pooled architecture. In this pooled architecture, there is no fixed correspondence between offloaded cards and compute nodes. Multiple compute nodes can share at least two offloaded cards included in the offloaded card resource pool. For example, the at least two offloaded cards are inserted into one or more physical nodes (which can also be called offloaded card bearer nodes), and the at least two offloaded cards constitute a resource pool.
[0097] As an example, Figure 3 illustrates the process using two offloading cards (a first offloading card and a second offloading card). As shown in Figure 3, the first offloading card and the second offloading card are inserted into the offloading card bearer node. The first offloading card includes a first network processing unit (NPU), and the second offloading card includes a second NPU.
[0098] As an example, the offloading card bearer node can be set up in at least one data center that provides cloud services, for example, it can be a server in the cloud data center shown in Figure 1.
[0099] The aforementioned management node may include a Service Processing Unit (SPU). As an example, this management node may be located in at least one data center providing cloud services, such as a server in the cloud data center shown in Figure 1.
[0100] In some embodiments, if multiple offload cards (including a first offload card and a second offload card) are inserted on the offload card bearer node, the SPU can pool these multiple offload cards to ensure a relatively balanced load among the NPUs. Simultaneously, it can effectively utilize NPU resources and improve resource utilization.
[0101] As an example, the SPU can select the first NPU from the multiple NPUs included in the multiple offload cards based on the load status of each offload card and the load balancing algorithm, and the first NPU will be responsible for handling the target IO requests issued by the VM.
[0102] In another example, if the load on the first NPU exceeds a preset threshold, the SPU can select the second NPU from among the multiple offload cards based on the load status of each offload card and a load balancing algorithm. The target I / O request is then migrated from the first NPU to the second NPU with the lighter load, thereby achieving load balancing among the multiple NPUs.
[0103] The aforementioned storage pool includes multiple storage nodes. As an example, these multiple storage nodes can be located in at least one data center providing cloud services, such as servers in the cloud data center shown in Figure 1.
[0104] The communication between the offloading card bearer node and the computing node, between the offloading card bearer node and the management node, and between the management node and the storage pool can be achieved through a high-speed interconnection network, or through other communication methods. This application embodiment does not specifically limit this.
[0105] The first and second unloading cards in the aforementioned unloading card carrying node can be connected via bus technology, high-speed interconnection network, or other communication methods. This application embodiment does not specifically limit this.
[0106] The method for processing I / O requests provided in this application embodiment will be described in detail below with reference to Figures 4 and 5. It should be understood that the examples in Figures 4 and 5 are merely to help those skilled in the art understand the embodiments of this application, and are not intended to limit the embodiments to the specific values or scenarios illustrated in Figures 4 and 5. Those skilled in the art can obviously make various equivalent modifications or variations based on the examples given below in Figures 4 and 5, and such modifications and variations also fall within the scope of the embodiments of this application.
[0107] It should be noted that the methods shown in Figures 4 and 5 can be applied to any of the above-mentioned storage systems, and the embodiments of this application do not specifically limit them.
[0108] Figure 4 is a schematic flowchart of a method for processing I / O requests provided in an embodiment of this application. As shown in Figure 4, the method may include steps 410-440, which will be described in detail below.
[0109] Step 410: The NPU obtains the target IO request issued by the VM on the compute node.
[0110] In this embodiment of the application, a storage client is deployed in the VM running on the computing node. When a tenant needs to operate on the data in the storage device, they can issue a target IO request through the storage client deployed in the VM.
[0111] As an example, after the storage client issues a target IO request, the VM can write the address where the target IO request is stored in the compute node (e.g., the first address) and the routing information corresponding to the target IO request into the first queue.
[0112] In one possible implementation, after the VM issues a target IO request to the storage client, it can encapsulate the aforementioned first address and the routing information corresponding to the target IO request into a first element and write the first element into a first queue.
[0113] For example, the first queue mentioned above could be a submission queue (SQ), and the element written to the first queue could be a submission queue element (SQE).
[0114] In this embodiment of the application, the VM can also record the position of the producer index (PI). After the first element is written into the first queue, the PI indicates the position of the next element to be added to the first queue.
[0115] In this embodiment, after the VM writes the first address and the routing information corresponding to the target IO request into the first queue, it can notify the NPU of the target IO request to be processed. For example, the VM can notify the NPU of the target IO request to be processed through the Doorbell mechanism.
[0116] When the VM notifies the NPU of a target IO request to be processed, it can also notify the NPU of the identifier of the first queue (e.g., the ID of the first queue).
[0117] After receiving a notification from the VM (e.g., a triggered Doorbell), the NPU can obtain a first queue from the compute node (or the VM of the compute node) and retrieve the routing information corresponding to the first address and the target I / O request from the first queue. For example, after obtaining the first queue, the NPU can retrieve the first element from the first queue based on the position pointed to by its maintained consumer index (CI). This first element includes the routing information corresponding to the first address and the target I / O request.
[0118] In this embodiment, after the NPU obtains the first element from the first queue, it can also update the position information of the CI maintained by the NPU in the first queue. After reading the first element from the first queue, the updated CI indicates the position of the next element to be read by the NPU in the first queue.
[0119] The following describes one way to implement NPU acquisition of the first queue.
[0120] As an example, the VM can send the base address of the first queue stored through the SPU to the NPU, which can then retrieve the stored first queue from the compute node based on the base address of the first queue stored.
[0121] Step 420: The NPU obtains the target I / O request from the compute node based on the first address.
[0122] In this embodiment of the application, after the NPU obtains the first address from the first queue, it can obtain the target IO request from the compute node based on the first address.
[0123] As an example, the first address mentioned above may include the physical address and / or virtual address where the target IO request is stored in the compute node.
[0124] Step 430: The NPU determines the target storage node among multiple storage nodes based on the routing information corresponding to the target IO request.
[0125] In this embodiment of the application, after the NPU obtains the routing information corresponding to the target IO request from the first queue, it can determine the target storage node among multiple storage nodes based on the routing information.
[0126] As an example, the routing information corresponding to the aforementioned target IO request includes, but is not limited to: the ID of the target storage node and the connection information of the target storage node. The connection information of the target storage node includes, but is not limited to: the transport protocol requirements between the NPU and the target storage node, the connection sequence number, window information, etc.
[0127] Optionally, in some embodiments, the first queue also stores permission verification information for the target IO request. The NPU can also check the access permissions of the target IO request based on the permission verification information.
[0128] Step 440: The NPU sends a target I / O request to the target storage node.
[0129] In this embodiment of the application, the NPU can send a target IO request to the target storage node based on the routing information corresponding to the target IO request.
[0130] For example, the NPU can send the target I / O request to the target storage node based on the transmission protocol requirements between the NPU and the target storage node, the connection sequence number, the window, and other information.
[0131] In the above technical solution, the NPU can directly obtain the routing information required to process IO requests from the VM, thereby avoiding obtaining the routing information required to process IO requests from the SPU, improving the processing efficiency of IO requests, and thus improving the performance and reliability of the system.
[0132] It should be noted that in the storage system shown in Figure 3, it is assumed that the storage system includes multiple NPUs, among which a first NPU is included. The NPU responsible for handling the target IO request can be the first NPU selected by the SPU from among the multiple NPUs based on the load of each NPU. That is, the first NPU is responsible for obtaining the target IO request issued by the VM on the compute node.
[0133] Optionally, in some embodiments, for the storage system shown in Figure 3, the SPU can also send the base address stored in the first queue to multiple NPUs. Assume that the multiple NPUs in this storage system include a first NPU and a second NPU. If the first NPU currently processing the target IO request malfunctions, the second NPU can take over processing the target IO request. For example, the second NPU, based on the base address stored in the first queue, retrieves the stored first queue from the compute node, obtains the first address in the first queue and the routing information corresponding to the target IO request, determines the target storage node based on the routing information corresponding to the target IO request, and sends the target IO request to the target storage node.
[0134] It should be understood that the above-mentioned abnormality of the first NPU includes, but is not limited to, the following situations: first NPU overload, first NPU failure.
[0135] Optionally, after the NPU sends the target I / O request to the target storage node, if the target storage node successfully receives the request message, it will send an acknowledgement (ACK) message to the NPU. Upon receiving the ACK message from the target storage node, the NPU can write a second element to the second queue. This second element includes the aforementioned first address and the completion status of the target I / O request.
[0136] The aforementioned NPU can also record the position information of the PI in the second queue. After it writes the second element into the second queue, the PI indicates the position of the next element to be added to the second queue.
[0137] For example, the second queue mentioned above is the completion queue (CQ), and the second element mentioned above is the completion queue element (CQE) in the CQ.
[0138] In this embodiment of the application, the VM can obtain the second element from the second queue by polling, and if the status information in the second element indicates that the target IO request has been successfully sent to the target storage node, the VM can release or reclaim the memory resources occupied by the target IO request in the compute node.
[0139] The aforementioned VM can also update the position information of the consumer index (CI) maintained by the VM in the second queue after retrieving the second element from the second queue. After reading the second element from the second queue, the CI indicates the position of the next element to be read from the second queue.
[0140] In the above technical solution, the memory resources occupied by the target IO request in the VM can also be reclaimed after the target IO request is processed, thereby improving the utilization rate of memory resources in the VM.
[0141] Figure 5 is a schematic flowchart of another method for processing I / O requests provided in an embodiment of this application. As shown in Figure 5, the method may include steps 510-530, which will be described in detail below.
[0142] Step 510: The NPU receives the response message sent by the target storage node.
[0143] As an example, the NPU can send a target IO request to the target storage node using the method shown in Figure 4 above. After receiving the target IO request, the target storage node can process the target IO request and send an IO response message to the NPU for the target IO request.
[0144] For example, if the target IO request is an IO read request, the target storage node can read the target data from its stored data according to the IO read request and encapsulate the read target data in the IO response message.
[0145] For example, if the target IO request is an IO write request, the target storage node can store the data to be written in the target IO request into the target storage node and encapsulate the data writing success indication information in the IO response message.
[0146] Step 520: The NPU retrieves a third element from the third queue, which includes a second address for storing IO response messages.
[0147] In this embodiment of the application, the NPU can obtain a third element from the third queue in the VM. The third element includes a second address, which is the address in the compute node used to store IO response messages.
[0148] As an example, the third queue mentioned above is the response queue (RQ), and the third element mentioned above is the response queue element (RQE) in the RQ.
[0149] In this embodiment of the application, the VM can also record the position information of the PI in the third queue. After the VM writes the third element into the third queue, the PI indicates the position of the next element to be added in the third queue.
[0150] In this embodiment, after the NPU obtains the third queue from the third queue, it can also update the position information of the CI maintained by the NPU in the third queue. After reading the third element from the third queue, the CI indicates the position of the next element to be read by the NPU in the third queue.
[0151] Step 530: The NPU stores the IO response message in the compute node based on the second address.
[0152] In this embodiment of the application, after the NPU obtains the second address from the third queue, it can write the IO response message to the second address, thereby realizing the storage of the IO response message in the computing node.
[0153] After storing the IO response message to the compute node, the NPU can also write a fourth element to the second queue. This fourth element includes the second address and the processing status of the IO response message.
[0154] As an example, the second queue mentioned above is a completion queue (CQ), and the fourth element is a completion queue element (CQE) within the CQ.
[0155] In this embodiment of the application, the VM can obtain the fourth element from the second queue by polling, and if the status information in the fourth element indicates that the IO response message has been successfully processed by the computing node, the VM can reclaim the memory resources occupied by the IO response message in the computing node.
[0156] The aforementioned VM can also update the position information of the consumer index (CI) maintained by the VM in the second queue after retrieving the fourth element from the second queue. After reading the fourth element from the second queue, the CI indicates the position of the next element to be read from the second queue.
[0157] In the above technical solution, the memory resources occupied by the IO response message in the VM can also be reclaimed after the IO response message is processed, thereby improving the utilization rate of memory resources in the VM.
[0158] The embodiments of the apparatus of this application will now be described in detail with reference to Figures 6-8. It should be understood that the descriptions of the method embodiments correspond to the descriptions of the apparatus embodiments; therefore, any parts not described in detail can be referred to the foregoing method embodiments.
[0159] The following describes in detail a computing device provided in an embodiment of this application, with reference to Figure 6.
[0160] Figure 6 is a schematic diagram of the architecture of a computing device 1500 provided in an embodiment of this application. The computing device 1500 may be a server, a computer, or other device with computing capabilities. The computing device 1500 shown in Figure 6 includes at least one processor 1510 and a memory 1520.
[0161] It should be understood that this application does not limit the number of processors and memories in the computing device 1500.
[0162] The processor 1510 executes instructions in the memory 1520, causing the computing device 1500 to implement the method provided in this application. Alternatively, the processor 1510 executes instructions in the memory 1520, causing the computing device 1500 to implement the various functional modules provided in this application, thereby implementing the method provided in this application.
[0163] Optionally, the computing device 1500 also includes a communication interface 1530. The communication interface 1530 uses a transceiver module, such as, but not limited to, a network interface card or a transceiver, to enable communication between the computing device 1500 and other devices or communication networks.
[0164] Optionally, the computing device 1500 also includes a system bus 1540, wherein the processor 1510, memory 1520, and communication interface 1530 are respectively connected to the system bus 1540. The processor 1510 can access the memory 1520 through the system bus 1540; for example, the processor 1510 can perform data read / write or code execution in the memory 1520 through the system bus 1540. The system bus 1540 is a peripheral component interconnect express (PCI) bus or an extended industry standard architecture (EISA) bus, etc. The system bus 1540 is divided into an address bus, a data bus, a control bus, etc. For ease of illustration, only one thick line is used in Figure 6, but this does not mean that there is only one bus or one type of bus.
[0165] In one possible implementation, the processor 1510 primarily functions to interpret the instructions (or code) of a computer program and process data within the computer software. The instructions of the computer program and the data within the computer software can be stored in memory 1520 or cache 1516.
[0166] Optionally, processor 1510 may be an integrated circuit chip with signal processing capabilities. By way of example and not limitation, processor 1510 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. Among these, a general-purpose processor is a microprocessor, etc. For example, processor 1510 may be a central processing unit (CPU).
[0167] Optionally, each processor 1510 includes at least one processing unit 1512 and a memory control unit 1514.
[0168] Optionally, the processing unit 1512, also known as the core, is the most important component of the processor. The processing unit 1512 is manufactured from single-crystal silicon using a specific production process. All calculations, command reception, command storage, and data processing are performed by the core. Each processing unit independently executes program instructions, utilizing parallel computing capabilities to accelerate program execution. Various processing units have fixed logical structures; for example, a processing unit includes logical units such as a Level 1 cache, a Level 2 cache, an execution unit, an instruction-level unit, and a bus interface.
[0169] In one implementation example, the memory control unit 1514 controls the data interaction between the memory 1520 and the processing unit 1512. Specifically, the memory control unit 1514 receives memory access requests from the processing unit 1512 and controls access to memory based on the memory access requests. By way of example and not limitation, the memory control unit is a device such as a memory management unit (MMU).
[0170] In one implementation example, each memory control unit 1514 addresses the memory 1520 via the system bus. An arbitrator (not shown in Figure 6) is configured on the system bus to handle and coordinate contention for access by multiple processing units 1512.
[0171] In one implementation example, the processing unit 1512 and the memory control unit 1514 are connected via internal chip connection lines, such as address lines, thereby enabling communication between the processing unit 1512 and the memory control unit 1514.
[0172] Optionally, each processor 1510 also includes a cache 1516, which is a buffer for data exchange (called a cache). When the processing unit 1512 needs to read data, it first looks for the required data in the cache. If the data is found, it is executed directly; otherwise, it looks for the data in memory. Since the cache operates much faster than memory, its purpose is to help the processing unit 1512 run faster.
[0173] The memory 1520 provides runtime space for processes in the computing device 1500. For example, the memory 1520 stores the computer program (specifically, the program code) used to generate the process. After the computer program is run by the processor to generate a process, the processor allocates corresponding storage space for the process in the memory 1520. Furthermore, the aforementioned storage space further includes text segments, initialized data segments, bit initialized data segments, stack segments, heap segments, etc. The memory 1520 stores data generated during the process's execution, such as intermediate data or process data, in the aforementioned process-specific storage space.
[0174] Optionally, the memory, also known as RAM, is used to temporarily store the data processed by the processor 1510, as well as data exchanged with external storage devices such as hard disks. As long as the computer is running, the processor 1510 will load the data that needs to be processed into RAM for processing, and after the processing is completed, the processing unit 1512 will send the result out.
[0175] By way of example and not limitation, memory 1520 is volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory is read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory is random access memory (RAM) used as an external cache. By way of example, but 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 linked dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM). It should be noted that the memory 1520 of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0176] The structure of the computing device 1500 listed above is merely illustrative and is not limited thereto. The computing device 1500 in this application includes various hardware components in existing computer systems. For example, the computing device 1500 also includes other memories besides memory 1520, such as disk storage. Those skilled in the art should understand that the computing device 1500 may also include other devices necessary for normal operation. Furthermore, depending on specific needs, those skilled in the art should understand that the computing device 1500 may also include hardware devices for implementing other additional functions. In addition, those skilled in the art should understand that the computing device 1500 may only include the devices necessary for implementing the embodiments of this application, and not necessarily all the devices shown in FIG. 6.
[0177] This application also provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device may be a server. In some embodiments, the computing device may also be a desktop computer, a laptop computer, or a smartphone, or other terminal device.
[0178] As shown in Figure 7, the computing device cluster includes at least one computing device 1500. The memory 1520 of one or more computing devices 1500 in the computing device cluster may store the same instructions for performing the above-described methods.
[0179] In some possible implementations, the memory 1520 of one or more computing devices 1500 in the computing device cluster may also each store a portion of the instructions for executing the above-described methods. In other words, a combination of one or more computing devices 1500 can jointly execute the instructions of the above-described methods.
[0180] It should be noted that the memory 1520 in different computing devices 1500 within the computing device cluster can store different instructions, each used to execute a portion of the functions of the aforementioned device. That is, the instructions stored in the memory 1520 of different computing devices 1500 can implement the functions of one or more modules within the aforementioned device.
[0181] In some possible implementations, one or more computing devices in a computing device cluster can be connected via a network. This network can be a wide area network (WAN) or a local area network (LAN), etc. Figure 8 illustrates one possible implementation. As shown in Figure 8, two computing devices, 1500A and 1500B, are connected via a network. Specifically, they are connected to the network through communication interfaces in each computing device.
[0182] It should be understood that the functions of computing device 1500A shown in Figure 8 can also be performed by multiple computing devices 1500. Similarly, the functions of computing device 1500B can also be performed by multiple computing devices 1500.
[0183] In this embodiment, a computer program product containing instructions is also provided. The computer program product may be a software or program product containing instructions capable of running on a computing device or stored on any usable medium. When run on a computing device, it causes the computing device to perform the methods provided above, or causes the computing device to perform the functions of the apparatus provided above.
[0184] In this embodiment, a computer-readable storage medium is also provided. This computer-readable storage medium can be any available medium that a computing device can store, or a data storage device such as a data center containing one or more available media. The available medium can 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 drive). The computer-readable storage medium includes instructions that, when executed on a computing device, cause the computing device to perform the method described above.
[0185] It should be understood that in the various embodiments of this application, the order of the above-mentioned processes does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.
[0186] Those skilled in the art will recognize that the units and algorithm steps of the various examples 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 implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0187] Those skilled in the art will understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.
[0188] In the several embodiments provided in this application, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.
[0189] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0190] In addition, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit.
[0191] If the aforementioned functions are implemented as 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 this application, in essence, or the part that contributes to the prior art, or a portion of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0192] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A method of data processing, characterized by, The method is applied to a storage system, the storage system comprising a storage pool and an offload card interposed on a computing node, the storage pool and the computing node being disposed in at least one data center providing cloud services, the computing node running a virtual instance implementing a tenant service of a user, the virtual instance being deployed with a storage client, the offload card comprising a network processing unit (NPU), the method comprising: The NPU obtains a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the computing node, the target IO request is an IO request issued by the storage client, and the first address is an address at which the target IO request is stored in the computing node; The NPU obtains the target IO request from the computing node according to the first address; The NPU determines a target storage node from the plurality of storage nodes according to the routing information corresponding to the target IO request; The NPU sends the target IO request to the target storage node.
2. The method of claim 1, wherein, The first queue comprises a first element, and the first element comprises the first address and the routing information corresponding to the target IO request, The NPU obtains a first address and routing information corresponding to a target IO request from a first queue, comprising: The NPU obtains the first element from the first queue; The NPU obtains the first address and the routing information corresponding to the target IO request from the first element.
3. The method according to claim 1 or 2, characterized in that, The method further comprises: The NPU writes a second element into a second queue, and the second element comprises the first address and a completion status of the target IO request.
4. The method of claim 3, wherein, The method further comprises: The computing node obtains the second element from the second queue; In a case where the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node recycles memory resources occupied by the target IO request.
5. The method according to any one of claims 1 to 4, characterized in that, The offload card further comprises a service processing unit (SPU), and before the NPU obtains a first address and routing information corresponding to a target IO request from a first queue, the method further comprises: The SPU sends a base address of the first queue to the NPU; The NPU obtains the first queue from the computing node according to the base address of the first queue.
6. The method according to any one of claims 1 to 5, characterized in that, The method further comprises: The NPU receives an IO response message for the target IO request sent by the target storage node; The NPU obtains a third element from a third queue, wherein the third element comprises a second address, and the second address is used to store the IO response message; The NPU stores the IO response message in the computing node according to the second address.
7. The method of claim 6, wherein, The method further comprises: The NPU writes a fourth element into the second queue, and the fourth element comprises the second address and a processing status of the IO response message.
8. The method of claim 7, wherein, The method further comprises: In a case where the processing status of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node recycles memory resources occupied by the IO response message.
9. A method of data processing, characterized by, The method is applied to a storage system, the storage system comprising a computing node, an offload card carrying node, a management node and a storage pool, wherein the computing node, the offload card carrying node, the management node and the storage pool are arranged in at least one data center providing cloud services, the computing node runs a virtual instance implemented by a user to implement tenant services, the virtual instance is deployed with a storage client, the offload card carrying node is inserted with a plurality of offload cards, the management node comprises a service processing unit (SPU), and the storage pool comprises a plurality of storage nodes, the method comprising: The SPU selects a first offload card from the plurality of offload cards, the first offload card comprising a first network processing unit (NPU); The first NPU obtains a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the computing node, the target IO request is an IO request issued by the storage client, and the first address is an address of the computing node storing the target IO request; The first NPU obtains the target IO request from the computing node according to the first address; The first NPU determines a target storage node from the plurality of storage nodes according to the routing information corresponding to the target IO request; The first NPU sends the target IO request to the target storage node.
10. The method of claim 9, wherein, The first queue comprises a first element, the first element comprising the first address and the routing information corresponding to the target IO request, The first NPU obtains a first address and routing information corresponding to a target IO request from a first queue, comprising: The first NPU obtains the first element from the first queue; The first NPU obtains the first address and the routing information corresponding to the target IO request from the first element.
11. The method according to claim 9 or 10, characterized in that, The method further comprises: The first NPU writes a second element into a second queue, the second element comprising the first address and a completion status of the target IO request.
12. The method of claim 11, wherein, The method further comprises: The computing node obtains the second element from the second queue; In a case where the completion status of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node recycles memory resources occupied by the target IO request.
13. The method according to any one of claims 9 to 12, characterized in that, The plurality of offload cards further comprise a second offload card, the second offload card comprising a second NPU, Before the first NPU obtains a first address and routing information corresponding to a target IO request from a first queue, the method further comprises: The SPU sends a base address of the first queue to the first NPU and the second NPU; The first NPU obtains the first queue from the computing node according to the base address of the first queue.
14. The method of claim 13, wherein, In a case where an exception occurs in the first NPU, the method further includes: The second NPU obtains the first queue from the computing node according to a base address of the first queue; The second NPU obtains the target IO request from the computing node according to the first address in the first queue; The second NPU determines a target storage node in the plurality of storage nodes according to routing information corresponding to the target IO request in the first queue; The second NPU sends the target IO request to the target storage node.
15. The method according to any one of claims 9 to 14, characterized in that, The method further includes: The first NPU receives an IO response message for the target IO request sent by the target storage node; The first NPU obtains a third element from a third queue, wherein the third element includes a second address used for storing the IO response message; The first NPU stores the IO response message in the computing node according to the second address.
16. The method of claim 15, wherein, The method further includes: The first NPU writes a fourth element including the second address and a processing state of the IO response message into the second queue.
17. The method of claim 16, wherein, The method further includes: In a case where the processing state of the IO response message indicates that the IO response message has been successfully processed by the computing node, the computing node recycles memory resources occupied by the IO response message.
18. A storage system, comprising a storage pool and an offload card interposed on a computing node, the storage pool and the computing node being arranged in at least one data center providing cloud services, the computing node running a virtual instance implemented by a user to implement tenant services, the virtual instance being deployed with a storage client, and the offload card comprising a network processing unit (NPU), wherein The NPU is configured to obtain a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the computing node, the target IO request is an IO request issued by the storage client, and the first address is an address at which the target IO request is stored in the computing node. The NPU is further configured to obtain the target IO request from the computing node according to the first address. The NPU is further configured to determine a target storage node in the plurality of storage nodes according to the routing information corresponding to the target IO request. The NPU is further configured to send the target IO request to the target storage node.
19. The storage system of claim 18, wherein The computing node is configured to obtain a second element from a second queue, the second element being written into the second queue by the NPU, and the second element including the first address and a completion state of the target IO request. In a case where the completion state of the target IO request in the second element indicates that the target IO request has been successfully sent to the target storage node, the computing node is further configured to recycle memory resources occupied by the target IO request.
20. The storage system of claim 18 or 19, wherein the NPU is further configured to receive an IO response message for the target IO request sent by the target storage node; the NPU is further configured to obtain a third element from a third queue, wherein the third element comprises a second address, and the second address is used to store the IO response message; the NPU is further configured to store the IO response message to the compute node according to the second address.
21. The storage system of claim 20, wherein the compute node is further configured to obtain a fourth element from the second queue, the fourth element is written to the second queue by the NPU, and the fourth element comprises the second address and a processing status of the IO response message; in a case that the processing status of the IO response message indicates that the IO response message has been successfully processed by the compute node, the compute node is further configured to reclaim a memory resource occupied by the IO response message. The compute node, the offload card hosting node, the management node, and the storage pool are arranged in at least one data center providing cloud services, the compute node runs a virtual instance implemented by a user to implement tenant services, the virtual instance is deployed with a storage client, the offload card hosting node is inserted with a plurality of offload cards, the management node comprises a service processing unit (SPU), and the storage pool comprises a plurality of storage nodes, wherein the SPU is configured to select a first offload card from the plurality of offload cards, and the first offload card comprises a first network processing unit (NPU); 22. A storage system comprising compute nodes, offload card bearing nodes, management nodes, and a storage pool, wherein, the first NPU is configured to obtain a first address and routing information corresponding to a target IO request from a first queue, wherein the first queue is stored on the compute node, the target IO request is an IO request issued by the storage client, and the first address is an address of the compute node storing the target IO request; the first NPU is further configured to obtain the target IO request from the compute node according to the first address; the first NPU is further configured to determine a target storage node from the plurality of storage nodes according to the routing information corresponding to the target IO request; the first NPU is further configured to send the target IO request to the target storage node. The plurality of offload cards further comprises a second offload card, and the second offload card comprises a second NPU, wherein in a case that the first NPU is abnormal, the second NPU is configured to obtain the first queue from the compute node; 23. The storage system of claim 22, wherein, the second NPU is further configured to obtain the target IO request from the compute node according to the first address in the first queue; the second NPU is further configured to determine a target storage node from the plurality of storage nodes according to the routing information corresponding to the target IO request in the first queue; the second NPU is further configured to send the target IO request to the target storage node.
24. The storage system of claim 22 or 23, wherein The SPU is further configured to send a base address of the first queue to the first NPU and the second NPU, and the base address of the first queue is used by the first NPU and the second NPU to obtain the first queue.
25. A cluster of computing devices, characterized in that, comprise 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 8 and / or the method of any one of claims 9 to 17.
26. A computer program product comprising instructions, wherein: The instructions, when executed by the cluster of computing devices, cause the cluster of computing devices to perform the method of any one of claims 1 to 8 and / or the method of any one of claims 9 to 17.
27. A computer-readable storage medium, characterized in that, The computer program instructions, when executed by the cluster of computing devices, cause the cluster of computing devices to perform the method of any one of claims 1 to 8 and / or the method of any one of claims 9 to 17.
Citation Information
Patent Citations
Virtual machine data read-write method and device, equipment and medium
CN113110916A
Data sending method, network card and computing device
CN115904210A
Data processing method and device
CN117519957A
Data access device, method and system, data processing unit and network card
CN117667761A
Method of inputting and outputting data, electronic device and computer program product
US20230026565A1