Storage system resource management method and apparatus, device and nonvolatile readable storage medium

By creating independent scheduling domains and resource pools in a dual-channel CPU architecture and optimizing IO resource configuration, the problem that storage system resource management methods are difficult to leverage the advantages of multi-processors, improving IO processing capabilities and reducing the overhead of cross-border access memory.

WO2025139139A1PCT designated stage expired Publication Date: 2025-07-03INSPUR SUZHOU INTELLIGENT TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/121993
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-12-28
Filing Date
2024-09-27
Publication Date
2025-07-03

AI Technical Summary

Technical Problem

Under the dual-channel CPU architecture, the storage system resource management method is difficult to fully utilize the advantages of multi-processors, resulting in insufficient IO processing capabilities and large overhead of cross-border access memory.

Method used

Create a separate scheduling domain for each CPU and memory resource of the storage system, and establish a global IO resource pool and a local IO resource pool in each scheduling domain, set up a resource link list, and optimize the IO resource configuration through system initialization and resource application mechanisms.

Benefits of technology

The IO processing path is increased, the IO processing capability is improved, the overhead of cross-border access memory is reduced, and the IO resources are in the optimal configuration.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024121993_03072025_PF_FP_ABST
    Figure CN2024121993_03072025_PF_FP_ABST
Patent Text Reader

Abstract

The present application relates to the field of computers, and provides a storage system resource management method and apparatus, a device and a nonvolatile readable storage medium. The method comprises: for each CPU and memory resource of a storage system, creating an individual scheduling domain; separately establishing in each scheduling domain a global IO resource pool and a plurality of local IO resource pools, and setting resource linked lists; in response to system initialization, allocating IO resources in the global IO resource pool to respective local IO resource pools, and recording same in the resource linked lists; in response to the need to increase IO resources of a local IO resource pool, the local IO resource pool applying to the global IO resource pool for IO resources; and, in response to the success in the local IO resource pool applying to the global IO resource pool for the IO resources, allocating the IO resources to the local IO resource pool, and recording same. Using the solution of the present application can increase IO processing paths, reduce cross-path access to resources, decrease overheads caused by cross-socket access to memories, and ensure optimal IO resource configurations.
Need to check novelty before this filing date? Find Prior Art

Description

Storage system resource management method, device, equipment and non-volatile readable storage medium

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to the Chinese patent application filed with the China Patent Office on December 28, 2023, with application number 202311841280.4, and application name “A method, device, equipment and medium for storage system resource management”, all contents of which are incorporated by reference into this application. Technical Field

[0003] Embodiments of the present application relate to the field of computers, and in particular, to a method, apparatus, device, and non-volatile readable storage medium for managing storage system resources. Background Art

[0004] In the era of massive storage, big data, and AI (Artificial Intelligence), the demand for storage services in various industries continues to grow. To meet business growth and performance improvements, the software and hardware architecture of storage systems are currently undergoing continuous upgrades and optimizations. The hardware architecture has been upgraded from a single-core CPU (Central Processing Unit) architecture to a dual-core or even multi-core architecture, and the software services have also upgraded various functions. However, the software infrastructure also needs to be upgraded and optimized for the hardware platform. Otherwise, it will be difficult to fully utilize the advantages brought by the hardware upgrade. For example, in a dual-core architecture, if the storage system resource management method still uses the technology of a single-core architecture, it will be difficult to fully utilize the advantages of multiple processors.

[0005] Summary of the Invention

[0006] In view of this, the purpose of the embodiments of the present application is to propose a method, device, equipment and non-volatile readable storage medium for storage system resource management. By using the technical solution of the present application, the IO processing path can be increased, the IO processing capability can be improved, the cross-path access of resources can be reduced, the overhead caused by cross-socket access to memory can be reduced, and the IO resources can be ensured to be in an optimal configuration.

[0007] Based on the above objectives, a first aspect of an embodiment of the present application provides a method for managing storage system resources, comprising the following steps:

[0008] Create a separate scheduling domain for each CPU and memory resource of the storage system;

[0009] In each scheduling domain, a global IO (Input / Output) resource pool and several local IO resource pools are established, and resource linked lists are set in the global IO resource pool and each local IO resource pool.

[0010] In response to system initialization, the IO resources in the global IO resource pool are allocated to the corresponding local IO resource pools, and the allocation status is recorded in the respective resource linked lists;

[0011] In response to a local IO resource pool needing to increase IO resources, the local IO resource pool applies for IO resources from the global IO resource pool;

[0012] In response to the local IO resource pool successfully applying for IO resources from the global IO resource pool, the global IO resource pool allocates the corresponding IO resources to the local IO resource pool and records the allocation status in the resource linked lists of the global IO resource pool and the local IO resource pool.

[0013] According to one embodiment of the present application, the steps of establishing a global IO resource pool and a plurality of local IO resource pools in each scheduling domain, and setting a resource linked list in the global IO resource pool and each local IO resource pool include:

[0014] A global IO resource pool is created in each scheduling domain. The global IO resource pool is located in the physical memory directly connected to the CPU in the architecture to which the scheduling domain belongs.

[0015] Create several local IO resource pools in each scheduling domain and connect each local IO resource pool to the corresponding global IO resource pool;

[0016] Resource linked lists are set in the global IO resource pool and each local IO resource pool to record IO resource information.

[0017] According to one embodiment of the present application, in response to system initialization, the steps of allocating IO resources in the global IO resource pool to corresponding local IO resource pools and recording the allocation status in respective resource linked lists include:

[0018] In response to system initialization, a corresponding amount of IO resources is requested from the global IO resource pool according to the static quota;

[0019] Allocate the requested IO resources to the corresponding local IO resource pool;

[0020] The information of the allocated IO resources is recorded in the resource linked lists in the global IO resource pool and the local IO resource pool respectively.

[0021] According to one embodiment of the present application, it further includes:

[0022] In response to the local IO resource pool failing to apply for IO resources from the global IO resource pool, the global IO resource pool applies for IO resources from the global IO resource pools of other scheduling domains and performs IO resource scheduling, and records the scheduling status in the respective resource linked lists.

[0023] According to one embodiment of the present application, in response to a local IO resource pool failing to apply for IO resources from a global IO resource pool, the global IO resource pool applies for IO resources from a global IO resource pool of another scheduling domain and performs IO resource scheduling, and the steps of recording the scheduling status in respective resource linked tables include:

[0024] In response to the local IO resource pool failing to apply for IO resources from the global IO resource pool, the global IO resource pool applies for IO resources from the global IO resource pool of another scheduling domain;

[0025] The global IO resource pools of other scheduling domains transfer the corresponding IO resources to the global IO resource pool that issued the request, and record the scheduling status in the resource linked lists of the two global IO resource pools respectively;

[0026] The global IO resource pool that issues the application will allocate the IO resources to the local IO resource pool that issues the application, and record the allocation status in the resource linked lists in the global IO resource pool and the local IO resource pool.

[0027] According to one embodiment of the present application, it further includes:

[0028] In response to the IO pressure of the scheduling domain being lower than a preset value for a first preset time, releasing IO resources in each local IO resource pool to the global IO resource pool;

[0029] The release status is recorded in the resource linked lists in the local IO resource pool and the global IO resource pool.

[0030] According to an embodiment of the present application, it further includes:

[0031] In response to the IO resources released by the local IO resource pool being IO resources of other scheduling domains, the global IO resource pool releases the corresponding IO resources to the global IO resource pool of the other scheduling domains;

[0032] The release status is recorded in the resource linked list in the global IO resource pool and the global IO resource pool of other scheduling domains.

[0033] According to one embodiment of the present application, it further includes:

[0034] Count the number of unallocated IO resources in the resource linked list that the global IO resource pool has requested from the global IO resource pools of other scheduling domains;

[0035] Compare the counted number with the set threshold;

[0036] In response to the counted number exceeding a set threshold, releasing the unallocated IO resources to a global IO resource pool of another scheduling domain within a second preset time;

[0037] The release status is recorded in the resource linked lists of the global IO resource pool and the global IO resource pools of other scheduling domains.

[0038] According to one embodiment of the present application, it further includes:

[0039] Count the number of allocated IO resources in the resource linked list from the global IO resource pool that has applied to the global IO resource pools of other scheduling domains;

[0040] In response to the counted number being lower than a preset value for a third preset time, releasing the unallocated IO resources to a global IO resource pool of another scheduling domain within a fourth preset time;

[0041] The release status is recorded in the resource linked lists of the global IO resource pool and the global IO resource pools of other scheduling domains.

[0042] According to one embodiment of the present application, it further includes:

[0043] In response to the IO pressure of the local IO resource pool being lower than the pressure threshold for a fifth preset time, reducing the static quota of the local IO resource pool;

[0044] The local IO resource pool releases the IO resources corresponding to the reduced static quota to the global IO resource pool, and records the release status in the resource linked lists of the local IO resource pool and the global IO resource pool.

[0045] According to one embodiment of the present application, the resource linked list in each IO resource pool includes a linked list of idle IO resources in the resource pool, a linked list of allocated IO resources in the resource pool, a linked list of idle IO resources in the IO resources borrowed from a remote end, and a linked list of allocated IO resources in the IO resources borrowed from a remote end.

[0046] According to one embodiment of the present application, it further includes:

[0047] Statistics on the current IO pressure of each scheduling domain;

[0048] In response to receiving a new IO task, the IO task is sent to the scheduling domain with the lowest current IO pressure for processing.

[0049] According to a second aspect of the embodiments of the present application, there is further provided a device for managing storage system resources, the device comprising:

[0050] A creation module is configured to create a separate scheduling domain for each CPU and memory resource of the storage system;

[0051] A setting module, the setting module is configured to establish a global IO resource pool and a plurality of local IO resource pools in each scheduling domain, and set a resource linked list in the global IO resource pool and each local IO resource pool;

[0052] The allocation module is configured to allocate IO resources in the global IO resource pool to corresponding local IO resource pools in response to system initialization, and record the allocation status in respective resource linked lists;

[0053] The application module is configured to, in response to a need for an additional IO resource in a local IO resource pool, cause the local IO resource pool to apply for IO resources from the global IO resource pool;

[0054] The scheduling module, in response to the local IO resource pool successfully applying for IO resources from the global IO resource pool, allocates the corresponding IO resources to the local IO resource pool and records the allocation status in the resource linked lists of the global IO resource pool and the local IO resource pool.

[0055] According to a third aspect of the embodiments of the present application, a computer device is provided, comprising:

[0056] at least one processor; and

[0057] The memory stores computer instructions that can be run on the processor, and when the instructions are executed by the processor, the steps of any of the above methods are implemented.

[0058] According to a fourth aspect of the embodiments of the present application, a computer non-volatile readable storage medium is provided, which stores a computer program. When the computer program is executed by a processor, the steps of any one of the above methods are implemented.

[0059] The present application has the following beneficial technical effects: the storage system resource management method provided by the embodiment of the present application creates a separate scheduling domain for each CPU and memory resource of the storage system;

[0060] A global IO resource pool and several local IO resource pools are established in each scheduling domain, and resource linked lists are set in the global IO resource pool and each local IO resource pool respectively; in response to system initialization, IO resources in the global IO resource pool are allocated to the corresponding local IO resource pools, and the allocation status is recorded in the respective resource linked lists; in response to a local IO resource pool needing to increase IO resources, the local IO resource pool applies for IO resources from the global IO resource pool; in response to a local IO resource pool successfully applying for IO resources from the global IO resource pool, the global IO resource pool allocates the corresponding IO resources to the local IO resource pool, and records the allocation status in the resource linked lists of the global IO resource pool and the local IO resource pool. This technical solution can increase IO processing paths, improve IO processing capabilities, reduce cross-path access of resources, reduce the overhead caused by cross-socket access to memory, and ensure that IO resources are in an optimal configuration. BRIEF DESCRIPTION OF THE DRAWINGS

[0061] In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the following briefly introduces the drawings required for use in the embodiments or the description of the prior art. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other embodiments can be obtained based on these drawings without paying any creative work.

[0062] FIG1 is a schematic flow chart of a method for managing storage system resources according to an embodiment of the present application;

[0063] FIG2 is a schematic diagram of a dual-processor architecture according to one embodiment of the present application;

[0064] FIG3 is a schematic diagram of a scheduling domain in a dual-processor architecture according to an embodiment of the present application;

[0065] FIG4 is a schematic diagram of a device for managing storage system resources according to an embodiment of the present application;

[0066] FIG5 is a schematic diagram of a computer device according to an embodiment of the present application;

[0067] FIG6 is a schematic diagram of a computer non-volatile readable storage medium according to an embodiment of the present application. DETAILED DESCRIPTION

[0068] In order to make the objectives, technical solutions and advantages of the present application more clear, the embodiments of the present application are described in detail below in combination with optional embodiments and with reference to the accompanying drawings.

[0069] The solution of the present application can be used in a dual-core processor architecture or a multi-core processor architecture. This application only uses a dual-core processor architecture as an example for description. The dual-core processor architecture is shown in Figure 2. Each socket has a multi-core CPU (also called a processor or socket). Each socket has its own local memory module (represented here by a DIMM (Dual-In-line Memory Module)) directly connected to the CPU of that socket. The two sockets are connected via a high-speed interconnect channel between the CPUs (such as Intel's UPI (Ultra Path Interconnect) and AMD's (Advanced Micro Devices, Inc.) xGMI (Socket / Inter-Chip Global Memory Interconnect). The dual-path combination improves the computing power of the platform, but the dual-path platform also has a distinct characteristic: the CPU's efficiency in accessing directly connected memory on the local path is significantly higher than accessing remote memory (memory on the other path), because accessing remote memory requires accessing the high-speed interconnection channel between the CPUs and the remote CPU, and the cache synchronization efficiency between the dual-path CPUs is lower than the cache synchronization efficiency within the CPU. In response to this technical feature of the dual-path architecture, this application proposes a storage system resource management method based on a dual-path architecture, aiming to enable the storage system to manage resources in a dual-path architecture in a way that can both leverage the computing power improvement brought by multiple CPUs and reduce the impact of cross-path memory access overhead.

[0070] IO resources in a storage system are essentially memory objects. Storage systems are highly concurrent systems, and access and processing of these memory objects is very frequent. Therefore, cross-path access to these IO resources must be avoided as much as possible. This is a problem that resource management in a dual-path architecture needs to address. The storage system has its own scheduling module at the application layer, which is configured to schedule IO tasks for business modules at each layer. First, the scheduling domain and resource pool are divided according to the dual-path architecture. Each path corresponds to a scheduling domain and its local IO resources. The scheduling domain is divided based on sockets, and IO resources are divided according to their physical memory location. Resources are allocated to the path to which the socket is directly connected. Therefore, each path has independent task scheduling and resource management, that is, a relatively independent IO path. This not only increases IO processing paths and improves IO processing capabilities, but also reduces cross-path resource access, overall reducing the overhead caused by cross-socket memory access. To adapt to scenarios with uneven pressure on the two paths, this application also proposes a strategy and method for adaptively adjusting IO resources when pressure on the two paths is unbalanced, to try to meet the different pressure requirements on both sides and ensure that IO resources are in an optimal configuration.

[0071] As an optional example, IO resources may include, but are not limited to, memory resources and data objects; data objects may include, but are not limited to, data structures in a specific format; as an optional example, data objects corresponding to data types may be created, but are not limited to; data conforming to a target data format may be written into the created data objects, but are not limited to; wherein the target data format includes the data format required to allow data to be written into the created data objects.

[0072] Based on the above objectives, the first aspect of the embodiments of the present application provides an embodiment of a method for managing storage system resources. FIG1 shows a schematic flow chart of the method.

[0073] As shown in FIG1 , the method may include the following steps:

[0074] S1 creates a separate scheduling domain for each CPU and memory resource in the storage system. As shown in Figure 3, the storage system has its own scheduling module at the application layer, which is configured to schedule I / O tasks for business modules at each layer. The scheduling domain is first divided into a dual-channel architecture, with one schedule domain per channel. Each schedule domain is relatively independent and has a complete I / O path within it. This means that an incoming I / O task can be processed in either schedule domain-0 or schedule domain-1, and tasks during the processing rarely cross schedule domains. The task processing thread in each schedule domain is bound to the CPU core to which the schedule domain belongs. When I / O is sent to each business module for processing, the next task to be processed is placed in the same schedule domain based on the schedule domain where the current task is being processed. This way, each channel has an independent I / O processing path.

[0075] S2 establishes a global IO resource pool and several local IO resource pools in each scheduling domain, and sets up resource linked lists in each of the global and local IO resource pools. IO paths are divided by schedule domain, and IO resources are also divided by schedule domain. A global IO resource pool is then established in the system, initially containing idle memory resources. Based on the physical location of the memory, it is divided into two global IO resource pools, each belonging to a different schedule domain. As shown in Figure 3, there are two G_IO_Res (global IO resource) pools, each belonging to a different schedule domain. The memory in each G_IO_Res pool is located in the physical memory directly connected to the CPU to which its domain belongs, and is allocated and used within the IO processing path of that domain. Each business module's IO resources are stored in its own L_IO_Res (local IO resource) pool. Each business module has two L_IO_Res pools, and both allocation and use occur within the IO processing path of its own domain. The structures of G_IO_Res and L_IO_Res are basically the same, with four main members: free_list, allocated_list, remote_free_list, and remote_allocated_list. The free_list is a list of free resources in the pool, the allocated_list is a list of allocated resources in the pool, the remote_free_list is a list of free resources borrowed from the remote end, and the remote_allocated_list is a list of allocated resources borrowed from the remote end.

[0076] In response to system initialization, S3 allocates the IO resources in the global IO resource pool to the corresponding local IO resource pool and records the allocation status in the respective resource linked lists. During the system initialization phase, each layer of business module applies for a corresponding number of IO resources from the G_IO_Res pool according to its own static quota and puts them into the L_IO_Res pool of the business module. For example, a certain number of IO resources are transferred from the free_list of G_IO_Res to the free_list of the L_IO_Res pool of the business module, and these resources are recorded in the allocated_list of G_IO_Res. Because each layer of business module has two L_IO_Res pools, belonging to different domains, when the L_IO_Res pool applies for IO resources from the G_IO_Res pool, it always selects the G_IO_Res pool in the same domain as the L_IO_Res pool.

[0077] In response to the need for additional IO resources in the local IO resource pool, S4 requests IO resources from the global IO resource pool. As IO pressure increases, each layer of business modules may need to dynamically expand its L_IO_Res pool to meet higher performance. The process of expanding its IO resources by the business module is also the process of requesting a corresponding number of IO resources from the G_IO_Res pool and placing them in its L_IO_Res pool. However, if there are no sufficient IO resources on the free_list of the G_IO_Res pool in the current domain, the request will fail. Therefore, you can try to borrow IO resources from another domain (that is, another scheduling domain).

[0078] In response to the local IO resource pool successfully requesting IO resources from the global IO resource pool, S5 allocates the corresponding IO resources to the local IO resource pool and records the allocation in the resource linked lists of the global IO resource pool and the local IO resource pool. A certain amount of the requested IO resources is transferred from the free_list of G_IO_Res to the free_list of the business module L_IO_Res pool and recorded in the allocated_list of G_IO_Res.

[0079] By using the technical solution of the present application, the IO processing path can be increased, the IO processing capability can be improved, the cross-path access of resources can be reduced, the overhead caused by cross-socket access to memory can be reduced, and the IO resources can be ensured to be in an optimal configuration.

[0080] In an optional embodiment of the present application, the steps of establishing a global IO resource pool and a plurality of local IO resource pools in each scheduling domain, and setting a resource linked list in the global IO resource pool and each local IO resource pool include:

[0081] A global IO resource pool is created in each scheduling domain. The global IO resource pool is located in the physical memory directly connected to the CPU in the architecture to which the scheduling domain belongs.

[0082] Create several local IO resource pools in each scheduling domain and connect each local IO resource pool to the corresponding global IO resource pool;

[0083] Resource linked lists are set up in the global IO resource pool and each local IO resource pool to record IO resource information. A global IO resource pool is established in the system, initially containing idle memory resources. Based on the physical location of the memory, it is divided into two global IO resource pools, each belonging to a different scheduledomain. As shown in Figure 3, there are two G_IO_Res (global IO resource) pools, each belonging to a different scheduledomain. The memory in each G_IO_Res pool is located in the physical memory directly connected to the CPU to which its domain belongs, and is allocated and used within the IO processing path of each domain. Each business module layer stores its IO resources in its own L_IO_Res (local IO resource) pool. Each business module layer has two L_IO_Res pools, and allocation and use occur within the IO processing path of its domain. The G_IO_Res and L_IO_Res structures are essentially identical, consisting of four main members: free_list, allocated_list, remote_free_list, and remote_allocated_list. free_list is a linked list of idle resources in the pool, allocated_list is a linked list of allocated resources in the pool, remote_free_list is a linked list of idle resources borrowed from the remote end, and remote_allocated_list is a linked list of allocated resources borrowed from the remote end.

[0084] In an optional embodiment of the present application, in response to system initialization, the steps of allocating IO resources in the global IO resource pool to corresponding local IO resource pools and recording the allocation status in respective resource linked lists include:

[0085] In response to system initialization, a corresponding amount of IO resources is requested from the global IO resource pool according to the static quota;

[0086] Allocate the requested IO resources to the corresponding local IO resource pool;

[0087] The information of allocated IO resources is recorded in the resource linked lists of the global IO resource pool and the local IO resource pool respectively. During the system initialization phase, each layer of business modules applies for a corresponding number of IO resources from the G_IO_Res pool according to their own static quotas and puts them into the L_IO_Res pool of the business module. For example, a certain number of IO resources are transferred from the free_list of G_IO_Res to the free_list of the L_IO_Res pool of the business module, and these resources are recorded in the allocated_list of G_IO_Res. Because each layer of business module has two L_IO_Res pools, belonging to different domains, when the L_IO_Res pool applies for IO resources from the G_IO_Res pool, it always selects the G_IO_Res pool in the same domain as the L_IO_Res pool.

[0088] In an optional embodiment of the present application, it further includes:

[0089] In response to the local IO resource pool failing to apply for IO resources from the global IO resource pool, the global IO resource pool applies for IO resources from the global IO resource pools of other scheduling domains and performs IO resource scheduling, and records the scheduling status in the respective resource linked lists.

[0090] In an optional embodiment of the present application, in response to a local IO resource pool failing to apply for IO resources from the global IO resource pool, the global IO resource pool applies for IO resources from the global IO resource pool of another scheduling domain and performs IO resource scheduling, and the steps of recording the scheduling status in the respective resource linked tables include:

[0091] In response to the local IO resource pool failing to apply for IO resources from the global IO resource pool, the global IO resource pool applies for IO resources from the global IO resource pool of another scheduling domain;

[0092] The global IO resource pools of other scheduling domains transfer the corresponding IO resources to the global IO resource pool that issued the request, and record the scheduling status in the resource linked lists of the two global IO resource pools respectively;

[0093] The global IO resource pool that issued the request will obtain IO resources and allocate them to the local IO resource pool that issued the request, and record the allocation status in the resource linked lists in the global IO resource pool and the local IO resource pool. Try to obtain certain IO resources from the G_IO_Res pool in another domain to meet the resource request of this domain. For example, a certain number of IO resources will be transferred from the free_list of the G_IO_Res pool in another domain to the remote_free_list of the G_IO_Res pool in this domain, and these resources will be recorded in the allocated_list of the G_IO_Res in another domain. At this time, there are sufficient IO resources on the free_list of the G_IO_Res pool in this domain. Then a certain number of IO resources will be transferred from the remote_free_list of the G_IO_Res pool in this domain to the remote_free_list of the L_IO_Res pool in this domain of the requesting module, and these resources will be recorded in the remote_allocated_list of the G_IO_Res in this domain.

[0094] In an optional embodiment of the present application, it further includes:

[0095] In response to the IO pressure of the scheduling domain being lower than a preset value for a first preset time, releasing IO resources in each local IO resource pool to the global IO resource pool;

[0096] The release status is recorded in the resource linked lists in the local IO resource pool and the global IO resource pool. When the IO pressure of the scheduling domain decreases for a period of time and drops below a preset value, the business module will gradually release these expanded IO resources. In other words, the IO resources expanded in the L_IO_Res pool in the domain are released and returned to the free_list or remote_free_list of the G_IO_Res in the domain.

[0097] In an optional embodiment of the present application, it further includes:

[0098] In response to the IO resources released by the local IO resource pool being IO resources of other scheduling domains, the global IO resource pool releases the corresponding IO resources to the global IO resource pool of the other scheduling domains;

[0099] The release status is recorded in the resource linked list of the global IO resource pool and the global IO resource pool of other scheduling domains. If the IO resource released is on the free_list of L_IO_Res, it is transferred to the free_list of G_IO_Res; if the IO resource released is on the remote_free_list of L_IO_Res, it is transferred to the remote_free_list of G_IO_Res, and the allocated_list or remote_allocated_list of G_IO_Res is updated accordingly.

[0100] In an optional embodiment of the present application, it further includes:

[0101] Count the number of unallocated IO resources in the resource linked list that the global IO resource pool has requested from the global IO resource pools of other scheduling domains;

[0102] Compare the counted number with the set threshold;

[0103] In response to the counted number exceeding a set threshold, releasing the unallocated IO resources to a global IO resource pool of another scheduling domain within a second preset time;

[0104] The release status is recorded in the resource linked lists of the global IO resource pool and the global IO resource pools of other scheduling domains.

[0105] In an optional embodiment of the present application, it further includes:

[0106] Count the number of allocated IO resources in the resource linked list from the global IO resource pool that has applied to the global IO resource pools of other scheduling domains;

[0107] In response to the counted number being lower than a preset value for a third preset time, releasing the unallocated IO resources to a global IO resource pool of another scheduling domain within a fourth preset time;

[0108] The release status is recorded in the resource linked lists of the global IO resource pool and the global IO resource pools of other scheduling domains. If the number of IO resources on the remote_free_list of G_IO_Res exceeds a certain threshold, they will be returned to the G_IO_Res pool of another domain in a timely manner. If the remote_allocated_list of G_IO_Res remains very low for more than a certain period of time, all IO resources on the remote_free_list of G_IO_Res will be returned to the G_IO_Res pool of another domain. The process of returning to the G_IO_Res pool of another domain is to transfer the IO resources on the remote_free_list of the G_IO_Res pool in this domain back to the free_list of the G_IO_Res pool in another domain, update the allocated_list of the G_IO_Res pool in another domain, and remove these resource records from the allocated_list. If sufficient resources cannot be borrowed from another domain, this business module can only wait asynchronously for other modules to release them. When the conditions are met, it will apply to the G_IO_Res pool in this domain.

[0109] In an optional embodiment of the present application, it further includes:

[0110] In response to the IO pressure of the local IO resource pool being lower than the pressure threshold for a fifth preset time, reducing the static quota of the local IO resource pool;

[0111] The local IO resource pool releases the IO resources corresponding to the reduced static quota to the global IO resource pool and records the release status in the resource linked lists of the local IO resource pool and the global IO resource pool. If the IO path pressure on the two domains is significantly different in certain scenarios, the business modules at each layer can dynamically adjust the static quota of the L_IO_Res pool of the business modules at this layer in the two domains. For example, reducing the static quota of the L_IO_Res pool in the domain with less IO pressure will release some IO resources to the G_IO_Res pool in the domain. In this way, when the side with more IO pressure needs to borrow more memory, the side with less IO pressure has enough memory to borrow quickly.

[0112] In an optional embodiment of the present application, the resource linked list in each IO resource pool includes a linked list of idle IO resources in the resource pool, a linked list of allocated IO resources in the resource pool, a linked list of idle IO resources borrowed from a remote end, and a linked list of allocated IO resources borrowed from a remote end.

[0113] In an optional embodiment of the present application, it further includes:

[0114] Statistics on the current IO pressure of each scheduling domain;

[0115] In response to receiving a new IO task, the IO task is sent to the scheduling domain with the lowest current IO pressure for processing.

[0116] The technical solution of this application first divides the scheduling domain and resource pool according to the dual-path architecture. Each path corresponds to a scheduling domain and its local IO resources. Therefore, each path has independent task scheduling and resource management, that is, a relatively independent IO path. This not only increases the IO processing path and improves IO processing capabilities, but also reduces cross-path access to resources, and overall reduces the overhead caused by cross-socket memory access. At the same time, in order to adapt to the scenario of unbalanced dual-path pressure, this application also proposes an adaptive adjustment strategy and method for IO resources when the dual-path pressure is unbalanced, trying to meet the different pressure requirements on both sides and ensure that IO resources are in an optimal configuration.

[0117] It should be noted that those skilled in the art will understand that all or part of the processes in the above-mentioned embodiments can be implemented by instructing the relevant hardware through a computer program. The above-mentioned program can be stored in a computer-readable non-volatile readable storage medium. When the program is executed, it can include the processes of the embodiments of the above-mentioned methods. The non-volatile readable storage medium can be a magnetic disk, an optical disk, a read-only memory (ROM) or a random access memory (RAM). The embodiment of the above-mentioned computer program can achieve the same or similar effect as any of the corresponding aforementioned method embodiments.

[0118] In addition, the method disclosed in the embodiment of the present application can also be implemented as a computer program executed by a CPU, and the computer program can be stored in a non-volatile computer-readable storage medium. When the computer program is executed by the CPU, the above-mentioned functions defined in the method disclosed in the embodiment of the present application are performed.

[0119] Based on the above objectives, a second aspect of an embodiment of the present application provides a device for managing storage system resources. As shown in FIG4 , the device 200 includes:

[0120] A creation module is configured to create a separate scheduling domain for each CPU and memory resource of the storage system;

[0121] A setting module, the setting module is configured to establish a global IO resource pool and a plurality of local IO resource pools in each scheduling domain, and set a resource linked list in the global IO resource pool and each local IO resource pool;

[0122] The allocation module is configured to allocate IO resources in the global IO resource pool to corresponding local IO resource pools in response to system initialization, and record the allocation status in respective resource linked lists;

[0123] The application module is configured to, in response to a need for an additional IO resource in a local IO resource pool, cause the local IO resource pool to apply for IO resources from the global IO resource pool;

[0124] The scheduling module is configured to allocate the corresponding IO resources to the local IO resource pool in response to the local IO resource pool successfully applying for IO resources from the global IO resource pool, and record the allocation status in the resource linked lists of the global IO resource pool and the local IO resource pool.

[0125] Based on the above objectives, the third aspect of the embodiments of the present application provides a computer device. Figure 5 shows a schematic diagram of an embodiment of the computer device provided by the present application. As shown in Figure 5, the embodiment of the present application includes the following apparatus: at least one processor 21; and a memory 22, wherein the memory 22 stores computer instructions 23 executable on the processor, and when executed by the processor, the instructions implement the above method.

[0126] Based on the above objectives, a fourth aspect of the embodiments of the present application provides a non-volatile computer-readable storage medium. FIG6 is a schematic diagram of an embodiment of the non-volatile computer-readable storage medium provided by the present application. As shown in FIG6 , the non-volatile computer-readable storage medium 31 stores a computer program 32 that, when executed by a processor, performs the above method.

[0127] In addition, the method disclosed in the embodiments of the present application may also be implemented as a computer program executed by a processor, which may be stored in a non-volatile computer-readable storage medium. When the computer program is executed by the processor, the above-mentioned functions defined in the method disclosed in the embodiments of the present application are performed.

[0128] In addition, the above method steps and system units can also be implemented using a controller and a computer non-volatile readable storage medium configured to store a computer program that enables the controller to implement the above steps or unit functions.

[0129] Those skilled in the art will also appreciate that the various exemplary logic blocks, modules, circuits and algorithmic steps described in conjunction with the disclosure herein can be implemented as electronic hardware, computer software or a combination thereof. In order to clearly illustrate this interchangeability of hardware and software, a general description has been given of the functions of various schematic components, blocks, modules, circuits and steps. Whether this function is implemented as software or as hardware depends on the application and the design constraints imposed on the entire system. Those skilled in the art can implement the function in a variety of ways for every application, but this implementation decision should not be interpreted as causing a departure from the disclosed scope of the present application's embodiments.

[0130] In one or more exemplary designs, the functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or codes on or transmitted via a computer-readable non-volatile storage medium. Computer-readable non-volatile storage media include computer-readable non-volatile storage media and communication non-volatile storage media, which include any non-volatile storage media that facilitates the transfer of a computer program from one location to another. The non-volatile storage medium may be any available non-volatile storage medium that can be accessed by a general-purpose or special-purpose computer. By way of example and not limitation, the computer-readable non-volatile readable storage medium may include RAM, ROM, EEPROM (Electrically Erasable Programmable Read-Only Memory), CD-ROM (Compact Disc Read-Only Memory) or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, or any other non-volatile readable storage medium that can be configured to carry or store the desired program code in the form of instructions or data structures and can be accessed by a general-purpose or special-purpose computer or a general-purpose or special-purpose processor. In addition, any connection can be appropriately referred to as a computer-readable non-volatile readable storage medium. For example, if a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwaves are used to transmit software from a website, server, or other remote source, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwaves are all included in the definition of non-volatile readable storage medium. As used herein, disk and optical disk include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs. Disks typically reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable non-volatile storage media.

[0131] The above are exemplary embodiments disclosed in the present application, but it should be noted that various changes and modifications may be made without departing from the scope of the present application as defined in the claims. The functions, steps and / or actions of the method claims according to the disclosed embodiments described herein do not need to be performed in any particular order. In addition, although the elements disclosed in the embodiments of the present application may be described or required in individual form, they may also be understood as multiple unless expressly limited to the singular.

[0132] It should be understood that, as used herein, the singular forms "a" and "an" are intended to include the plural forms as well, unless the context clearly supports an exception. It should also be understood that, as used herein, "and / or" is intended to include any and all possible combinations of one or more of the associated listed items.

[0133] The serial numbers of the embodiments disclosed in the above embodiments of the present application are only for description and do not represent the advantages or disadvantages of the embodiments.

[0134] Those skilled in the art will understand that all or part of the steps for implementing the above embodiments may be accomplished by hardware, or may be accomplished by programs instructing related hardware, and the programs may be stored in a computer non-volatile readable storage medium, and the above-mentioned non-volatile readable storage medium may be a read-only memory, a disk, or an optical disk, etc.

[0135] Those skilled in the art should understand that the discussion of any of the above embodiments is merely illustrative and is not intended to imply that the scope of the disclosure of the embodiments of the present application (including the claims) is limited to these examples; based on the ideas of the embodiments of the present application, the technical features of the above embodiments or different embodiments can also be combined, and there are many other variations of different aspects of the embodiments of the present application as described above, which are not provided in detail for the sake of simplicity. Therefore, any omissions, modifications, equivalent substitutions, improvements, etc. made within the spirit and principles of the embodiments of the present application should be included in the scope of protection of the embodiments of the present application.

Claims

1. A method for managing storage system resources, characterized in that Including the following steps: Create separate scheduling domains for the CPU and memory resources of each path of the storage system; Establish a global IO resource pool and several local IO resource pools in each of the scheduling domains, and set resource linked lists in the global IO resource pool and each of the local IO resource pools respectively; In response to system initialization, allocate the IO resources in the global IO resource pool to the corresponding local IO resource pools, and record the allocation situation in their respective resource linked lists; In response to a local IO resource pool needing to increase IO resources, the local IO resource pool applies to the global IO resource pool for IO resources; In response to the local IO resource pool successfully applying to the global IO resource pool for IO resources, the global IO resource pool allocates the corresponding IO resources to the local IO resource pool, and records the allocation situation in the resource linked lists of the global IO resource pool and the local IO resource pool; 2. The method according to claim 1, characterized in that The step of establishing a global IO resource pool and several local IO resource pools in each of the scheduling domains, and setting resource linked lists in the global IO resource pool and each of the local IO resource pools includes: Create a global IO resource pool in each scheduling domain, and the global IO resource pool is located on the physical memory directly connected to the CPU in the architecture to which the scheduling domain belongs; Create several local IO resource pools in each scheduling domain, and connect each local IO resource pool to the corresponding global IO resource pool; Set resource linked lists in the global IO resource pool and each of the local IO resource pools respectively to record IO resource information; 3. The method according to claim 2, characterized in that, The step of, in response to system initialization, allocating the IO resources in the global IO resource pool to the corresponding local IO resource pools, and recording the allocation situation in their respective resource linked lists includes: In response to system initialization, apply for a corresponding number of IO resources from the global IO resource pool according to the static quota; Allocate the applied IO resources to the corresponding local IO resource pools; Record the information of the allocated IO resources in the resource linked lists in the global IO resource pool and the local IO resource pool respectively; 4. The method according to claim 1, characterized in that, Also include: In response to the local IO resource pool failing to apply to the global IO resource pool for IO resources, the global IO resource pool applies to the global IO resource pools of other scheduling domains for IO resources and performs IO resource scheduling, and records the scheduling situation in their respective resource linked lists; 5. The method according to claim 4, characterized in that, The step of, in response to the local IO resource pool failing to apply to the global IO resource pool for IO resources, the global IO resource pool applying to the global IO resource pools of other scheduling domains for IO resources and performing IO resource scheduling, and recording the scheduling situation in their respective resource linked lists includes: In response to the local IO resource pool failing to apply to the global IO resource pool for IO resources, the global IO resource pool applies to the global IO resource pools of other scheduling domains for IO resources; The global IO resource pool of the other scheduling domain transfers the corresponding IO resources to the global IO resource pool that issues the application, and records the scheduling situation in the resource linked lists of the two global IO resource pools respectively; The global IO resource pool that issues the application allocates the obtained IO resources to the local IO resource pool that issues the application, and records the allocation situation in the resource linked lists of the global IO resource pool and the local IO resource pool.

6. The method according to claim 1, characterized in that, It also includes: In response to the IO pressure of the scheduling domain remaining lower than the preset value for the first preset time, release the IO resources in each local IO resource pool to the global IO resource pool; Record the release situation in the resource linked lists of the local IO resource pool and the global IO resource pool.

7. The method according to claim 6, wherein It also includes: In response to the IO resources released by the local IO resource pool being the IO resources of other scheduling domains, the global IO resource pool releases the corresponding IO resources to the global IO resource pool of the other scheduling domain; Record the release situation in the resource linked lists of the global IO resource pool and the global IO resource pool of the other scheduling domain.

8. The method according to claim 1, wherein It also includes: Count the number of unallocated IO resources among the IO resources applied by the global IO resource pool to the global IO resource pool of other scheduling domains in the resource linked list; Compare the counted quantity with a set threshold; In response to the counted quantity exceeding the set threshold, release the unallocated IO resources to the global IO resource pool of the other scheduling domain within the second preset time; Record the release situation in the resource linked lists of the global IO resource pool and the global IO resource pool of the other scheduling domain.

9. The method according to claim 1, wherein It also includes: Count the number of allocated IO resources among the IO resources applied by the global IO resource pool to the global IO resource pool of other scheduling domains in the resource linked list; In response to the counted quantity remaining lower than the preset value for the third preset time, release the unallocated IO resources to the global IO resource pool of the other scheduling domain within the fourth preset time; Record the release situation in the resource linked lists of the global IO resource pool and the global IO resource pool of the other scheduling domain.

10. The method according to claim 3, wherein It also includes: In response to the IO pressure of a local IO resource pool remaining lower than the pressure threshold for the fifth preset time, reduce the static quota of the local IO resource pool; The local IO resource pool releases the IO resources corresponding to the reduced static quota to the global IO resource pool, and records the release situation in the resource linked lists of the local IO resource pool and the global IO resource pool.

11. The method according to claim 1, wherein The resource linked list in each IO resource pool includes the free IO resource linked list of the resource pool, the allocated IO resource linked list of the resource pool, the free IO resource linked list among the IO resources borrowed from the remote end, and the allocated IO resource linked list among the IO resources borrowed from the remote end.

12. The method according to claim 1, wherein It also includes: Count the current IO pressure of each scheduling domain; In response to receiving a new IO task, send the IO task to the scheduling domain with the lowest current IO pressure for processing.

13. The method according to claim 1, characterized in that, Creating a separate scheduling domain for the CPU and memory resources of each path of the storage system, including: Dividing the scheduling domain according to a dual-path structure, with one scheduling domain for each path. Among them, each scheduling domain is relatively independent, and each scheduling domain includes a complete IO path; Binding the task processing threads in each scheduling domain to the CPU cores corresponding to the path of each scheduling domain.

14. The method according to claim 3, characterized in that, Responding to system initialization, applying for a corresponding number of IO resources from the global IO resource pool according to static quotas, including: In the system initialization stage, transferring a corresponding number of IO resources from the free resource linked list of the global IO resource pool to the free resource linked list of the local IO resource pool of the service module, and recording the corresponding number of IO resources in the allocated resource linked list of the global IO resource pool.

15. The method according to claim 3, wherein Responding to system initialization, applying for a corresponding number of IO resources from the global IO resource pool according to static quotas, including: Applying for a corresponding number of IO resources from the global IO resource pool corresponding to the scheduling domain corresponding to the local IO resource pool.

16. The method according to claim 5, wherein After the global IO resource pool applies for IO resources from the global IO resource pools of other scheduling domains, the method further includes: In the case where the global IO resource pool fails to apply for IO resources from the global IO resource pools of other scheduling domains, the service module asynchronously waits for other modules to release, and after meeting the conditions, applies for IO resources from the global IO resource pool again.

17. The method according to claim 5, characterized in that Recording the scheduling situation in the resource linked lists of the two global IO resource pools respectively, including: Transferring a certain number of IO resources from the free resource linked list of the global IO resource pool in other scheduling domains to the free resource linked list of the global IO resource pool of this scheduling domain that is borrowed from the remote end, and recording the certain number of IO resources in the allocated resource linked list of the global IO resource pool in other scheduling domains.

18. A device for managing storage system resources, characterized in that, The device includes: A creation module configured to create a separate scheduling domain for the CPU and memory resources of each path of the storage system; A setting module configured to establish a global IO resource pool and a number of local IO resource pools in each of the scheduling domains, and set resource linked lists in the global IO resource pool and each of the local IO resource pools respectively; An allocation module configured to, in response to system initialization, allocate the IO resources in the global IO resource pool to the corresponding local IO resource pools, and record the allocation situation in their respective resource linked lists; An application module configured to, in response to a local IO resource pool needing to increase IO resources, the local IO resource pool applies for IO resources from the global IO resource pool; A scheduling module configured to, in response to the local IO resource pool successfully applying for IO resources from the global IO resource pool, the global IO resource pool allocates the corresponding IO resources to the local IO resource pool, and records the allocation situation in the resource linked lists of the global IO resource pool and the local IO resource pool.

19. A computer device, characterized in that, Including: At least one processor; And A memory that stores computer instructions executable on the processor, and when the instructions are executed by the processor, the steps of the method according to any one of claims 1-17 are implemented.

20. A computer non-volatile readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, the steps of the method according to any one of claims 1-17 are implemented.

Citation Information

Patent Citations

  • Memory allocation method and device

    CN110162395A

  • Resource management method and device based on NUMA architecture storage system and medium

    CN115129473A

  • Business system and memory management method and device

    CN115794368A

  • Storage system resource management method and device, equipment and medium

    CN117492967A

  • Managing resource distribution in global and local pools based on a flush threshold

    US20220382591A1