Method, apparatus, and computer program product for managing input / output

CN116010312BActive Publication Date: 2026-08-21EMC IP HLDG CO LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310122893.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2018-01-18
Publication Date
2026-08-21
Estimated Expiration
2038-01-18

AI Technical Summary

Technical Problem

存储系统的配置信息对于存储系统而言非常重要,配置信息中的数据丢失可能导致严重问题

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116010312B_ABST
    Figure CN116010312B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to methods, devices and computer program products for managing input / output (I / O). One method includes, in response to receiving a first I / O request of a first type for a storage device, determining whether there is at least one credit unit available for the I / O request of the first type. Each of the at least one credit unit indicates an I / O processing capability of the storage device reserved for the I / O request of the first type. The method further includes allocating a first credit unit to the first I / O request based on a result of the determination. The method further includes performing an I / O operation requested by the first I / O request using the first credit unit. In addition, the method further includes reclaiming the first credit unit for a subsequent I / O request in response to the I / O operation being completed. Embodiments of the present disclosure enable dynamic allocation of I / O processing capability for different types of I / O.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention patent application filed on January 18, 2018, with application number 201810049787.9 and entitled "Method, apparatus and computer program product for managing input / output". Technical Field

[0002] Embodiments of this disclosure generally relate to the field of data storage, and more specifically to a method, apparatus, and computer program product for managing input / output (I / O). Background Technology

[0003] In a storage system, different types of I / O may occur for the same storage device. For example, critical configuration information (such as the status information of each component) and user data may be stored on the same storage device. I / O for this critical configuration information and I / O for user data typically have different priorities. The configuration information of the storage system is crucial; data loss in the configuration information can lead to serious problems. Therefore, I / O for critical configuration information usually has a higher priority than I / O for user data. In other words, the performance of I / O for critical configuration information must be guaranteed; it must be completed within the required time, and its throughput must be guaranteed. Summary of the Invention

[0004] Embodiments of this disclosure provide a method, apparatus, and computer program product for managing I / O.

[0005] In a first aspect of this disclosure, a method for managing I / O is provided. The method includes: in response to receiving a first I / O request of a first type for a storage device, determining whether at least one credit unit is available for the first type of I / O request, each credit unit indicating I / O processing capacity reserved by the storage device for the first type of I / O request; allocating a first credit unit to the first I / O request based on the determination result; performing the I / O operation requested by the first I / O request on the storage device using the first credit unit; and reclaiming the first credit unit for use in subsequent I / O requests in response to completion of the I / O operation.

[0006] In a second aspect of this disclosure, an apparatus for managing I / O is provided. The apparatus includes at least one processing unit and at least one memory. The at least one memory is coupled to the at least one processing unit and stores instructions for execution by the at least one processing unit, which, when executed by the at least one processing unit, cause the apparatus to perform an action. The action includes: in response to receiving a first I / O request of a first type for a storage device, determining whether at least one credit unit is available for the first type of I / O request, each credit unit indicating I / O processing capacity reserved by the storage device for the first type of I / O request; allocating a first credit unit to the first I / O request based on the determination result; performing the I / O operation requested by the first I / O request on the storage device using the first credit unit; and reclaiming the first credit unit for use in subsequent I / O requests in response to completion of the I / O operation.

[0007] In a third aspect of this disclosure, a computer program product is provided. This computer program product is tangibly stored on a non-transitory computer-readable medium and includes machine-executable instructions. When executed, the machine-executable instructions cause a machine to perform any step of the method described in the first aspect of this disclosure.

[0008] The summary section is provided to present the chosen concepts in a simplified form, which will be further described in the detailed description below. The summary section is not intended to identify key or principal features of this disclosure, nor is it intended to limit the scope of this disclosure. Attached Figure Description

[0009] The above and other objects, features and advantages of this disclosure will become more apparent from the accompanying drawings, in which like reference numerals generally denote like parts.

[0010] Figure 1 An architectural diagram of a storage system 100 according to an embodiment of the present disclosure is shown;

[0011] Figure 2 A flowchart of an example process 200 for managing I / O according to an embodiment of the present disclosure is shown;

[0012] Figure 3 A flowchart of an example process 300 for managing I / O according to an embodiment of the present disclosure is shown;

[0013] Figure 4 A flowchart of a method 400 for managing I / O according to an embodiment of the present disclosure is shown; and

[0014] Figure 5A schematic block diagram of an example device 500 that can be used to implement embodiments of the present disclosure is shown.

[0015] In the various figures, the same or corresponding reference numerals indicate the same or corresponding parts. Detailed Implementation

[0016] Preferred embodiments of the present disclosure will now be described in more detail with reference to the accompanying drawings. While preferred embodiments of the present disclosure are shown in the drawings, it should be understood that the present disclosure may be implemented in various forms and should not be limited to the embodiments set forth herein. Rather, these embodiments are provided so that the present disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art.

[0017] The term "comprising" and its variations as used herein signify open inclusion, i.e., "including but not limited to". Unless otherwise stated, the term "or" means "and / or". The term "based on" means "at least partially based on". The terms "one example embodiment" and "one embodiment" mean "at least one example embodiment". The term "another embodiment" means "at least one additional embodiment". The terms "first", "second", etc., may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0018] As mentioned above, in a storage system, there may be I / O operations with different priorities for the same storage device. To ensure the performance of higher-priority I / O, the storage device can reserve more I / O processing capacity for higher-priority I / O and less I / O processing capacity for lower-priority I / O, thereby ensuring that higher-priority I / O can be completed within the required time and with a high throughput.

[0019] In traditional solutions, this reservation is usually fixed, meaning that the I / O processing capacity reserved for higher-priority I / O and the I / O processing capacity reserved for lower-priority I / O have a fixed ratio. In this way, when important configuration information and user data are stored on the same storage device, even if I / O for configuration information is not busy, I / O for user data cannot obtain the I / O processing capacity reserved for configuration information, thus consistently operating at a low performance level.

[0020] The above problems may be more severe when the storage device is a Mapped Independent Redundant Disk Array (RAID) built on a foundation of many disks.

[0021] For example, when the storage device uses mapped RAID, configuration information and a portion of user data can be stored together on one or more disk segments, and these disk segments can be distributed across many disks. I / O to this portion of user data stored with the configuration information may consistently operate at a lower performance level for the reasons mentioned above, hence the term "slow I / O." On the other hand, other user data besides the aforementioned user data can be stored on other disk segments, which are also distributed across these disks. I / O to this portion of user data not stored with the configuration information is allocated more I / O processing power, resulting in a higher performance level, hence the term "fast I / O." It can be seen that when the storage device uses mapped RAID, since slow I / O and fast I / O may actually target the same physical disk, fast I / O may be blocked by slow I / O. In other words, slow I / O can cause a performance degradation in fast I / O, thereby reducing the overall performance of the storage system.

[0022] The exemplary embodiments of this disclosure present a scheme for managing I / O. This scheme enables dynamic allocation of I / O processing capacity for different types of I / O. By allocating the I / O processing capacity reserved for higher-priority I / O to lower-priority I / O when higher-priority I / O is not busy, this scheme can improve the processing performance of I / O for user data stored on the same storage device as configuration information, thereby improving the overall performance of the storage system.

[0023] Figure 1 An architectural diagram of a storage system 100 according to an embodiment of the present disclosure is shown. (As follows) Figure 1 As shown, storage system 100 generally includes a console 110, a host 120, and a storage processor (SP) 130. SP 130 may include a control module 140 and a data module 150. Data module 150 may include a persistent storage manager (PSM) 101, one or more components 102 (also referred to herein as "client components") operating PSM 101, and storage devices 103. It should be understood that the structure and function of storage system 100 are described for illustrative purposes only and do not imply any limitation on the scope of this disclosure. Embodiments of this disclosure can also be applied to storage systems with different structures and / or functions.

[0024] In some embodiments, PSM 101 can be a driver that allows one or more client components 102 to persistently store corresponding configuration information in a designated storage area of ​​storage device 103. In some embodiments, PSM 101 can provide a database interface (e.g., a kernel database manager (KDBM)) to implement such storage.

[0025] In some embodiments, storage device 103 may be constructed based on any currently known or future-developed non-volatile storage medium, examples of which include, but are not limited to, one or more disks, solid-state drives (SSDs), or disk arrays. Storage device 103 may be a logical storage device or a physical storage device. In the following description, a redundant array of independent disks (RAID) will be used as an example of storage device 103. However, it should be understood that this is merely for illustrative purposes and does not imply any limitation on the scope of this disclosure.

[0026] In some embodiments, examples of one or more client components 102 may include, but are not limited to, a host module for interfacing with host 120, a user logical unit number module for providing logical storage units, a file system module for providing a file system interface, a DRAM cache module for providing temporary caching of user data in dynamic random access memory (DRAM), a flash cache module for providing data caching on flash memory, a RAID module for providing an independent redundant disk array (RAID) interface, etc.

[0027] In some embodiments, a user can issue commands such as creating or modifying storage objects via console 130. Control module 140 can translate these commands into corresponding I / O requests and send them to data module 150. The I / O requests can be sent, for example, to client component 102. Client component 102 can write configuration or status information related to the storage object to storage device 103 via PSM 101, or read configuration or status information related to the storage object from storage device 103. In other instances, control module 140 can also directly send I / O requests for configuration or status information to PSM 101, for example, to read the corresponding configuration or status information from storage device 103. In this document, the path associated with the above I / O requests for configuration or status information is also referred to as the "control path".

[0028] In some embodiments, for example, host 120 may issue commands to data module 150 to read or write user data. Host 120 may be any physical computer, virtual machine, server, etc., running the user application locally or remotely. I / O requests for user data may be sent to client component 102, which may perform the I / O operations requested by the I / O request on storage device 103, such as reading from or writing corresponding user data to storage device 103. In this document, the path associated with the I / O requests for user data is also referred to as the "data path".

[0029] In some embodiments, storage device 103 may be a RAID array, on which one or more logical storage regions (such as logical unit numbers (LUNs)) may be created. Specifically, private storage regions (e.g., private LUNs) for storing configuration information and user storage regions (e.g., user LUNs) for storing user data may be created on storage device 103. For example, private LUNs are not visible to users. In some embodiments, high availability can be provided by providing multi-mirror protection for the data stored in private LUNs, for example, by creating private LUNs based on RAID groups that provide multi-mirror. In some embodiments, PSM 101 can use standard I / O request packet (IRP) structures to interact with LUNs on storage device 103, for example, to read or write data to them, and / or query LUN configurations, etc. In some embodiments, PSM 101 may also support locking / unlocking operations to support access from different controllers.

[0030] In some embodiments, PSM 101 allows client component 102 to make a series of modifications to a private LUN. PSM 101 allows these modifications to be committed or abandoned atomically. For example, if all modifications in a set are successfully committed, all modifications in that set are updated to the corresponding disk (e.g., the corresponding disk in storage device 103). If any modification in a set fails to commit, or if SP 130 fails before commit, none of the modifications in that set are updated to the corresponding disk. That is, PSM 101 can ensure that writes to the private LUN are atomic. In other embodiments, client component 102 may be allowed to randomly write to only a small portion of the PSM data area. In this case, PSM 101 can also ensure that updates to the private LUN are atomic.

[0031] As described above, PSM 101 relies on storage device 103 as the actual back-end storage device to persistently store the configuration and state information of client component 102. In some embodiments, PSM can implement such storage by providing a mechanism that meets the following requirements:

[0032] (1) High availability, meaning the mechanism is highly available. This means that the mechanism must ensure data integrity even if one or more disks in storage device 103 (e.g., RAID) fail. This can be achieved through multiple redundant storage areas or by using standard RAID technology.

[0033] (2) Management capabilities, i.e., the mechanism provides the necessary management capabilities for ease of use. This mechanism includes providing graphical user interface support to present and modify PSM attributes. Examples of these attributes may include, but are not limited to, total bytes used / available, content list, formatted unused space, etc.

[0034] (3) Ensure consistency. Even if a runtime failure occurs during any operation, the mechanism must ensure the consistency of data and storage media. Recovery from such failures does not require the use of repair tools.

[0035] (4) Multi-user support. This mechanism supports the storage and retrieval of information from multiple users, and provides separation of corresponding information for different users from the user's perspective.

[0036] (5) Universality, meaning that the mechanism makes no assumptions about the data it processes.

[0037] In some embodiments, PSM 101 may provide standard device access interfaces for operation by client component 102, such as interfaces for opening / closing the device and loading / unloading device control entry points. Additionally, in some embodiments, PSM 101 may also provide additional operation interfaces, such as interfaces for reading, writing, committing, abandoning, deleting, and formatting unused space. Through these interfaces, PSM 101 can provide client component 102 with simple file operation primitives.

[0038] In some embodiments, as described above, to ensure performance of I / O for configuration information, storage device 103 may initially reserve more I / O processing capacity for configuration information I / O and less I / O processing capacity for user information I / O. Furthermore, the PSM can coordinate with storage device 103 to dynamically adjust the allocation of I / O processing capacity between the two based on the actual load levels of I / O for configuration information and I / O for user information.

[0039] The following will combine Figure 2 and Figure 3 A further detailed description of the dynamic adjustment of this I / O processing capability is provided. Figure 2 A flowchart of an example flow 200 for managing I / O according to an embodiment of the present disclosure is shown. For illustrative purposes, in Figure 2 Only those shown in the text are as follows Figure 1 The PSM 101, client component 102, and storage device 103 are shown. Furthermore, regarding... Figure 2In the description, RAID is used as an example of storage device 103, on which private LUNs for storing configuration information and user LUNs for storing user data are created. It should be understood that this is for illustrative purposes only and does not imply any limitation on the scope of this disclosure.

[0040] Client component 102 may send 210 a first I / O request for configuration information to PSM 101. In this document, the I / O request for configuration information is also referred to as a "first type" I / O request.

[0041] In response to receiving a first I / O request from client component 102, PSM 101 can allocate 220 first credit units for the first I / O request. The term "credit unit" here refers to the I / O processing capacity of storage device 103, such as the count of I / O operations that storage device 103 can process simultaneously.

[0042] In some embodiments, in order to allocate a first credit unit to a first I / O request, PSM 101 may first determine whether there is at least one credit unit available for a first type of I / O request. When it is determined that at least one credit unit exists, PSM 101 may allocate the first credit unit to the first I / O request from the at least one credit unit.

[0043] In some embodiments, the total I / O processing capacity of storage device 103 can be represented as a predetermined number of credit units. Initially, storage device 103 can allocate a predetermined proportion of credit units from the predetermined number of credit units to I / O requests for configuration information and I / O requests for user data (here, I / O requests for user data are also referred to as "second type" I / O requests), for example, reserving 80% of the I / O processing capacity for first type I / O requests and 20% of the I / O processing capacity for second type I / O requests.

[0044] For example, when Figure 1When SP 130 is activated, PSM 101 can be loaded and initiate a first device control request to storage device 103 (e.g., PSM 101 can initiate a first device control operation IOCTL_FLARE_GET_RAID_INFO to RAID 103) to obtain the maximum and / or minimum number of credit units reserved by storage device 103 for a first type of I / O request. Simultaneously, PSM 101 can maintain one or more variables to record the credit unit usage status. For example, PSM 101 can use the obtained maximum and / or minimum number of credit units reserved for a first type of I / O request to update at least some of the variables in one or more of these variables. One or more variables may include, but are not limited to, the maximum and / or minimum number of credit units reserved for Type 1 I / O requests (referred to as “first variable” in this document), the number of credit units currently remaining (referred to as “second variable” in this document), the number of Type 1 I / O requests that have not yet been completed (referred to as “third variable” in this document), the number of credit units borrowed for Type 2 I / O (referred to as “fourth variable” in this document), and whether there are any I / O requests waiting for credit units (referred to as “fifth variable” in this document).

[0045] In some embodiments, for example, the first and second variables may be initialized to the maximum and / or minimum number of credit units obtained through the first device control operation, the third and fourth variables may be initialized to specific values ​​(e.g., zero), and the fifth variable may be initialized to "false" (i.e., there are no I / O requests waiting for credit units initially). It should be understood that the numerical values ​​used herein (e.g., zero) are exemplary and are not intended to imply any limitation on the scope of this disclosure.

[0046] In some embodiments, PSM 101 can determine whether at least one credit unit is available for a first type of I / O request by examining a second variable. For example, PSM 101 can determine whether a credit unit is available for a first type of I / O request when the second variable is greater than a specific value (e.g., zero). In some embodiments, PSM 101 can allocate a portion of the credit units determined to be present to the first I / O request. Alternatively, in other embodiments, utilizing the fact that only one client component 102 exists (i.e., only one requester of the first type of I / O), PSM 101 can allocate all of the credit units determined to be present to the first I / O request.

[0047] In other embodiments, the credit units reserved for the first type of I / O request may have already been fully allocated to one or more clients 102, meaning the second variable may be zero. In this case, PSM 101 may add the first I / O request to a waiting queue (e.g., when the waiting queue is not full) to wait for the allocated credit units to be reclaimed, and accordingly update the fifth variable to "true" (i.e., indicating that there is an I / O request waiting for credit units). In some embodiments, if the waiting queue is full and the first I / O request cannot be added, PSM 101 may, by default, initiate the I / O operation requested by the first I / O request to the storage device 103 (e.g., send the corresponding IRP) without obtaining credit units. Alternatively, in this case, PSM 101 may also return an indication to the client component 102 that the first I / O request failed.

[0048] In some embodiments, when allocated credit units are reclaimed, the second variable can be updated accordingly to be greater than a specific value (e.g., zero). In this case, PSM 101 can retrieve a first I / O request waiting for credit units from the waiting queue and allocate some or all of the credit units indicated by the second variable as the first credit unit for the first I / O request in the waiting queue. Similarly, if the waiting queue is empty after retrieving the first I / O request, PSM 101 can update the fifth variable accordingly to "false".

[0049] In some embodiments, in response to a first credit unit being allocated to a first I / O request, PSM 101 may send a 230 corresponding IRP to storage device 103 to perform a 240 corresponding I / O operation on a private LUN in storage device 103. When the I / O operation is complete, storage device 103 may send a 250 IRP completion acknowledgment to PSM 101. In response to receiving the IRP completion acknowledgment, PSM 101 may reclaim a 260 first credit unit for subsequent I / O requests. For example, PSM 101 may update a second variable to indicate the reclamation of the first credit unit. Furthermore, PSM 101 may send a 270 indication that the first I / O request is complete to the client component.

[0050] Additionally or alternatively, in some embodiments, PSM 101 may change the length of the wait queue for the first type of I / O request based on the completion status of the first type of I / O request. For example, as described above, PSM 101 may use a third variable to record the number of first type I / O requests that have been issued to storage device 103 but have not yet been completed.

[0051] In some embodiments, PSM 101 can determine the trend of a third variable and adjust the length of the waiting queue based on the determined trend. For example, when the third variable gradually increases and exceeds a first predetermined threshold, PSM 101 can correspondingly increase the length of the waiting queue to enable caching of more I / O requests of the first type. When the third variable gradually decreases and falls below a second predetermined threshold, PSM 101 can correspondingly decrease the length of the waiting queue to enable more I / O requests of the first type to be executed.

[0052] Additionally or alternatively, in some embodiments, for example, when the response time of a first type of I / O request (e.g., the average response time described below) exceeds a predetermined threshold or when storage device 103 indicates to PSM 101 that the first type of I / O request has failed, PSM 101 may accordingly increase the length of the wait queue to enable caching of more first type I / O requests. Only a few examples of adjusting the wait queue length based on the completion status of first type I / O requests are shown here. It should be understood that embodiments of this disclosure can be embodied in many more examples different from those described above.

[0053] When the I / O load on the user LUN on storage device 103 is high, PSM can communicate with storage device 103 to dynamically allocate the I / O processing capacity reserved for I / O requests on private LUNs to I / O requests on user LUNs.

[0054] Figure 3 A flowchart of an example flow 300 for managing I / O according to an embodiment of the present disclosure is shown. For illustrative purposes, in Figure 3 Only those shown in the text are as follows Figure 1 The PSM 101, client component 102, and storage device 103 are shown. Furthermore, regarding... Figure 3 In the description, RAID is used as an example of storage device 103, on which private LUNs for storing configuration information and user LUNs for storing user data are created. It should be understood that this is for illustrative purposes only and does not imply any limitation on the scope of this disclosure.

[0055] When the I / O load (i.e., the second type of I / O) for the user LUN on the storage device 103 is high, the storage device 103 can initiate 310 a second device control operation to the PSM 101 (e.g., the storage device 103 can initiate the second device control operation IOCTL_PSM_APPLY_RESERVED_CREDIT to the PSM 101) to borrow a second credit unit from the credit units reserved for the first type of I / O requests for the second type of I / O. In response to the second device control operation, the PSM 101 can determine 320 the average response time of the first type of I / O requests to determine whether the performance of the current I / O for the configuration information meets the expectations.

[0056] In some embodiments, the average response time can be calculated based on the arithmetic mean of the response times of all completed first type of I / O requests. Alternatively, in some other embodiments, the average response time can be calculated based on the weighted mean of the response times of all completed first type of I / O requests. Specifically, a weight t (e.g., 0 < t < 1) can be assigned to the response time x of the most recently completed first type of I / O request, and a weight (1 - t) can be assigned to the weighted average response time x of all previously completed first type of I / O requests. Then, the current weighted average response time x of the first type of I / O requests i = tx i-1 + (1 - t)x i+1 . Generally, t > 0.5, that is, the response time x of the most recently completed first type of I / O request i has a greater impact on the current weighted average response time x i-1 than the weighted average response time of historical I / O requests. i for the current weighted average response time x i+1 .

[0057] In some embodiments, the PSM 101 can further compare the determined average response time with a predetermined threshold. For example, when the determined average response time is lower than the predetermined threshold, it can indicate that the performance of the current I / O for the configuration information meets the expectations. In this case, the PSM 101 can send 330 an indication to the storage device 103 to borrow a second credit unit from the credit units reserved for the first type of I / O requests for the second type of I / O. Additionally, the PSM 101 can correspondingly decrease the second variable and increase the fourth variable to record the borrowing of the second credit unit. Alternatively, in some other embodiments, although the determined average response time is lower than the predetermined threshold, but the trend of the average response time is getting longer, in order to avoid the deterioration of the performance of the I / O for the configuration information, the PSM 101 can also not borrow the second credit unit for the second type of I / O.

[0058] In some embodiments, in response to receiving an indication from PSM 101 that a second credit unit has been borrowed for a second type of I / O, storage device 101 may enhance the I / O processing capability of 340 for user LUNs based on the second credit unit.

[0059] In some embodiments, client component 102 may send a request to PSM 101 to speed up the processing of the first type of I / O request. In response to receiving such a request, when PSM 101 determines that there are credit units borrowed for the second type of I / O request (e.g., when a fourth variable is greater than zero), PSM 101 may initiate a third device control operation to storage device 103 (e.g., PSM 101 may initiate a third device control operation IOCTL_FLARE_RETURN_RESERVED_CREDIT to storage device 103) to reclaim the credit units previously borrowed for the second type of I / O request (e.g., the second credit unit).

[0060] Additionally or alternatively, in some embodiments, PSM 101 may independently determine whether to initiate a third device control operation to reclaim credit units previously borrowed for the second type of I / O request, without relying on a request from client component 102 (i.e., action 350 may not be performed). In some embodiments, PSM 101 may determine whether borrowed second credit units need to be reclaimed based on changes in a third variable. For example, when the third variable becomes increasingly large and exceeds a first predetermined threshold, PSM 101 may initiate a third device control operation 360 to reclaim borrowed second credit units to speed up the processing of the first type of I / O request. Additionally or alternatively, PSM 101 may determine whether borrowed second credit units need to be reclaimed based on changes in the average response time of the first type of I / O request as described above. For example, when the average response time of the first type of I / O request becomes increasingly long and exceeds a predetermined threshold, PSM 101 may initiate a third device control operation 360 to reclaim borrowed second credit units to speed up the processing of the first type of I / O request. The above are merely some examples of how PSM 101 determines whether to initiate a third device control operation to reclaim credit units borrowed for a second type of I / O request. It should be understood that embodiments of this disclosure can be embodied in many other examples different from those described above.

[0061] In some embodiments, in response to a third device control operation, storage device 103 may send an instruction to PSM 101 to reclaim a second credit unit previously borrowed for a second type of I / O request. Upon receiving such an instruction, storage device 103 may accordingly increment a second variable and decrement a fourth variable to record the reclamation of the second credit unit. In this way, subsequent first type I / O requests initiated by client component 102 can obtain more credit units, thereby accelerating the processing speed of first type I / O requests.

[0062] As can be seen from the above description, the exemplary embodiments of this disclosure can achieve dynamic allocation of I / O processing capacity for different types of I / O. By allocating the I / O processing capacity reserved for higher-priority I / O to lower-priority I / O when higher-priority I / O is not busy, the exemplary embodiments of this disclosure can improve the processing performance of I / O for user data stored on the same storage device as configuration information, thereby improving the overall performance of the storage system.

[0063] Figure 4 A flowchart of a method 400 for managing I / O according to an embodiment of the present disclosure is shown. The following is in conjunction with... Figure 1 To describe the actions involved in method 400. For example, method 400 can be described by, for example, Figure 1 The PSM 101 shown is executed. It should be understood that method 400 may also include additional actions not shown and / or the actions shown may be omitted, and the scope of this disclosure is not limited in this respect.

[0064] At box 401, in response to receiving a first I / O request of the first type for the storage device, PSM 101 determines whether there is at least one credit unit available for the first type of I / O request. Each credit unit may indicate the I / O processing capacity reserved by the storage device for the first type of I / O request.

[0065] In box 420, PSM 101, based on the determined result, requests the allocation of a first credit unit to the first I / O.

[0066] In some embodiments, PSM 101, in response to determining that at least one credit unit exists, requests the allocation of a first credit unit from the at least one credit unit to a first I / O.

[0067] Alternatively, in other embodiments, PSM 101, in response to determining that at least one credit unit is not present, adds the first I / O request to a waiting queue to await the reclamation of one or more credit units allocated to the first type of I / O request. PSM 101 may then, in response to the reclamation of one or more credit units, allocate the first credit unit from the one or more credit units to the first I / O request.

[0068] In box 430, PSM 101 performs the I / O operation requested by the first I / O request on the storage device using the first credit unit.

[0069] In box 430, PSM 101 responds to I / O operation completion by reclaiming the first credit unit for use in subsequent I / O requests.

[0070] Additionally or alternatively, in some embodiments, PSM 101 also changes the length of the waiting queue based on the result of the I / O operation.

[0071] Additionally or alternatively, in some embodiments, PSM 101, in response to at least one credit unit being determined to exist and receiving a first request to allocate a second credit unit from the at least one credit unit for a second I / O request of the second type, determines the average response time of the first type of I / O request. PSM 101 further, in response to the average response time being lower than a predetermined threshold, allocates a second credit unit from the at least one credit unit to the second I / O request.

[0072] Additionally or alternatively, in some embodiments, PSM 101, in response to receiving a second request to expedite the processing of a first type of I / O request, reclaims a second credit unit for subsequent I / O requests of the first type.

[0073] In some embodiments, the first priority of a first type of I / O request is higher than the second priority of a second type of I / O request.

[0074] In some embodiments, a first type of I / O request is used to read or write system configuration information to or from a storage device, and a second type of I / O request is used to read or write user data to or from a storage device.

[0075] In some embodiments, the storage device is a redundant array of independent disks (RAID), and the I / O processing capability is represented by the number of I / O operations that the RAID can process simultaneously.

[0076] Figure 5 A schematic block diagram of an example device 500 that can be used to implement embodiments of the present disclosure is shown. For example, such as Figure 1The SP 130 shown can be implemented using example device 500. As shown, device 500 includes a central processing unit (CPU) 501, which can perform various appropriate actions and processes according to computer program instructions stored in read-only memory (ROM) 502 or loaded from storage unit 508 into random access memory (RAM) 503. Various programs and data required for the operation of device 500 can also be stored in RAM 503. CPU 501, ROM 502, and RAM 503 are interconnected via bus 504. Input / output (I / O) interface 505 is also connected to bus 504.

[0077] Multiple components in device 500 are connected to I / O interface 505, including: input unit 506, such as keyboard, mouse, etc.; output unit 507, such as various types of monitors, speakers, etc.; storage unit 508, such as memory disk, optical disk, etc.; and communication unit 509, such as network card, modem, wireless transceiver, etc. Communication unit 509 allows device 500 to exchange information / data with other devices through computer networks such as the Internet and / or various telecommunications networks.

[0078] The various processes and handling described above, such as method 400, can be executed by processing unit 501. For example, in some embodiments, method 400 can be implemented as a computer software program tangibly contained in a machine-readable medium, such as storage unit 508. In some embodiments, part or all of the computer program can be loaded and / or installed on device 500 via ROM 502 and / or communication unit 509. When the computer program is loaded into RAM 503 and executed by CPU 501, one or more actions of method 400 described above can be performed.

[0079] This disclosure can be a method, apparatus, system, and / or computer program product. A computer program product may include a computer-readable storage medium having computer-readable program instructions loaded thereon for performing various aspects of this disclosure.

[0080] Computer-readable storage media can be tangible devices capable of holding and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example—but not limited to—electrical storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination thereof. More specific examples (a non-exhaustive list) of computer-readable storage media include: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices, such as punch cards or recessed protrusions storing instructions thereon, and any suitable combination thereof. The computer-readable storage media used herein are not to be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.

[0081] The computer-readable program instructions described herein can be downloaded from computer-readable storage media to various computing / processing devices, or downloaded via a network, such as the Internet, local area network, wide area network, and / or wireless network, to an external computer or external storage device. The network may include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to the computer-readable storage media in the respective computing / processing device.

[0082] Computer program instructions used to perform the operations of this disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, etc., and conventional procedural programming languages ​​such as the "C" language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In cases involving a remote computer, the remote computer may be connected to the user's computer via any type of network—including a local area network (LAN) or a wide area network (WAN)—or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuitry, such as programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), is personalized by utilizing the status information of the computer-readable program instructions to implement various aspects of this disclosure.

[0083] Various aspects of this disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0084] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine such that, when executed by the processing unit of the computer or other programmable data processing apparatus, they create means for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner. Thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0085] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0086] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction containing one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions marked in the blocks may occur in a different order than those shown in the drawings. For example, two consecutive blocks may actually be executed substantially in parallel, and they may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented using a dedicated hardware-based system that performs the specified function or action, or using a combination of dedicated hardware and computer instructions.

[0087] The various embodiments of this disclosure have been described above. These descriptions are exemplary and not exhaustive, and are not limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is chosen to best explain the principles, practical applications, or technical improvements to the technology in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A method for managing input / output I / O, comprising: In response to receiving a first I / O request of a first type for a storage device, it is determined whether there is at least one credit unit available for the first type of I / O request, the first type corresponding to configuration information of the storage system, and each of the at least one credit unit indicates the I / O processing capacity of the storage device reserved for the first type of I / O request. Based on the determined result, request the allocation of a first credit unit to the first I / O; The first credit unit is used to perform the I / O operation requested by the first I / O request on the storage device; as well as In response to the completion of the I / O operation, the first credit unit is reclaimed for use in subsequent I / O requests; The storage device mentioned is a Redundant Array of Independent Disks (RAID), and the I / O processing capability is represented by the number of I / O operations that the RAID can handle simultaneously. The method further includes: In response to the determination that the at least one credit unit exists and receiving a first request to allocate a second credit unit from the at least one credit unit for a second I / O request of a second type, the average response time of the first type of I / O request is determined, the second type being different from the first type; as well as In response to the average response time being lower than a predetermined threshold, the second credit unit is allocated from the at least one credit unit to the second I / O request.

2. The method of claim 1, wherein allocating the first credit unit to the first I / O request comprises: In response to determining the existence of the at least one credit unit, the first credit unit is allocated from the at least one credit unit to the first I / O request.

3. The method of claim 1, wherein allocating the first credit unit to the first I / O request comprises: In response to determining that the at least one credit unit does not exist, the first I / O request is added to a waiting queue to wait for one or more credit units allocated to the first type of I / O request to be reclaimed; as well as In response to the recycling of the one or more credit units, the first credit unit is allocated from the one or more credit units to the first I / O request.

4. The method according to claim 3, further comprising: The length of the waiting queue is changed based on the execution result of the I / O operation.

5. The method according to claim 1, further comprising: In response to receiving a second request to expedite the processing of the first type of I / O request, the second credit unit is reclaimed for subsequent I / O requests of the first type.

6. The method of claim 1, wherein the first priority of the first type of I / O request is higher than the second priority of the second type of I / O request.

7. The method of claim 1, wherein the storage device is a mapped RAID.

8. A device for managing input / output I / O, comprising: At least one processing unit; At least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit, the instructions, when executed by the at least one processing unit, causing the device to perform an action, the action including: In response to receiving a first I / O request of a first type for a storage device, it is determined whether there is at least one credit unit available for the first type of I / O request, the first type corresponding to configuration information of the storage system, and each of the at least one credit unit indicates the I / O processing capacity of the storage device reserved for the first type of I / O request. Based on the determined result, request the allocation of a first credit unit to the first I / O; Perform the I / O operation requested by the first I / O request on the storage device using the first credit unit; and In response to the completion of the I / O operation, the first credit unit is reclaimed for use in subsequent I / O requests; The storage device mentioned is a Redundant Array of Independent Disks (RAID), and the I / O processing capability is represented by the number of I / O operations that the RAID can handle simultaneously. The actions mentioned above also include: In response to the determination that the at least one credit unit exists and receiving a first request to allocate a second credit unit from the at least one credit unit for a second I / O request of a second type, the average response time of the first type of I / O request is determined, the second type being different from the first type; and In response to the average response time being lower than a predetermined threshold, the second credit unit is allocated from the at least one credit unit to the second I / O request.

9. The device of claim 8, wherein requesting the allocation of the first credit unit to the first I / O comprises: In response to determining the existence of the at least one credit unit, the first credit unit is allocated from the at least one credit unit to the first I / O request.

10. The device of claim 8, wherein requesting the allocation of the first credit unit to the first I / O comprises: In response to determining that the at least one credit unit does not exist, the first I / O request is added to a waiting queue to wait for one or more credit units allocated to the first type of I / O request to be reclaimed; as well as In response to the recycling of the one or more credit units, the first credit unit is allocated from the one or more credit units to the first I / O request.

11. The device according to claim 10, wherein the action further comprises: The length of the waiting queue is changed based on the execution result of the I / O operation.

12. The device according to claim 8, wherein the action further comprises: In response to receiving a second request to expedite the processing of the first type of I / O request, the second credit unit is reclaimed for subsequent I / O requests of the first type.

13. The device of claim 8, wherein the first priority of the first type of I / O request is higher than the second priority of the second type of I / O request.

14. The device of claim 8, wherein the storage device is a mapped RAID.

15. A computer program product comprising a non-transitory computer storage medium storing machine-executable instructions for one or more software programs, wherein the machine-executable instructions, when executed by a device, cause the device to: In response to receiving a first I / O request of a first type for a storage device, it is determined whether there is at least one credit unit available for the first type of I / O request, the first type corresponding to configuration information of the storage system, and each of the at least one credit unit indicates the I / O processing capacity of the storage device reserved for the first type of I / O request. Based on the determined result, request the allocation of a first credit unit to the first I / O; The first credit unit is used to perform the I / O operation requested by the first I / O request on the storage device; as well as In response to the completion of the I / O operation, the first credit unit is reclaimed for use in subsequent I / O requests; The storage device mentioned is a Redundant Array of Independent Disks (RAID), and the I / O processing capability is represented by the number of I / O operations that the RAID can handle simultaneously. This also includes the device: In response to the determination that the at least one credit unit exists and receiving a first request to allocate a second credit unit from the at least one credit unit for a second I / O request of a second type, the average response time of the first type of I / O request is determined, the second type being different from the first type; as well as In response to the average response time being lower than a predetermined threshold, the second credit unit is allocated from the at least one credit unit to the second I / O request.

16. The computer program product of claim 15, wherein requesting the allocation of the first credit unit to the first I / O comprises: In response to determining the existence of the at least one credit unit, the first credit unit is allocated from the at least one credit unit to the first I / O request.

17. The computer program product of claim 15, wherein requesting the allocation of the first credit unit to the first I / O comprises: In response to determining that the at least one credit unit does not exist, the first I / O request is added to a waiting queue to wait for one or more credit units allocated to the first type of I / O request to be reclaimed; as well as In response to the recycling of the one or more credit units, the first credit unit is allocated from the one or more credit units to the first I / O request.

18. The computer program product of claim 15, wherein the storage device is a mapped RAID.

Citation Information

Patent Citations

  • Method of sharing a multi-queue capable resource based on weight

    US20170199765A1

  • Performing input / output operations on a set of storage devices based on scalable input / output credits

    US9563511B1