EP-4033366-B1 - DATA ACCESS PATH OPTIMIZATION
Inventors
- INGLIS, STUART JOHN
- Oud, Leon Wiremu Macrae
- AZARIS, Dominic Joseph Michael Houston
- TURPITT, Jack Spencer
Dates
- Publication Date
- 20260506
- Application Date
- 20220121
Claims (8)
- A method comprising: obtaining a list of data paths to at least one persistent storage device through a plurality of NUMA nodes (601); associating with each data path, access performance information (602); receiving a request to access one of the at least one persistent storage device (603); calculating a preferred data path to the one of the at least one persistent storage device using the access performance information (604); and accessing the one of the at least one persistent storage device using the preferred data path (605); wherein the request to access one of the at least one persistent storage device is a request to read data from the at least one persistent storage device or a request to write data to the at least one persistent storage device characterized in that the access performance information of each data path includes at least a last update time of the access performance information and at least one or more of: a latency of the data path, wherein the preferred data path is calculated based on at least the latency of the data path; an average bandwidth indicator of the data path, wherein the preferred data path is calculated based on at least the average bandwidth indicator of the data path; a load on the data path, wherein the preferred data path is calculated based on at least the load on the data path; or a reliability indicator of the data path, wherein the preferred data path is calculated based on at least the reliability indicator of the data path.
- The method of claim 1, further comprising: updating the access performance information of the used data path.
- The method of claim 1 or 2, further comprising: identifying data paths for testing; and testing the identified data paths; updating the access performance information of the tested data paths.
- The method of claim 3, wherein identifying data paths for testing further comprises: calculating the age of the access performance information using the last update time; and identifying data paths for testing having access performance information exceeding an age threshold.
- The method of claim 3, wherein identifying data paths for testing further comprises selecting a percentage of all data paths for testing.
- The method of claim 3, wherein identifying data paths for testing further comprises selecting all the data paths that have an error for testing.
- A system comprising: a memory; a plurality of NUMA nodes, each NUMA node comprising: at least one CPU core; and at least a portion of the memory is attached to the at least one CPU core, wherein the memory comprises instructions which, when executed by the plurality of NUMA nodes, configures the plurality of NUMA nodes to perform the method of any one of claims 1 to 6.
- A computer software product comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method of any one of claims 1 to 6.
Description
TECHNICAL FIELD This relates to data access path optimization. BACKGROUND Data is stored on one or more persistent storage devices, such as a number of drives. When data is to be written, the data is written via a data path onto the persistent storage device. When data is to be read, the data is read from a persistent storage device via a data path and returned to the data requester. US 2015/262632 A1 discloses a method comprising: determining a plurality of ports through which a non-volatile storage volume is accessible; determining distances between a processor node and the ports; and assigning the ports to a plurality of groups based on the determined distances, the groups having different priorities for the processor node. EP 3 605 331 A1 discloses a memory allocation method and a server, to reduce a performance loss caused by an NC latency and improve performance of the server during memory allocation. SUMMARY According to a first aspect of the present invention, there is provided a method as set out in independent claim 1. According to a second aspect of the present invention, there is provided a system as set out in independent claim 7. According to a third aspect of the present invention, there is provided a computer software product as set out in independent claim 8. Other embodiments are described in the dependent claims. In a second example embodiment a system comprising: a memory; a plurality of NUMA nodes, each NUMA node comprising: at least one CPU core; and at least a portion of the memory is attached to the at least one CPU core, wherein the memory comprises instructions which, when executed by the plurality of NUMA nodes, configures the plurality of NUMA nodes to perform the method the first example embodiment. In a third example embodiment a computer software product comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method the first example embodiment. BRIEF DESCRIPTION The description is framed by way of example with reference to the drawings which show certain embodiments. However, these drawings are provided for illustration only, and do not exhaustively set out all embodiments. Figure 1 shows an example storage system.Figure 2 shows an example NUMA system.Figure 3 shows a further example NUMA system.Figure 4 shows another example NUMA system.Figure 5 shows a still further example NUMA system.Figure 6 shows an example approach for accessing data.Figure 7 shows an example approach for periodically testing access performance information. DETAILED DESCRIPTION An approach for a storage controller is described with reference to Figure 1 which allows the storage controller to handle requests to read and write data on a persistent storage device. The persistent storage device is a system for storing data in a persistent manner and may comprise one or more drives in different configurations. The storage controller 110 is in communication with a persistent storage device 120. The persistent storage device 120 is a system for storing data in a persistent manner. Although the persistent storage device is shown as a single component, in practice it may comprise multiple drives (such as hard disk drives or solid drive drives) arranged into groups and may be distributed over a number of storage nodes. Data is stored across the drives and may have error correcting encoding applied to reduce the risk of data loss if a component of the persistent storage device 120 fails. Data is stored on the persistent storage devices 120 in blocks. A block is a unit of data of predetermined size, such as 4 KiB (4096 bytes). The storage controller 110 is configured to use logical block addressing (LBA) when receiving requests to interact with the persistent storage device 120. LBA provides that each block of data stored on the persistent storage device 120 is identified by a unique integer LBA value. The storage controller 110 may translate an LBA value to determine which physical location on which persistent storage device the data is actually stored on. The storage controller 110 is further in communication with a cache 130. The cache comprises non-volatile memory chips configured to operate as a non-volatile cache. This may involve the use of flash memory alone or in combination with conventional volatile memory. The non-volatile memory chips may be configured as non-volatile dual in-line memory modules (NVDIMM). While the storage controller is described as a single component, in practice the different functions of the storage controller may be split across different entities. For example, interactions with the cache 130 may occur through a cache controller independent of the storage controller 110. NUMA NUMA (Non-Uniform Memory Access) is a multiprocessing computing system where at least memory access time depends on the memory location relative to each processor. In some implementations memory access time depends on the memory location relative