[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN117149449A - Prefetch scheduling method and prefetch scheduler - Google Patents

Prefetch scheduling method and prefetch scheduler Download PDF

Info

Publication number
CN117149449A
CN117149449A CN202210560367.3A CN202210560367A CN117149449A CN 117149449 A CN117149449 A CN 117149449A CN 202210560367 A CN202210560367 A CN 202210560367A CN 117149449 A CN117149449 A CN 117149449A
Authority
CN
China
Prior art keywords
prefetch
data
requests
request
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210560367.3A
Other languages
Chinese (zh)
Inventor
贾扬塔·巴萨克
帕达利亚·王子·阿图尔库马尔
方维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210560367.3A priority Critical patent/CN117149449A/en
Priority to PCT/CN2023/079293 priority patent/WO2023226505A1/en
Publication of CN117149449A publication Critical patent/CN117149449A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A prefetch scheduling method and a prefetch scheduler are used for reducing network delay of application access data. The method may be performed by a prefetch scheduler, in particular, the prefetch scheduler obtains a plurality of prefetch requests, wherein each prefetch request includes a characteristic of the prefetch data, the characteristic of the prefetch data including a size of the prefetch data and an expected accessed time of the prefetch data; the prefetch scheduler determines the prefetch sequence of the plurality of prefetch requests according to the characteristics of the prefetch data included in each prefetch request; the prefetch scheduler sequentially processes the plurality of prefetch requests in a prefetch order.

Description

Prefetch scheduling method and prefetch scheduler
Technical Field
The present application relates to the field of computer technologies, and in particular, to a prefetch scheduling method and a prefetch scheduler.
Background
The local data center and the remote data center may typically communicate via a wide area network. For the local data center, the remote data center may be a cloud of the local data center, where the cloud includes private cloud (private cloud), public cloud (public cloud), hybrid cloud (public cloud), and the like, where the hybrid cloud is a mixture of private cloud and public cloud, and may have advantages of the public cloud and the private cloud, and the hybrid cloud may handle different types of workloads, such as using the public cloud that can be easily expanded to handle less sensitive workloads, and leave more sensitive and critical workloads for the private cloud to handle.
An application running on the local data center may access data of the local data center. However, because the local data center stores limited data, the data that the application needs to access may not be stored in the local data center, and at this time, when the application requests data from the local data center, the local data center needs to acquire the corresponding data from the remote data center through the wide area network, and then respond to the application. As such, there are serious network delay problems.
In the related art, the local data center typically uses a prefetching technique to obtain data (data to be prefetched) that is expected to be accessed by an application from a remote data center to store the data before the application actually accesses the data. In this way, when an application accesses the data, the local data center can respond directly to the application from the local, thereby reducing network delay in application access. However, when there are multiple data to be prefetched in a local data center, the existing prefetching techniques often cannot guarantee that the data to be prefetched is obtained from the local data center before it is accessed by the application, and do not serve to reduce network latency when the application accesses the data.
Disclosure of Invention
The application provides a prefetching scheduling method and a prefetching scheduler, which are used for scheduling a prefetching sequence of a plurality of requests for prefetching data, so that all the data needing prefetching are acquired into a local data center before being accessed by an application as far as possible, thereby playing a role in reducing network delay of the application for accessing the data.
In a first aspect, the present application provides a prefetch scheduling method, the method being executable by a prefetch scheduler, the method comprising: the prefetch scheduler obtains a plurality of prefetch requests, wherein each prefetch request includes a characteristic of the prefetch data, the characteristic of the prefetch data including a size of the prefetch data and an expected accessed time of the prefetch data; the prefetched data is data which needs to be prefetched and is expected to be accessed by the application; the prefetch scheduler determines the prefetch sequence of the plurality of prefetch requests according to the characteristics of the prefetch data included in each prefetch request; the prefetch scheduler sequentially processes the plurality of prefetch requests in a prefetch order. In the present application, the prefetch order may also be referred to as a processing order in which a plurality of prefetch requests are processed.
Compared with the prior art, the method for processing each prefetch request only according to the sequence of receiving each prefetch request, namely, the method of first come first served (first come first served, FCFS), the prefetch scheduler in the scheme can optimize the prefetch sequence of a plurality of prefetch requests (namely, optimize the acquisition sequence of a plurality of prefetch data) according to the size of prefetch data in each prefetch request and the expected accessed time, so that the problem that the prior art can not always ensure that each prefetch data is acquired to a local data center before the prefetch data is accessed by an application is avoided, namely, the scheme can ensure that all the data needing prefetching is acquired to the local data center before the prefetch data is accessed by the application as much as possible, thereby reducing the network delay of the application access.
In one possible implementation, the prefetch scheduler is located in a first data center (i.e., a local data center) that further includes a plurality of storage devices, and the plurality of prefetch requests are derived by the prefetch scheduler based on access requests by the application to the plurality of storage devices. The plurality of storage devices may be different types of storage devices of the same manufacturer, or may be storage devices of different manufacturers.
In this way, the prefetch scheduler can obtain a plurality of prefetch requests according to the access requests of a plurality of storage devices in the first data center, that is, the dispatch scope of the prefetch scheduler of the present application is the prefetch request corresponding to a plurality of storage devices in the first data center, but not the prefetch request corresponding to only one storage device in the first data center, so that the prefetch sequence of the plurality of prefetch requests in the first data center can be optimized from the whole scope of the data center.
In one possible implementation, each prefetch request further includes an identification of the prefetch data; when the prefetch scheduler sequentially processes the plurality of prefetch requests according to the prefetch order, the prefetch scheduler may specifically acquire the prefetch data from the second data center (i.e., the remote data center) sequentially according to the prefetch order according to the identification of the prefetch data included in each prefetch request. Wherein the second data center is one or more data centers different from the first data center, and the second data center can be understood as a cloud end of the first data center, such as a private cloud, a public cloud, or a hybrid cloud.
In a possible implementation, each prefetch request further includes a destination address, where the destination address is used to indicate a storage address of the prefetch scheduler after the prefetch data is acquired, and the destination address is one of identifiers of a plurality of storage devices, where the identifier of a storage device is, for example, an internet protocol (internet protocol, IP) address of the storage device, and may also be a name of the storage device or a serial number of the storage device, and so on. Further, the plurality of prefetch requests includes a first prefetch request including an identification of the prefetch data as an identification of the first data, and the destination address included in the first prefetch request is an identification of a first storage device of the plurality of storage devices in the first data center. The prefetch scheduler may also send the obtained first data to the first storage device for storage, so that the first storage device may obtain the first data response from the local to the application when receiving the access request of the application to the first data.
In this way, the prefetch request obtained by the prefetch scheduler further includes a destination address, so that the prefetch scheduler can determine which storage device of the first data center the prefetched data is stored in when processing the prefetch request.
In one possible implementation, the predicted accessed time of the prefetch data included in the first prefetch request is a first time; transmitting the acquired first data to a first storage device for storage, including: the first data is sent to the first storage device for storage before the first time. Thus, the data in the first storage device can meet the access requirement of the application, wherein the access requirement of the application can be that the prefetched data of the prefetching request corresponding to the storage device can be acquired and stored on the storage device before the prefetched data is accessed by the application.
In one possible implementation, the plurality of prefetch requests further includes a second prefetch request including a destination address that is an identification of a second storage device of the plurality of storage devices, the second storage device being different from the first storage device. Wherein the second storage device may be of the same type or of a different type than the first storage device. In this manner, the prefetch scheduler may prefetch data not only for the first storage device, but also for the second storage device. That is, the prefetch scheduler may prefetch data for a plurality of storage devices in the first data center, and may sort prefetch requests of the plurality of storage devices, which is helpful for implementing that data in each storage device in the first data center may meet access requirements of an application.
In one possible implementation, the prefetch scheduler may also obtain multiple access requests to multiple storage devices for the history period of time prior to obtaining the multiple prefetch requests; and further obtains a plurality of prefetch requests based on the plurality of access requests. Optionally, each access request of the plurality of access requests carries a characteristic of the application accessing access data on the plurality of storage devices in a history period, the characteristic of the access data including a size of the access data and an accessed time of the access data; the characteristics of the prefetch data in the plurality of prefetch requests are derived based on the characteristics of the access data in the plurality of access requests.
In this way, the prefetching scheduler predicts the characteristics of prefetched data in the plurality of prefetching requests according to the characteristics of the access data carried in the plurality of access requests, so as to obtain the plurality of prefetching requests, and schedules the plurality of prefetching requests, so that the prefetched data is stored in the storage equipment of the first data center in advance, and the application can acquire the data more quickly.
In one possible implementation, each access request carries an identification of one of the plurality of storage devices; the destination address in the plurality of prefetch requests is derived based on an identification of the storage device included in the plurality of access requests.
In this way, the prefetch scheduler determines, according to an access request of an application to a storage device, data that needs to be stored in advance by the storage device (i.e., prefetch data corresponding to the storage device), and generates a prefetch request corresponding to the storage device (the prefetch request corresponding to the storage device includes an identifier, i.e., a destination address, of the storage device).
In one possible implementation, the characteristics of the prefetched data further include a priority of the prefetched data; that is, when the prefetch scheduler schedules the prefetch sequence of each prefetch request, not only the size of the prefetch data and the expected accessed time in each prefetch request are considered, but also the priority of the prefetch data are considered, so that the scheduling accuracy can be further improved, and the duration and/or the bandwidth for acquiring the data from the storage device by the application can be facilitated to meet the service level protocol requirements of the application. Alternatively, the priority of the prefetch data in the plurality of prefetch requests may be derived based on the priority of the application that generated the plurality of access requests.
In one possible implementation, the prefetch scheduler includes a plurality of prediction engine instances, and is further configured to perform, for any one of the plurality of access requests: distributing the access request to one of a plurality of access request queues according to the name space of the file system corresponding to the access data requested by the access request; or, the access request is allocated to one of a plurality of access request queues according to a directory in a namespace of a file system corresponding to the access data requested by the access request. Further, each access request queue corresponds to a respective prediction engine instance, and the prefetch scheduler inputs a plurality of access requests in each access request queue into the respective prediction engine instance so as to predict and obtain prefetch requests corresponding to the plurality of access requests in each access request queue. Optionally, multiple access requests in each access request queue are carried using one bucket.
In this way, the prefetch scheduler places access requests corresponding to different namespaces (or directories in different namespaces) in different access request queues (or buckets), the access requests in each access request queue being usable for training respective prediction engine instances, in such a way that the access requests can be split into different queues (or buckets) according to a feature (e.g., according to the namespaces, or directories, etc.), each queue being predicted using a corresponding one of the prediction engine instances, i.e., the access requests being managed and predicted more finely, which helps to improve the accuracy of the predicted prefetch requests.
In one possible implementation manner, when the prefetch scheduler determines the prefetch sequence of the plurality of prefetch requests according to the characteristics of the prefetch data included in each prefetch request, the prefetch scheduler may specifically determine the prefetch sequence by adopting a convex optimization algorithm according to the characteristics of the prefetch data included in each prefetch request. In this way, all data to be prefetched is acquired to the local data center before being accessed by the application as much as possible, thereby reducing network delay of application access and helping to minimize the overall latency of multiple prefetch requests (or average latency of multiple prefetch requests).
In one possible implementation, the prefetch scheduler may further obtain a third prefetch request, where the third prefetch request is obtained during a process in which the prefetch scheduler sequentially processes the plurality of prefetch requests in the prefetch order; the prefetch scheduler determines a prefetch order of the third prefetch request and a prefetch request of the plurality of prefetch requests that has not been processed, based on characteristics of the prefetch data included in the third prefetch request. Thus, when the prefetch scheduler acquires new prefetch requests again in the process of processing a plurality of prefetch requests, the prefetch sequence of the third prefetch request and the prefetch requests which are not processed currently can be dynamically adjusted according to the newly acquired third prefetch request. That is, the scheme can dynamically adjust the prefetch sequence of the prefetch request in real time, thereby better realizing the prefetch operation.
In one possible implementation manner, the number of the plurality of prefetch requests is M, and when the prefetch scheduler acquires the third prefetch request, the number of prefetch requests which are not processed in the M prefetch requests is N, M and N are integers, M is greater than 1, N is greater than 0 and less than M; the prefetch scheduler may specifically predict a first prefetch time when the prefetch data requested by a fourth prefetch request is prefetched to its corresponding storage device when determining a prefetch order of the third prefetch request and a prefetch request that is not yet processed among the plurality of prefetch requests according to a characteristic of the prefetch data included in the third prefetch request, the fourth prefetch request being a last prefetch request among the N prefetch requests that are not yet processed; the prefetch scheduler determines a second prefetch time according to the first prefetch time and the size of the prefetch data included in the third prefetch request, the second prefetch time being a time when the prefetch data requested by the third prefetch request is prefetched to its corresponding storage device in a case where the third prefetch request is arranged after the fourth prefetch request.
Based on the relationship between the second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request, the following two cases are explained:
in the first case, when the second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request satisfy the preset condition, the prefetch scheduler puts the third prefetch request to the fourth prefetch request for processing.
And in the second case, when the second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request do not meet the preset condition, the prefetch scheduler redetermines the prefetch sequence of the third prefetch request and the N unprocessed prefetch requests according to the prefetch data characteristics included in the third prefetch request, so that the accessed time and the prefetch time respectively corresponding to the third prefetch request and the N unprocessed prefetch requests meet the preset condition.
In one possible implementation, the preset condition includes a prefetch time corresponding to the prefetch request, before an expected accessed time of the prefetch data in the prefetch request; or the preset condition comprises a pre-fetching time corresponding to the pre-fetching request, and the time difference value of the pre-fetching time and the pre-fetching time is smaller than a threshold value after the predicted accessed time of the pre-fetching data in the pre-fetching request; the prefetch time corresponding to the prefetch request is the time for prefetching the prefetch data in the prefetch request into the corresponding storage device.
Further, in an example of the second case, the prefetch scheduler may further adjust the threshold according to a preset step size before redefining the prefetch order of the third prefetch request and the N unprocessed prefetch requests.
In a second aspect, embodiments of the present application provide a prefetch scheduler having functionality to implement the method of the first aspect or any one of the possible implementations of the first aspect. The prefetch scheduler may also be referred to as a prefetch scheduler.
The functions of the prefetch scheduler may be implemented by hardware, or may be implemented by hardware executing corresponding software, where the hardware or software includes one or more modules or units or means (means) corresponding to the functions.
In one possible implementation, the prefetch scheduler includes a prediction engine manager, a prefetch optimizer, and a prefetch executor, where the prediction engine manager is configured to obtain a plurality of prefetch requests, where each prefetch request includes a characteristic of the prefetch data, and the characteristic of the prefetch data includes a size of the prefetch data and a predicted accessed time of the prefetch data; a prefetch optimizer for determining a prefetch order of the plurality of prefetch requests according to characteristics of prefetch data included in each prefetch request; and the prefetch executor is used for sequentially processing a plurality of prefetch requests according to the prefetch sequence.
In a further possible implementation manner, the prefetch scheduler includes a processing module and a transceiver module, where the processing module is configured to support the prefetch scheduler to perform the method in the first aspect or any implementation manner of the first aspect. The transceiver module is configured to support communication between the prefetch scheduler and other devices, for example, prefetch data may be obtained from a second data center. The prefetch scheduler may also include a memory module coupled to the processing module that holds the program instructions and data necessary for the prefetch scheduler. As an example, the processing module may be a processor, the transceiver module may be a transceiver, and the storage module may be a memory, where the memory may be integrated with the processor, or may be separately provided from the processor.
In another possible implementation, the prefetch scheduler includes a processor and memory. The processor is coupled to the memory and operable to execute computer program instructions stored in the memory to cause the prefetch scheduler to perform the method of the first aspect or any one of the possible implementations of the first aspect. Optionally, the prefetch scheduler further comprises a communication interface, the processor being coupled with the communication interface, the communication interface being for supporting communication between the prefetch scheduler and other devices.
In a third aspect, an embodiment of the present application provides a chip system, including: a processor coupled to a memory for storing a program or instructions which, when executed by the processor, cause the system-on-a-chip to implement the method of the first aspect or any one of the possible implementations of the first aspect.
Optionally, the system on a chip further comprises an interface circuit for interfacing code instructions to the processor.
Alternatively, the processor in the chip system may be one or more, and the processor may be implemented by hardware or software. When implemented in hardware, the processor may be a logic circuit, an integrated circuit, or the like. When implemented in software, the processor may be a general purpose processor, implemented by reading software code stored in a memory.
Alternatively, the memory in the system-on-chip may be one or more. The memory may be integral to the processor or separate from the processor. For example, the memory may be a non-transitory processor, such as a read only memory ROM, which may be integrated on the same chip as the processor or may be separately provided on different chips.
In a fourth aspect, the present application provides a computer readable storage medium having stored therein a computer program or instructions which, when executed by an apparatus, is adapted to carry out the method of the first aspect or any one of the possible implementations of the first aspect.
In a fifth aspect, embodiments of the present application provide a computer program product which, when read and executed by a computer, causes the computer to perform the method of the first aspect or any of the possible implementations of the first aspect.
The technical effects achieved by any one of the second to fifth aspects may be referred to the description of the beneficial effects in the first aspect, and the detailed description is not repeated here.
Drawings
FIG. 1 is a schematic diagram of an architecture for an application to access cloud data;
fig. 2 is a schematic diagram of an architecture to which the application accesses cloud data according to the present application;
FIG. 3 is a schematic diagram of a prefetch scheduler according to the present application;
FIG. 4 is a schematic flow chart of a prefetch scheduling method according to the present application;
FIG. 5 is a schematic diagram of a prefetch scheduler according to another embodiment of the present application;
Fig. 6 is a schematic structural diagram of another prefetch scheduling device according to the present application.
Detailed Description
Embodiments of the present application will be described in detail below with reference to the accompanying drawings.
Metadata (metadata): for describing data (data about data), information describing data attributes (properties) is mainly used to indicate a storage location of the data, indicate historical data of the data, search resources, record files, and the like.
Mounting (mounting): it is a device that is associated with a particular location in the directory tree so that the operating system can find this just-joined device starting from the root directory to access the file data within that device. It should be noted that the device here may be a real device such as a universal serial bus (universal serial bus, USB) or a directory in an operating system.
Namespaces (namespaces): also known as namespaces, etc. Namespaces can be used as additional information to distinguish functions, classes, variables, etc. of the same name in different libraries. A namespace is used, i.e., a context is defined.
Service level agreement (service level agreement, SLA): refers to a service commitment of a system service provider (provider) to a customer (customer). The SLA may be used to gauge whether the service meets the user's expectations.
Convex optimization: is a sub-field of mathematical optimization, studying the problem of minimization of convex functions defined in a convex set. Convex optimization is applied in many discipline fields such as automatic control systems, signal processing, communication and networking, electronic circuit design, data analysis and modeling, statistics (optimization design), and financial fields.
Fig. 1 is a schematic diagram of an architecture for an application to access cloud data, where the architecture includes a local data center 10 and a remote data center 20. The local data center 10 and the remote data center 20 may typically communicate via a wide area network.
The remote data centers 20 may be one or more, such as three remote data centers 20 shown in fig. 1 by way of example. The remote data center 20 may also be considered a cloud, optionally, the cloud includes one or more public clouds, or includes one or more private clouds, or includes one or more public clouds and one or more private clouds, where a cloud that includes both public and private clouds may be considered a hybrid cloud. One or more file systems may be included in each public cloud, and one or more file systems may also be included in each private cloud, each file system having respective data stored therein.
The local data center 10 includes a plurality of storage devices 11, such as three storage devices 11 are exemplarily shown in fig. 1, and data is stored in each storage device 11.
The local data center 10 runs a plurality of Applications (APP), such as three applications (denoted application a, application b, and application c) exemplarily shown in fig. 1. The application may access the storage device 11 of the local data center 10 to obtain the data required by the application. Because of the limited data stored in the storage devices 11 of the local data center 10, the data required for the application may not be stored in the storage devices 11 of the local data center 10. Specifically, when the storage device 11 of the local data center 10 does not store the data to be accessed by the application, the storage device 11 of the local data center 10 may obtain the corresponding data from the remote data center 20 and respond to the application.
Illustratively, the application may run on a host (not shown in FIG. 1) of the local data center 10, through which a user operates the application, and in response, the host generates an access request for the application, which may be used by the host to read data from the storage device 11 that the application needs to read, or to write data to the storage device 11 that the application is to write. When the storage device 11 of the local data center 10 does not store the data corresponding to the access request, the storage device 11 of the local data center 10 may acquire the data corresponding to the access request from the remote data center 20 through the wide area network under the request of the host, and feed back the data corresponding to the access request to the host.
Alternatively, the application is in a many-to-many relationship with the storage devices 11 of the local data center 10, i.e., the same application may access multiple storage devices 11 of the local data center 10, i.e., the data of an application may be stored on multiple storage devices 11. One storage device 11 of the local data center 10 may provide access services for a plurality of applications, i.e., one storage device 11 may hold data of a plurality of applications. For example, in fig. 1, three storage devices 11 in fig. 1 are sequentially denoted as a storage device a, a storage device b, and a storage device c from top to bottom, where data of an application a may be stored on the storage device a and the storage device b, data of an application b may be stored on the storage device a and the storage device c, data of an application c may be stored on the storage device a, and so on. Conversely, the storage device a may provide access services for the application a, the application b, the application c, and the like, which are not described herein. Wherein an application may also be referred to as an application program, an application thread, a user application, etc.
In the architecture shown in fig. 1, the storage devices 11 of the local data center 10 typically need to access data stored in the remote data center 20 through a wide area network, which can present a network delay problem.
For this purpose, a prefetch module 111 is typically provided on each storage device 11 of the local data center 10, and for each storage device 11, the prefetch module 111 on that storage device 11 predicts data that an application may be accessed in the future according to access data on that storage device 11 (or according to a plurality of access requests that the application initiates to that storage device 11), and generates a plurality of prefetch requests for that storage device 11 based on the data that may be accessed. The prefetch module 111 performs a prefetch operation according to the plurality of prefetch requests, that is, the data that may be accessed by the application is obtained in advance from the remote data center 20 according to the plurality of prefetch requests, and the data is stored on the storage device 11. Accordingly, when the application accesses the data, the storage device 11 of the local data center 10 does not need to wait for the storage device 11 to be acquired from the remote data center 20 first, so that the speed of accessing the data by the application is improved, that is, the input/output (IO) performance of the application is improved.
In the above-described scheme, the prefetch module 111 performs the prefetch operation according to the principle of first come first served (first come first served, FCFS) when performing the prefetch operation according to the plurality of prefetch requests. Specifically, the prefetch module 111 of each storage device 11 generates a corresponding prefetch request according to the access request on the associated storage device 11, and uses a first-in first-out (first in first out, FIFO) queue to manage or maintain the corresponding prefetch request. Specifically, each prefetch module 111 sends a new prefetch request to the tail of its own maintained FIFO queue; and sequentially fetching prefetch requests from the head of the FIFO queue, and performing prefetch operations according to the fetched prefetch requests. That is, there are a plurality of prefetch modules 111 in the local data center 10, each prefetch module 111 is usually used for executing prefetch for one storage device 11, and each prefetch module 111 processes a plurality of prefetch requests according to the principle of FCFS, and this implementation does not consider the business factors of each prefetch request, such as the demand time (the time of application access of the prefetch data) of the prefetch data in each prefetch request, the acquisition time of the prefetch data in each prefetch request, and the like, and there may be a problem that scheduling is unreasonable, resulting in that the prefetch data in some prefetch requests is acquired after the demand time thereof, and cannot play a role in reducing the application access delay.
For example, the prefetch module 111 performs the prefetch operation of the prefetch request B after performing the prefetch operation of the prefetch request a before the prefetch request B in the FIFO queue. Assuming that the duration required by the prefetch module 111 to perform the prefetch operation of the prefetch request a is long, a long time is required to wait before performing the prefetch operation of the prefetch request B, there may be a time delay in accessing data by an application when the application requests the data corresponding to the prefetch request B from the storage device 11 of the local data center 10, that is, the prefetch operation of the prefetch request B is not performed yet, that is, the data corresponding to the prefetch request B is not stored in the storage device 11 of the local data center 10.
Compared to fig. 1, the architecture for accessing cloud data by an application provided by the present application further includes a prefetch scheduler 12 in the local data center 10, where the prefetch scheduler 12 may be configured to schedule a plurality of prefetch requests of a plurality of storage devices 11, and the architecture can be specifically shown in fig. 2. The architecture provided by the present application may be in particular an object-store (based storage devices, OSD) network, storage area network (storage area network, SAN) or network attached storage (network attached storage, NAS) architecture.
Further, fig. 3 is a schematic diagram of a prefetch scheduler 12 according to an exemplary embodiment of the present application, where the prefetch scheduler 12 may include a prediction engine manager (prefetch engine manager) 121, a prefetch optimizer (prefetch optimizer) 122, and a prefetch executor (prefetch executor) 123. Each module/unit is explained as follows:
(1) The prediction engine manager 121 is configured to obtain an access request of an application to the storage device 11, and generate a prefetch request according to the access request of the application to the storage device 11. Prediction engine manager 121 may be one or more. Illustratively, the prediction engine manager 121 is one, and the one prediction engine manager 121 is configured to manage access requests of all storage devices 11 of the local data center 10, and generate corresponding prefetch requests according to the access requests of all storage devices 11 of the local data center 10. Further exemplary, the prediction engine manager 121 may be plural, and each prediction engine manager 121 may manage access requests of one or more storage devices 11 in the local data center 10 and generate prefetch requests corresponding to the one or more storage devices 11 according to the managed access requests.
(2) The prefetch optimizer 122 is configured to obtain a plurality of prefetch requests generated by the prediction engine manager 121, and then sort the prefetch order of the plurality of prefetch requests to obtain a plurality of prefetch requests after sorting. Alternatively, the prefetch optimizer 122 may be one, and the prefetch optimizer 122 obtains prefetch requests generated by all of the prediction engine managers 121 of the local data center 10, sorts the prefetch order of the prefetch requests (i.e., the prefetch optimizer 122 may sort the prefetch order of the prefetch requests in the entire local data center 10), and instructs the prefetch executor 123 to obtain the data requested by each prefetch request from the remote data center 20 according to the sorted prefetch order.
(3) The prefetch executor 123 is configured to sequentially obtain, according to the instruction of the prefetch optimizer 122 and in the ordered prefetch order, the data requested by each prefetch request from the remote data center 20, and send the obtained data to the corresponding storage device 11 in the local data center 10 for storage. Illustratively, prefetch executor 123 may be one.
Optionally, a collector 124 is also included in the prefetch scheduler 12, which may also be referred to as an IO collector (IO collector). The collector 124 may be disposed on each storage device 11 or on a host on which the application is running. Collector 124 is configured to collect access requests for applications to access data on storage device 11 and send the access requests to prediction engine manager 121. Accordingly, prediction engine manager 121 receives the plurality of access requests from collector 124 and generates prefetch requests based on the access requests.
The collector 124 may be one or more. Illustratively, the collector 124 is one, and the one collector 124 is configured to collect access requests that occur on all storage devices 11 of the local data center 10. Further exemplary, the plurality of collectors 124, each collector 124 of the plurality of collectors 124 is configured to collect access requests that occur on one or more storage devices 11.
The collector 124 may also be located outside the prefetch scheduler 12, i.e. the collector 124 communicates with the prefetch scheduler 12, and the collector 124 may collect access requests from applications to the storage device 11. Also, in this implementation, the collector 124 may be disposed on each storage device 11, or on a host on which the application is running. For convenience, the collector 124 is located within the prefetch scheduler 12 as described below.
The present application provides a prefetch scheduling method, which is applicable to the architecture diagram shown in fig. 2, and which can be executed by the prefetch scheduler 12 shown in fig. 2 or fig. 3.
In the present application, the local data center 10 may also be referred to as a first data center, and the "local data center 10" in the present application may be replaced by a "first data center"; the remote data center 20 may also be referred to as a second data center, and the "remote data center 20" may be replaced with "second data center" in the present application.
A specific method may be explained with reference to a flowchart of a prefetch scheduling method exemplarily shown in fig. 4.
In step 400, the prefetch scheduler 12 obtains a plurality of access requests to a plurality of storage devices 11 in the local data center 10 applied in a history period (denoted as a first history period).
Wherein the first historical period may be considered a period of a preset duration prior to the current time. The prefetch scheduler 12 may obtain a plurality of access requests generated by the application during the first history period.
Each access request obtained by the prefetch scheduler 12 includes an identification of the access data and a characteristic of the access data applied to access the storage device 11 during the first history period. It will be appreciated that the identification of the access data is used to indicate what the application is to access, and that the characteristics of the access data may include the size of the data accessed by the application and the time at which the data was accessed. Optionally, the characteristics of the access data may further include a priority of the data accessed by the application.
Optionally, each access request obtained by the prefetch scheduler 12 may also display or implicitly carry an identifier of the storage device 11, where the identifier of the storage device 11 may be used to indicate on which storage device 11 the access data corresponding to the access request is stored, or may indicate which storage device 11 the application accesses the access data. It will be appreciated that each access request acquired by the prefetch scheduler 12 may indicate the following information: what data on which storage device 11 the application accessed at what time, the priority of the accessed data is.
Specifically, the prefetch scheduler 12 collects a plurality of access requests that the application transmits to the respective storage devices 11. Optionally, the prefetch scheduler 12 may further process the access request after collecting the access request of the application to the storage device 11, for example, the prefetch scheduler 12 explicitly increases the access time of the application in the access request after collecting the access request of the application to the storage device 11, or increases the identifier of the storage device 11 corresponding to the access request, etc.
It should be noted that this step 400 is an optional step. The prefetch scheduler 12 may execute step 401 after executing step 400, or the prefetch scheduler 12 may execute step 401 directly.
In step 401, the prefetch scheduler 12 obtains a plurality of prefetch requests based on the plurality of access requests.
The prefetch requests are first interpreted as follows:
each prefetch request of the plurality of prefetch requests includes a characteristic of prefetched data, wherein the prefetched data is data that is expected to be accessed by an application that requires prefetching. The characteristics of the prefetched data include the size of the prefetched data (i.e., the data size) and the expected accessed time of the prefetched data.
Wherein the predicted accessed time of the prefetched data is a point in time at which the prefetched data is accessed by the predicted application. For example, when the current time is 11-half, and the predicted accessed time of the prefetched data included in the prefetch request is 12:00, which indicates that the application is predicted to access the data at 12:00, the data should typically be retrieved from the remote data center 20 before 12.
Optionally, the characteristics of the prefetched data further include the priority of the prefetched data, and the prefetching scheduler 12 may preferentially obtain the prefetched data with higher priority. The priority of the prefetched data may be obtained by: the prefetch request corresponding to the prefetch data is confirmed based on which access requests are obtained, and then the priority of the prefetch data can be obtained based on the priority of the application generating the access requests. For example, the priority of the prefetched data may be the priority of the application, e.g., the priority of the application is priority 1, then the priority of the prefetched data is also priority 1; as another example, the priority of the prefetched data may have a correspondence with the priority of the application, for example, when the priority of the application is a low priority, the priority of the prefetched data is priority 1, when the priority of the application is a medium priority, the priority of the prefetched data is priority 2, and so on.
The characteristics of the prefetch data of each prefetch request include the priority of the prefetch data. For example, the plurality of prefetch requests are a prefetch request a, a prefetch request b, and a prefetch request c, respectively, wherein the prefetch request a includes prefetch data with priority 1, the prefetch request b includes prefetch data with priority 2, and the prefetch request c includes prefetch data with priority 3, wherein the priority 1 is lower than the priority 2, and the priority 2 is lower than the priority 3. Alternatively, the priority of the prefetch data in the part of the prefetch requests among the plurality of prefetch requests may be included in the characteristics of the prefetch data, and the priority of the prefetch data in the other part of the prefetch requests may not be included in the characteristics of the prefetch data, and at this time, the priority of the prefetch data in the characteristics of the prefetch data that does not include the priority of the prefetch data may be set to the lowest priority. For example, the plurality of prefetch requests are a prefetch request a, a prefetch request b, and a prefetch request c, respectively, wherein the prefetch request a includes prefetch data with priority 1, and the prefetch request b and the prefetch request c do not include prefetch data with priority 0, and the prefetch request b and the prefetch request c may include prefetch data with priority 0 being the lowest priority.
Optionally, each prefetch request also includes an identification of the prefetch data that is used by prefetch scheduler 12 to retrieve the corresponding prefetch data from remote data center 20. The identification of the prefetched data specifically includes an identification of a file system of a file to which the prefetched data belongs, a file identification of the file to which the prefetched data belongs, and a file offset of the prefetched data in the file to which the prefetched data belongs. Wherein the identification of the file system of the file to which the prefetched data belongs is used to indicate which file system of the remote data center 20 the prefetched data is in particular. The file identifier of the file to which the prefetched data belongs may specifically include a file name of the file to which the prefetched data belongs and a file directory of the file in the file system of the remote data center 20. For example, the file identifier of the file a includes a file name a1 and a file directory a2, that is, under the file directory a2 in the file system of the remote data center 20, there is a file with a file name a1, which is the file a.
It should be appreciated that the identification of the file system of the file to which the prefetch data belongs, the size of the prefetch data, the file identification of the file to which the prefetch data belongs, and the file offset of the prefetch data in the file to which the prefetch data belongs may collectively indicate the prefetch data. For example, the file system identifier of the file to which the prefetched data belongs is a file system a, and the file to which the prefetched data belongs is a file a, wherein the file identifier of the file a includes a file name a1 and a file directory a2; the file offset of the prefetch data in the file a is 5M, and the prefetch data has a size of 50M. File system a, file name a1, file directory a2, size 50M of the prefetched data, and file offset 5M collectively indicate that the prefetched data is the 5M-55M data in file a in file system a under file directory a 2.
Optionally, each prefetch request may also carry a destination address. Wherein the destination address is used to indicate the memory address of the prefetch scheduler 12 after the prefetch data is fetched. The destination address may be one of the identities of the plurality of storage devices 11 in the local data center 10. The identification of the storage device 11 may be one or a combination of a name, a number, a device serial number, and an IP address of the storage device 11. For example, in connection with the architecture of fig. 2, if the destination address included in a certain prefetch request is an identification of storage device a, the prefetch scheduler 12 may, after acquiring the prefetch data requested by the prefetch request, send the acquired prefetch data to storage device a for storage. By doing so, when the storage device a subsequently receives an application's access to the prefetched data, the data can be obtained directly from the local in response to the application, so that the latency of application access can be reduced.
After the plurality of prefetch requests are interpreted, an explanation is provided as to how prefetch scheduler 12 obtains an implementation of the plurality of prefetch requests based on the plurality of access requests that are obtained as follows.
From the foregoing description, the access rules of the application in the first history period are carried in the plurality of access requests (including which access requests are generated by the application in the first history period, which data of which storage device 11 is accessed by the application at what time, etc.), and then the prefetch scheduler 12 may obtain one or more prefetch requests according to the access requests. Alternatively, the prefetch scheduler 12 may predict the likely access laws of future applications, i.e. at what time in the future the application may access which data on which storage device 11, etc., based on the access laws of the plurality of access requests in the first history period.
Alternatively, the prefetch scheduler 12 may determine from the plurality of access requests which access requests related data may be accessed by the application in the future (i.e., determine which data to prefetch). The prefetch scheduler may then determine characteristics of the prefetch data in the corresponding prefetch requests based on the determined characteristics of the access data in the access requests. Optionally, the prefetch scheduler 12 may also obtain the destination address of the corresponding prefetch request according to the determined identity of the storage device 11 carried in these access requests. Optionally, the prefetch scheduler 12 may also determine the priority of the prefetched data in the corresponding prefetch requests according to the determined priority of the data accessed by the applications to which these access requests correspond.
Alternatively, the prefetch scheduler 12 may also manage a prediction engine instance, and the plurality of access requests may be input into the prediction engine instance to predict a plurality of prefetch requests. Based on the number of prediction engine instances managed in the prefetch scheduler 12, two cases are explained as follows.
Case 1, prefetch scheduler 12 may manage one prediction engine instance, i.e., prefetch scheduler 12 may predict prefetch requests through one prediction engine instance. In this case, the prefetch scheduler 12 may input a plurality of access requests (for example, all access requests generated in the local data center 10) of the application accessing the plurality of storage devices 11 in the first history period into the prediction engine instance, and accordingly, the prediction engine instance outputs a plurality of prefetch requests corresponding to the plurality of storage devices 11.
Specifically, the prediction engine instance may be considered a pre-trained prediction model. The prediction model is used for predicting and obtaining a plurality of prefetch requests according to a plurality of access requests. In one possible way of training the predictive model, the prefetch scheduler 12 initializes a predictive model and adjusts parameters in the predictive model through multiple iterations based on the training data to arrive at a predictive model that meets expectations. In each iteration, the prefetch scheduler 12 may input training data into the predictive model, and adjust parameters of the predictive model in the current round based on the training data and the output of the predictive model. The training data here may be access requests by the application to access a plurality of storage devices 11 in the local data center 10 during a certain history period (noted as a second history period). Wherein the second history period precedes the first history period. Optionally, the duration of the second history period is greater than the duration of the first history period. Optionally, after the trained prediction model is obtained, the parameters in the prediction model may be further optimized according to the access requests on the multiple storage devices 11 accessed by the application after training, so as to improve the prediction accuracy of the prediction model.
Case 2, prefetch scheduler 12 may manage multiple prediction engine instances. Illustratively, one prediction engine instance corresponds to one storage device 11, the prefetch scheduler 12 may input, for one storage device 11 (denoted as a first storage device 11), one or more access requests (denoted as first access requests) for an application to access the first storage device 11 into the prediction engine instance (denoted as a first prediction engine instance) corresponding to the first storage device 11, and correspondingly, the first prediction engine instance may output one or more prefetch requests (denoted as first prefetch requests). Alternatively, the prefetch scheduler 12 may determine the identity of the first storage device 11 (such as the IP address of the first storage device 11) as the destination address included in the first prefetch request.
Specifically, the first prediction engine instance may correspond to a pre-trained prediction model (denoted as a first prediction model). The first prediction model is used for predicting one or more first prefetch requests according to one or more first access requests. The manner in which the prefetch scheduler 12 trains to obtain the first prediction model, or the manner in which the prefetch scheduler 12 optimizes parameters in the first training model, is described in the above case 1, except that the training data herein is training data for the first storage device 11 (denoted as first training data), and the first training data may include a certain history period (denoted as a third history period), where the third history period precedes the first history period, and optionally, the duration of the third history period is greater than the duration of the first history period, where the first access request is applied to access the first storage device 11.
In addition, in other possible implementations, the prefetch scheduler 12 may also manage a plurality of prediction engine instances corresponding to the respective storage devices 11, each prediction engine instance corresponding to a respective access request queue, and each access request queue including a plurality of access requests therein. Still taking the first storage device 11 as an example, when the prefetch scheduler 12 obtains a plurality of first access requests corresponding to the first storage device 11, the prefetch scheduler may execute, for each first access request: determining which access request queue (denoted as a first access request queue) corresponding to the first storage device 11 should be placed in the first access request queue, and then inputting the first access request queue into a first prediction engine instance corresponding to the first access request queue, where correspondingly, the first prediction engine instance may obtain one or more first prefetch requests according to a plurality of first access requests contained in the first access request queue.
In determining which first access request queue corresponding to the first storage device 11 the first access request should be placed in, the prefetch scheduler 12 may allocate the first access request to one of the first access request queues according to a namespace of a file system corresponding to the access data requested by the first access request; alternatively, the prefetch scheduler 12 allocates the first access request to one of the first access request queues according to the directory in the namespace of the file system to which the access data requested by the first access request corresponds.
For example, the first storage device 11 includes a file system a, and the first storage device 11 receives a first access request a to a first access request d, where the first access request a and the first access request b are used to access a directory A1 in the file system a, and the first access request c and the first access request d are used to access a directory A2 in the file system a. The prefetch scheduler 12 places the first access request a and the first access request b in the first access request queue corresponding to the directory A1, and places the first access request c and the first access request d in the first access request queue corresponding to the directory A2.
Alternatively, the prefetch scheduler 12 may load multiple access requests contained in one access request queue into one bucket (bucket). Where a bucket is a container for carrying multiple access requests, multiple access requests in the bucket may be understood as one IO stream, one IO stream having some identical characteristic, i.e., multiple access requests in one bucket typically have some identical characteristic. For example, the IO stream in bucket 1 is used to request contiguous data (e.g., video data) under directory A1 in file system A, and the IO stream in bucket 2 is used to request non-contiguous data (e.g., web page data) under directory A2 in file system A.
Specifically, each of the plurality of first prediction engine instances corresponding to the first storage device 11 may correspond to a first prediction model trained in advance. The first prediction model is used for predicting one or more first prefetch requests according to one or more first access requests in a first prediction request queue corresponding to the first prediction model. The manner in which the prefetch scheduler 12 trains to obtain the first prediction model corresponding to each first prediction engine instance, or the manner in which the prefetch scheduler 12 optimizes parameters in the first training model corresponding to each first prediction engine instance, is described in the above case 1, except that the training data herein is first training data for each first prediction engine instance of the first storage device 11, where the first training data may include a certain history period (denoted as a fourth history period), and a plurality of first access requests for accessing a namespace of a file system on the first storage device 11, or a directory in the namespace of the file system are applied, where the fourth history period precedes the first history period, and optionally, the duration of the fourth history period is longer than the duration of the first history period.
In addition, the local data center 10 further includes a second storage device 11, and the second storage device 11 is different from the first storage device 11. Alternatively, the second storage device 11 and the first storage device 11 may be the same type or different types, and the second storage device 11 and the first storage device 11 may be manufactured by the same manufacturer or different manufacturers. The prefetch scheduler 12 may also generate a second prefetch request, where the destination address included in the second prefetch request is an identification of the second storage device 11, for instructing the prefetch scheduler 12 to store the prefetch data to the second storage device 11 after obtaining the prefetch data to be requested by the second prefetch request.
Alternatively, the prefetch scheduler 12 may input, for the second storage device 11, one or more access requests (denoted as second access requests) of the application accessing the second storage device 11 into a prediction engine instance (denoted as second prediction engine instance) corresponding to the second storage device 11, and accordingly, the second prediction engine instance may output one or more second prefetch requests, which may be specifically described in the above case 2, where "the first storage device 11" may be replaced with "the second storage device 11", and "the first prefetch request" may be replaced with "the second prefetch request", which will not be repeated.
In step 402, the prefetch scheduler 12 determines the prefetch order of the plurality of prefetch requests based on the characteristics of the prefetch data included in each prefetch request.
Where the prefetch scheduler 12 determines the prefetch order of the plurality of prefetch requests, it is understood that the prefetch scheduler 12 optimizes the original order of the plurality of prefetch requests to obtain the prefetch order after optimization. Where the original order is, for example, an order arranged by the generation time (or referred to as fetch time) of the prefetch request. For example, the original order obtained by the prefetch scheduler 12 according to the generation time of the prefetch request is prefetch request a, prefetch request b, prefetch request c, and the optimized prefetch order is prefetch request c, prefetch request b, prefetch request a.
After the plurality of prefetch requests are acquired, prefetch scheduler 12 may determine a prefetch order of the plurality of prefetch requests based on a characteristic that each of the plurality of prefetch requests includes prefetch data. In one example, prefetch scheduler 12 determines a prefetch order for the plurality of prefetch requests based on, in particular, the predicted accessed time of the prefetch data and the size of the prefetch data in each of the plurality of prefetch requests. In yet another example, prefetch scheduler 12 determines the prefetch order of the plurality of prefetch requests based on, in particular, the predicted accessed time of the prefetch data, the size of the prefetch data, and the priority of the prefetch data included in each of the plurality of prefetch requests.
For example, the prefetch scheduler 12 may optimize the order of the plurality of prefetch requests using a convex optimization algorithm. In connection with the above-mentioned prefetch request a, prefetch request b, prefetch request c, the prefetch scheduler 12 solves the optimal order of the three prefetch requests, i.e., prefetch request c, prefetch request b, prefetch request a, according to the convex optimization algorithm, in connection with the predicted accessed time of the prefetch data, the size of the prefetch data, and the priority of the prefetch data included in each of the prefetch requests a, prefetch request b, prefetch request c.
In step 403, the prefetch scheduler 12 sequentially processes the plurality of prefetch requests in a prefetch order.
Specifically, the prefetch scheduler 12 sequentially acquires the corresponding prefetch data from the remote data center 20 according to the prefetch order and the identification of the prefetch data included in each prefetch request, and transmits the acquired prefetch data to the corresponding storage device 11 for storage according to the destination address included in each prefetch request.
Taking the first storage device 11 included in the local data center 10 as an example, the identifier of the prefetched data included in the first prefetch request acquired by the prefetch scheduler 12 is the identifier of the first data, and the destination address included in the first prefetch request is the identifier of the first storage device 11, that is, the prefetched data required to be requested by the first prefetch request is the first data, the prefetch scheduler 12 may acquire the first data from the file system of the remote data center 20 according to the identifier of the first data, and send the acquired first data to the first storage device 11 for storage. In one possible implementation, the predicted accessed time of the prefetch data included in the first prefetch request is a first time, and the prefetch scheduler 12 may send the first data to the first storage device for storage prior to the first time. As such, when an application accesses the first data in the first storage device 11, the first storage device 11 may provide the locally stored first data to the application.
In the above-mentioned prefetch scheduling manner shown in steps 400 to 403, the prefetch scheduler 12 optimizes the prefetch sequence of the plurality of prefetch requests according to the size of the prefetch data and the expected accessed time in each prefetch request, so as to help meet the access requirement of the application, that is, when the application accesses a certain storage device 11 of the local data center 10, the data required to be accessed by the application is pre-stored in the storage device 11, thereby reducing the network delay of the application access. And the overall waiting time (or average waiting time of a plurality of prefetch requests) required for implementing the prefetch scheduler 12 to obtain the prefetch data corresponding to the plurality of prefetch requests from the remote data center 20 to the local data center 10 is minimum.
Further, when the prefetch scheduler 12 determines the prefetch sequence of the plurality of prefetch requests, the prefetch sequence determined by the prefetch scheduler 12 can be more accurate and meet the service requirement by combining the priorities of the data in the plurality of prefetch requests, which is helpful for realizing that the duration and/or bandwidth of the application for acquiring the data from the storage device 11 meets the service class protocol requirement of the application.
Moreover, compared with the scheme that a plurality of prefetch modules 111 exist in the local data center 10 in the prior art, one prefetch module 111 manages prefetch requests corresponding to only one storage device 11, when the prefetch requests are ordered, the prefetch scheduler 12 in the application pulls through the prefetch requests generated in the whole local data center 10 to be ordered together, so that the prefetch order is determined to be more accurate, and the prefetch data of all the prefetch requests can be acquired before the prefetch data are accessed by an application as much as possible.
It should be added that the prefetch scheduling method provided by the application can be a dynamic scheduling process. It will be appreciated that in steps 400 to 403, the prefetch scheduler 12 orders the M prefetch requests, and in the process of sequentially processing the M prefetch requests, the prefetch scheduler 12 receives a new prefetch request again (denoted as a third prefetch request), at which time the prefetch scheduler 12 has not yet completed processing the M prefetch requests, e.g., the number of prefetch requests that have not yet been processed is N (i.e., the current prefetch scheduler 12 has completed the first M-N of the M prefetch requests in the optimized prefetch order), where M and N are integers, and M is greater than 1, N is greater than 0 and less than M.
Optionally, the scheduling method further includes:
in step 404, the prefetch scheduler 12 obtains a third prefetch request, and determines the prefetch order of the third prefetch request and the N prefetch requests that have not yet been processed according to the characteristics of the prefetch data included in the third prefetch request.
It is explained in advance that the characteristics of the prefetched data in the third prefetch request specifically include the size of the prefetched data and the expected accessed time of the prefetched data, and optionally, the characteristics of the prefetched data in the third prefetch request further include the priority of the prefetched data, which can be specifically referred to the description of the characteristics of the prefetched data in step 401 above.
For convenience of description, the last prefetch request of the N prefetch requests that have not been processed in the prefetch order is called a fourth prefetch request, and the prefetch scheduler 12 may predict a prefetch time (denoted as a first prefetch time) when the prefetch data requested by the fourth prefetch request is prefetched to the corresponding storage device 11.
Subsequently, the prefetch scheduler 12 may determine a second prefetch time according to the first prefetch time and the size of the prefetch data included in the third prefetch request, wherein the second prefetch time is a time to prefetch the prefetch data requested by the third prefetch request onto the corresponding storage device 11 in a case where the third prefetch request is arranged after the fourth prefetch request.
For example, assuming that the first prefetch time is 12:00 and the size of the prefetch data included in the third prefetch request is 600M, the download speed of the prefetch data included in the third prefetch request is 10M/s, the prefetch scheduler 12 may determine that the required length (or download time length) for the prefetch scheduler 12 to prefetch the prefetch data requested by the third prefetch request to the corresponding storage device 11 is 60s according to the size 600M of the prefetch data and the download speed of 10M/s, and accordingly, the prefetch scheduler 12 determines that the time for prefetching the prefetch data requested by the third prefetch request to the corresponding storage device 11 (i.e., the second prefetch time) is 12:01 in the case where the third prefetch request is arranged after the fourth prefetch request. Wherein the download speed of the prefetched data is associated with the network bandwidth.
The following is a description of two cases based on the relationship between the obtained second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request, as follows:
in case one, the prefetch scheduler 12 may arrange the third prefetch request after the fourth prefetch request when the second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request satisfy the preset condition.
In the second case, when the second prefetch time and the predicted accessed time of the prefetch data included in the third prefetch request do not satisfy the preset condition, the prefetch scheduler 12 redetermines the prefetch order of the third prefetch request and the N unprocessed prefetch requests according to the characteristics of the prefetch data included in the third prefetch request, so that the third prefetch request and the N unprocessed prefetch requests each satisfy the preset condition.
In one possible implementation, the preset condition is specifically that the prefetch time corresponding to the prefetch request is before the predicted accessed time of the prefetch data in the prefetch request; or the preset condition is specifically that the prefetch time corresponding to the prefetch request is after the predicted accessed time of the prefetch data in the prefetch request, and the time difference between the prefetch time and the predicted accessed time is smaller than the threshold value. The prefetch time corresponding to the prefetch request is the time for prefetching the prefetch data in the prefetch request into the corresponding storage device 11.
In the second case, if the third prefetch request and the N unprocessed prefetch requests cannot meet the preset conditions in the process of redefining the prefetch order by the prefetch scheduler 12, the prefetch scheduler 12 may adjust the threshold according to the preset step size first and redetermine the prefetch order. For example, when the threshold value in the preset condition is 1ms and the prefetch scheduler 12 cannot achieve that the third prefetch request and the N unprocessed prefetch requests meet the preset condition in the process of redefining the prefetch order, the prefetch scheduler 12 may adjust the threshold value 1ms to 2ms according to the preset step (for example, 1 ms), and then redetermine the prefetch order until the third prefetch request and the N unprocessed prefetch requests meet the preset condition.
It should be added that the prefetch scheduler 12 may sequentially acquire a plurality of third prefetch requests in a preset period, and the prefetch scheduler 12 may sequentially execute the plurality of third prefetch requests in the order of acquisition time: a prefetch order of the third prefetch request and the plurality of prefetch requests that have not been processed is determined based on characteristics of the prefetch data included in the third prefetch request.
For example, the prefetch scheduler 12 sequentially fetches three third prefetch requests in a preset period, namely, a third prefetch request 1, a third prefetch request 2, and a third prefetch request 3 in the fetch order. The prefetch scheduler 12 first determines the prefetch order of the third prefetch request 1 and the N prefetch requests that have not yet been processed. Prefetch scheduler 12 again determines the prefetch order of third prefetch request 2 and the n+1 prefetch requests (including N prefetch requests and third prefetch request 1) that have not yet been processed. Prefetch scheduler 12 again determines the prefetch order of third prefetch request 3 and the n+2 prefetch requests (including N prefetch requests, third prefetch request 1, and third prefetch request 2) that have not yet been processed.
In another implementation manner, the acquired plurality of third prefetch requests may be placed after the N prefetch requests that have not been processed in sequence according to the order of the acquisition time, and it is determined whether the prefetch time corresponding to each third prefetch request satisfies the preset condition. If the pre-fetching time corresponding to each third pre-fetching request meets the preset condition, sequentially placing a plurality of third pre-fetching requests after N pre-fetching requests which are not processed according to the acquisition time sequence; if the prefetching time corresponding to one or more third prefetching requests does not meet the preset condition, the third prefetching requests and the N unprocessed prefetching requests are reordered according to the characteristics of data included in each third prefetching request in the third prefetching requests and the characteristics of data included in each unprocessed prefetching request in the N prefetching requests, so as to obtain the prefetching sequence of the third prefetching requests and the N unprocessed prefetching requests.
It should be noted that the above embodiment assumes that the prefetch scheduler 12 does not process the completion prefetch request in the process of acquiring the plurality of third prefetch requests and in the process of determining the prefetch order of the plurality of third prefetch requests and the N prefetch requests that have not been processed yet. Of course, the present application does not exclude that in both processes, the prefetch scheduler 12 completes the previous prefetch request or requests in the current prefetch order.
It will be appreciated that step 401 is also a dynamic adjustment process, in which the prefetch scheduler 12 receives a new prefetch request during the sequential processing of the prefetch requests, and the prefetch scheduler 12 composes a plurality of prefetch requests (i.e., the plurality of prefetch requests in step 401) from the new prefetch request and the prefetch request that has not been processed at present, and the prefetch scheduler 12 reorders the plurality of prefetch requests.
The function of the modules/units in the prefetch scheduler 12 in steps 400-404 described above is explained below in connection with the schematic diagram of the prefetch scheduler 12 shown in fig. 3.
(a) Collector 124 may be configured to obtain a plurality of access requests to a plurality of storage devices 11 in local data center 10 by an application during a first history period, and to send the plurality of access requests to prediction engine manager 121. Optionally, the collector 124 may further collect the access request of the application to the storage device 11, and then send the access request to the prediction engine manager 121 after further processing. For a specific implementation of the collector 124 obtaining multiple access requests, reference may be made to step 400 above, and it may be considered that the collector 124 is configured to perform step 400 above.
(b) The prediction engine manager 121 may be configured to predict a plurality of prefetch requests according to a plurality of access requests sent by the collector 124, and referring specifically to the description of step 401 above, it may be considered that the prediction engine manager 121 is configured to perform step 401 above. The prediction engine manager 121 may also send the predicted plurality of prefetch requests to the prefetch optimizer 122.
(c) Prefetch optimizer 122 may be configured to determine a prefetch order of the plurality of prefetch requests based on characteristics of the prefetch data included in each of the plurality of prefetch requests, the manner in which the prefetch order is determined may be described with particular reference to step 402. The prefetch optimizer 122 may be considered to be operable to perform step 402 described above.
Prefetch optimizer 122 may also instruct prefetch executor 123 to sequentially obtain prefetch data corresponding to each prefetch request from remote data center 20 in a prefetch order. Specifically, when the prefetch optimizer 122 determines that a prefetch request needs to be processed according to the prefetch order, the prefetch optimizer may send an identifier of the prefetch data in the prefetch request to the prefetch executor 123, so as to instruct the prefetch executor 123 to request the prefetch data from the remote data center 20 according to the identifier of the prefetch data.
(d) Prefetch executor 123 may request prefetch data from remote data center 20 according to the instructions of prefetch optimizer 122, as described in step 403 for a specific implementation. It can be said that the prefetch executor 123 performs the above-described step 403.
The interaction of prefetch optimizer 122 and prefetch executor 123 is described in addition to:
illustratively, the prefetch order determined by prefetch optimizer 122 is prefetch request c, prefetch request b, prefetch request a. Prefetch optimizer 122 may instruct prefetch executor 123 to sequentially obtain prefetch data of the desired request of each prefetch request from remote data center 20 in the prefetch order of prefetch request c, prefetch request b, prefetch request a. It will be appreciated that the function of the prefetch executor 123 is mainly to obtain, from the remote data center 20, the prefetch data required for a certain prefetch request based on the instruction of the prefetch optimizer 122, and store the requested prefetch data in the corresponding storage device 11. From the perspective of prefetch optimizer 122, prefetch optimizer 122 may consider a prefetch request as being completed after instructing prefetch executor 123 to fetch prefetch data from remote data center 20 that is required for the prefetch request, so that prefetch optimizer 122 may determine which prefetch request(s) that have been completed are currently executed, and which prefetch request(s) that have not been completed. Thus, when the prefetch scheduler 12 is processing a plurality of prefetch requests, if a new prefetch request (i.e., a third prefetch request) is received, the prefetch order of the new prefetch request and the prefetch request that has not been processed can be dynamically adjusted according to the execution of the current prefetch request.
After the prediction engine manager 121 predicts the third prefetch request again, the prediction engine manager 121 sends the third prefetch request to the prefetch optimizer 122, and the prefetch optimizer 122 reorders the prefetch requests according to the third prefetch request and the prefetch request that is not yet processed at present, which is described in step 404.
It should also be added that, in the case that a plurality of prediction engine managers 121 are included in the prefetch scheduler 12, the plurality of prediction engine managers 121 may correspond to the same prefetch optimizer 122 and to the same prefetch executor 123, specifically referring to the schematic diagram of the prefetch scheduler exemplarily shown in fig. 5, that is, the prefetch scheduler 12 deployed in the local data center 10 includes a plurality of prediction engine managers 121, a prefetch optimizer 122 and a prefetch executor 123.
The local data center 10, the remote data center 20, the storage devices 11 in the local data center 10, and the applications running in the local data center 10 shown in fig. 5 are all described with reference to the embodiment of fig. 1; the description of the prefetch scheduler 12, the prediction engine manager 121, the prefetch optimizer 122, the prefetch executor 123, and the collector 124 in the local data center 10 are described with reference to the related embodiments of fig. 2 to 4.
Prefetch optimizer 122 may receive prefetch requests from n prediction engine managers 121, and each prediction engine manager 121 may send one or more prefetch requests to prefetch optimizer 122, i.e., prefetch optimizer 122 may obtain m prefetch requests from n prediction engine managers 121 altogether, where m is greater than or equal to n, where m and n are both positive integers.
Accordingly, prefetch optimizer 122 may determine an order of the m prefetch requests based on characteristics of the prefetch data contained in each of the m prefetch requests. The m prefetch requests may correspond to the same or different remote data centers 20, and the prefetch optimizer 122 sequentially instructs the prefetch executor 123 to fetch data from the remote data center 20 to which the prefetch requests correspond in the order of the m prefetch requests.
Illustratively, the prefetch optimizer 122 obtains 4 prefetch requests (respectively indicated as prefetch request 1 to prefetch request 4) from the plurality of prediction engine managers 121 in total, and the prefetch optimizer 122 determines the prefetch order such as prefetch request 4, prefetch request 3, prefetch request 2 and prefetch request 1 according to the characteristics of the prefetch data in each prefetch request.
Further, the remote data centers 20 corresponding to the prefetch request 4 and the prefetch request 3 are denoted as remote data centers 201, the remote data center 20 corresponding to the prefetch request 2 is denoted as remote data center 202, and the remote data center 20 corresponding to the prefetch request 1 is denoted as remote data center 203. Prefetch optimizer 122 instructs prefetch executor 123 to fetch the data requested by prefetch request 4 from remote data center 201; prefetch optimizer 122, in turn, instructs prefetch executor 123 to fetch the data requested by prefetch request 3 from remote data center 201; prefetch optimizer 122, in turn, instructs prefetch executor 123 to fetch the data requested by prefetch request 2 from remote data center 202; prefetch optimizer 122, in turn, instructs prefetch executor 123 to fetch the data requested by prefetch request 1 from remote data center 203.
Based on the architecture diagram of the application access cloud data shown in fig. 2 and the architecture diagram of the prefetch scheduler 12 shown in fig. 3, the present application provides an interface protocol related to the prefetch scheduling method.
The interaction between the remote data center 20 and the local data center 10 may be based on a cloud data management interface (cloud data management interface, CDMI) protocol, and in particular, the remote data center 20 may communicate with the prefetch executor 123 of the local data center 10 through the CDMI protocol.
In addition, within the local data center 10, the collector 124 and the prediction engine manager 121 may also communicate via the CDMI protocol.
Illustratively, the interaction between the prediction engine manager 121 in the prefetch scheduler 12 and the prefetch optimizer 122 may be based on the hypertext transfer protocol (hyper text transfer protocol, HTTP) protocol. Specifically, the prediction engine manager 121 includes an HTTP protocol-based prefetch request information encapsulation interface, and the prefetch optimizer 122 includes an HTTP protocol-based prefetch request information parsing interface. It will be appreciated that the prediction engine manager 121 encapsulates information such as an identification of a file system of a file to which the prefetch data belongs, a file identification of the file to which the prefetch data belongs, a file offset of the prefetch data in the file to which the prefetch data belongs, a size of the prefetch data, and an expected accessed time through the prefetch request information encapsulation interface, thereby obtaining the prefetch request. Accordingly, the prefetch optimizer 122 parses the prefetch request through the prefetch request information parsing interface after receiving the prefetch request, and then sorts the plurality of prefetch requests.
It should be appreciated that the above-described interface protocol is merely an example, and that the protocol of interaction between the local data center 10 and the remote data center 20, between the prefetch scheduler of the local data center 10 and other modules (such as storage devices), and between various sub-modules within the prefetch scheduler may be other forms, and the application is not limited in this regard.
Based on the foregoing and the same, the present application further provides a possible structure of the prefetch scheduler 12, where the prefetch scheduler 12 includes a processing module and a transceiver module, where the processing module is configured to perform a processing function of the prefetch scheduler 12 (such as one or more of the prediction engine manager 121, the prefetch optimizer 122, the prefetch executor 123, or the collector 124) in the foregoing method embodiment, and, for example, the processing module is configured to obtain a plurality of prefetch requests, and determine a prefetch order of the plurality of prefetch requests according to a feature of prefetch data included in each of the plurality of prefetch requests. The transceiver module may be configured to perform the transceiver functions of the prefetch scheduler 12 (e.g., one or more of the prediction engine manager 121, the prefetch optimizer 122, the prefetch executor 123, or the collector 124) in the above-described method embodiments, e.g., the transceiver module may be configured to obtain prefetch data from the remote data center 20 according to a plurality of prefetch requests, etc.
Based on the foregoing and the same, as illustrated in fig. 6, an apparatus 600 for prefetch scheduling according to an embodiment of the present application is shown, and the apparatus 600 shown in fig. 6 may be an implementation of a hardware circuit of the prefetch scheduler 12 in the foregoing method embodiment. The apparatus may be adapted to perform the functions of the prefetch scheduler 12 in the method embodiments described above in the flowcharts shown above.
For ease of illustration, fig. 6 shows only the major components of the device 600.
The apparatus 600 shown in fig. 6 comprises a communication interface 610, a processor 620 and a memory 630, wherein the memory 630 is used for storing program instructions and/or data. Processor 620 may operate in conjunction with memory 630. Processor 620 may execute program instructions stored in memory 630. The processor 620 is configured to perform the processing functions of the prefetch scheduler 12 (e.g., one or more of the prediction engine manager 121, the prefetch optimizer 122, the prefetch executor 123, or the collector 124) in the above-described method embodiments when the instructions or programs stored in the memory 630 are executed, such as to obtain a plurality of prefetch requests, determine a prefetch order of the plurality of prefetch requests according to the characteristics of the prefetch data included in each prefetch request, and sequentially process the plurality of prefetch requests according to the prefetch order. The communication interface 610 is configured to perform the transceiving functions of the prefetch scheduler 12 (such as one or more of the prediction engine manager 121, the prefetch optimizer 122, the prefetch executor 123, or the collector 124) in the above-described method embodiments, for example, sending the obtained prefetch data to a storage device corresponding to the prefetch data.
Memory 630 is coupled to processor 620. The coupling in the embodiments of the present application is an indirect coupling or communication connection between devices, units, or modules, which may be in electrical, mechanical, or other forms for information interaction between the devices, units, or modules. At least one of the memories 630 may be included in the processor 620.
In embodiments of the present application, the communication interface may be a transceiver, a circuit, a bus, a module, or other type of communication interface. In the embodiment of the application, when the communication interface is a transceiver, the transceiver can comprise an independent receiver and an independent transmitter; a transceiver integrating the transceiving function, or a communication interface, is also possible.
The apparatus 600 may also include a communication line 640. Wherein the communication interface 610, the processor 620 and the memory 630 may be connected to each other by a communication line 640; the communication line 640 may be a peripheral component interconnect standard (peripheral component interconnect, PCI) bus or an extended industry standard architecture (extended industry standard architecture, EISA) bus, among others. Communication lines 640 may be divided into address buses, data buses, control buses, and the like. For ease of illustration, only one thick line is shown in fig. 6, but not only one bus or one type of bus.
Based on the foregoing and the same, the present application provides a computer-readable storage medium having stored therein a computer program or instructions which, when executed by an apparatus, cause the apparatus to perform the functions of the prefetch scheduler in the method embodiments described above.
Based on the foregoing and the same, the present application provides a computer program product comprising a computer program or instructions which, when executed by an apparatus, cause the apparatus to perform the functions of a prefetch scheduler in the method embodiments described above.
It will be appreciated that the various numerical numbers referred to in the embodiments of the present application are merely for ease of description and are not intended to limit the scope of the embodiments of the present application. The sequence number of each process does not mean the sequence of the execution sequence, and the execution sequence of each process should be determined according to the function and the internal logic.
It will be apparent to those skilled in the art that various modifications and variations can be made to the present application without departing from the scope of the application. Thus, it is intended that the present application also include such modifications and alterations insofar as they come within the scope of the appended claims or the equivalents thereof.

Claims (24)

1. A prefetch scheduling method applied to a prefetch scheduler, comprising:
obtaining a plurality of prefetch requests, wherein each of the prefetch requests includes a characteristic of prefetch data, the characteristic of prefetch data including a size of the prefetch data and an estimated accessed time of the prefetch data;
determining the prefetching sequence of the plurality of prefetch requests according to the characteristics of the prefetched data included in each prefetch request;
and sequentially processing the plurality of prefetch requests according to the prefetch sequence.
2. The method of claim 1, wherein the prefetch scheduler is located at a first data center, the first data center further comprising a plurality of storage devices, the plurality of prefetch requests being derived based on access requests by applications to the plurality of storage devices.
3. The method of claim 2, wherein each of the prefetch requests further includes an identification of the prefetch data; the sequentially processing the plurality of prefetch requests according to the prefetch order includes:
and acquiring the prefetched data from a second data center according to the prefetched sequence and the identification of the prefetched data included in each prefetched request, wherein the first data center and the second data center are different.
4. The method of claim 3, wherein each of the prefetch requests further includes a destination address indicating a storage address after the prefetch data is acquired, the destination address being one of the identifications of the plurality of storage devices;
the plurality of prefetch requests comprise a first prefetch request, the identification of prefetch data included in the first prefetch request is the identification of first data, and the destination address included in the first prefetch request is the identification of a first storage device in the plurality of storage devices;
the method further comprises the steps of:
and sending the acquired first data to the first storage device for storage, so that the first storage device can acquire the first data response from the local place to the application when receiving an access request of the application to the first data.
5. The method of claim 4, wherein the predicted accessed time for the prefetch data included in the first prefetch request is a first time;
the sending the acquired first data to the first storage device for storage includes:
the first data is sent to the first storage device for storage before the first time.
6. The method of claim 4 or 5, wherein the plurality of prefetch requests further includes a second prefetch request, the second prefetch request including a destination address that is an identification of a second storage device of the plurality of storage devices, the second storage device being different from the first storage device.
7. The method of any of claims 2-6, wherein prior to the obtaining the plurality of prefetch requests, the method further comprises:
acquiring a plurality of access requests applied to the plurality of storage devices in a history period;
the obtaining a plurality of prefetch requests includes:
the plurality of prefetch requests are acquired based on the plurality of access requests.
8. The method of claim 7, wherein each access request of the plurality of access requests carries a characteristic of an application accessing access data on the plurality of storage devices in the history period, the characteristic of the access data including a size of the access data and an accessed time of the access data;
the characteristics of the prefetch data in the plurality of prefetch requests are derived based on the characteristics of the access data in the plurality of access requests.
9. The method of claim 7 or 8, wherein each of the access requests carries an identification of one of the plurality of storage devices; the destination address in the plurality of prefetch requests is derived based on an identification of the storage device included in the plurality of access requests.
10. The method of any of claims 7-9, wherein the characteristics of the pre-fetch data further comprise a priority of the pre-fetch data; the priority of the prefetch data in the plurality of prefetch requests is derived based on the priority of the application that generated the plurality of access requests.
11. The method of any one of claims 1-10, wherein the method further comprises:
acquiring a third prefetch request, wherein the third prefetch request is acquired in the process of sequentially processing the prefetch requests according to the prefetch sequence;
and determining the prefetching sequence of the unprocessed prefetching requests in the third prefetching request and the plurality of prefetching requests according to the characteristics of the prefetching data included in the third prefetching request.
12. A prefetch scheduler, comprising:
a prediction engine manager for obtaining a plurality of prefetch requests, wherein each of the prefetch requests includes a characteristic of prefetch data, the characteristic of prefetch data including a size of the prefetch data and a predicted accessed time of the prefetch data;
A prefetch optimizer configured to determine a prefetch order of the plurality of prefetch requests according to characteristics of prefetch data included in each of the prefetch requests;
and the prefetch executor is used for sequentially processing the plurality of prefetch requests according to the prefetch sequence.
13. The prefetch scheduler of claim 12, wherein the prefetch scheduler is located at a first data center, the first data center further comprising a plurality of storage devices, the plurality of prefetch requests being derived based on access requests of an application to the plurality of storage devices.
14. The prefetch scheduler of claim 13, wherein each of the prefetch requests further includes an identification of the prefetch data;
the prefetch executor is specifically configured to, when sequentially processing the plurality of prefetch requests according to the prefetch order:
and acquiring the prefetched data from a second data center according to the prefetched sequence and the identification of the prefetched data included in each prefetched request, wherein the first data center and the second data center are different.
15. The prefetch scheduler of claim 14, wherein each of the prefetch requests further includes a destination address indicating a storage address after the prefetch data is acquired, the destination address being one of the identifications of the plurality of storage devices;
The plurality of prefetch requests comprise a first prefetch request, the identification of prefetch data included in the first prefetch request is the identification of first data, and the destination address included in the first prefetch request is the identification of a first storage device in the plurality of storage devices;
the prefetch executor is further configured to:
and sending the acquired first data to the first storage device for storage, so that the first storage device can acquire the first data response from the local place to the application when receiving an access request of the application to the first data.
16. The prefetch scheduler of claim 15, wherein the predicted accessed time for the prefetch data included in the first prefetch request is a first time;
the prefetch executor is specifically configured to, when sending the obtained first data to the first storage device for storage: the first data is sent to the first storage device for storage before the first time.
17. The prefetch scheduler of claim 15 or 16, wherein the plurality of prefetch requests further comprises a second prefetch request, the destination address included in the second prefetch request being an identification of a second storage device of the plurality of storage devices, the second storage device being different from the first storage device.
18. The prefetch scheduler of any of claims 13-17, wherein the prediction engine manager, prior to obtaining the plurality of prefetch requests, is further to: acquiring a plurality of access requests applied to the plurality of storage devices in a history period;
the prediction engine manager is specifically configured to, when acquiring a plurality of prefetch requests: the plurality of prefetch requests are acquired based on the plurality of access requests.
19. The prefetch scheduler of claim 18, wherein each access request of the plurality of access requests carries a characteristic of an application accessing access data on the plurality of storage devices in the history period, the characteristic of the access data including a size of the access data and an accessed time of the access data;
the characteristics of the prefetch data in the plurality of prefetch requests are derived based on the characteristics of the access data in the plurality of access requests.
20. The prefetch scheduler of claim 18 or 19, wherein each of the access requests carries an identification of one of the plurality of storage devices; the destination address in the plurality of prefetch requests is derived based on an identification of the storage device included in the plurality of access requests.
21. The prefetch scheduler according to any of claims 18-20, wherein the characteristics of the prefetch data further include a priority of the prefetch data; the priority of the prefetch data in the plurality of prefetch requests is derived based on the priority of the application that generated the plurality of access requests.
22. The prefetch scheduler of any of claims 12-21, wherein the prediction engine manager is further to: acquiring a third prefetch request, wherein the third prefetch request is acquired in the process of sequentially processing the prefetch requests according to the prefetch sequence;
the prefetch optimizer is further configured to: and determining the prefetching sequence of the unprocessed prefetching requests in the third prefetching request and the plurality of prefetching requests according to the characteristics of the prefetching data included in the third prefetching request.
23. A computer readable storage medium, characterized in that the computer readable storage medium has stored therein a computer program or instructions which, when executed by an apparatus, implement the method of any of claims 1 to 11.
24. A computing device comprising a processor coupled to a memory for storing a computer program, the processor for executing the computer program stored in the memory to cause the computing device to perform the method of any one of claims 1 to 11.
CN202210560367.3A 2022-05-23 2022-05-23 Prefetch scheduling method and prefetch scheduler Pending CN117149449A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210560367.3A CN117149449A (en) 2022-05-23 2022-05-23 Prefetch scheduling method and prefetch scheduler
PCT/CN2023/079293 WO2023226505A1 (en) 2022-05-23 2023-03-02 Prefetch scheduling method and prefetch scheduler

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210560367.3A CN117149449A (en) 2022-05-23 2022-05-23 Prefetch scheduling method and prefetch scheduler

Publications (1)

Publication Number Publication Date
CN117149449A true CN117149449A (en) 2023-12-01

Family

ID=88910595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210560367.3A Pending CN117149449A (en) 2022-05-23 2022-05-23 Prefetch scheduling method and prefetch scheduler

Country Status (2)

Country Link
CN (1) CN117149449A (en)
WO (1) WO2023226505A1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
CN102123318B (en) * 2010-12-17 2014-04-23 曙光信息产业(北京)有限公司 IO acceleration method of IPTV application
GB2509765B (en) * 2013-01-15 2015-07-15 Imagination Tech Ltd Improved control of pre-fetch traffic
US9990296B2 (en) * 2015-07-31 2018-06-05 Oracle International Corporation Systems and methods for prefetching data

Also Published As

Publication number Publication date
WO2023226505A1 (en) 2023-11-30

Similar Documents

Publication Publication Date Title
CN113243005B (en) Performance-based hardware emulation in an on-demand network code execution system
US11526434B1 (en) Network-level garbage collection in an on-demand code execution system
US8756209B2 (en) Computing resource allocation based on query response analysis in a networked computing environment
CN109886859B (en) Data processing method, system, electronic device and computer readable storage medium
US8977723B2 (en) Cloud based application fragmentation
US10193973B2 (en) Optimal allocation of dynamically instantiated services among computation resources
CN108762885B (en) Virtual machine creating method and device, management equipment and terminal equipment
US10956214B2 (en) Time frame bounded execution of computational algorithms
US10824339B1 (en) Snapshot-based garbage collection in an on-demand code execution system
CN112148468B (en) Resource scheduling method and device, electronic equipment and storage medium
CN107146623B (en) Speech recognition method, device and system based on artificial intelligence
CN112433920A (en) Buried point data reporting method, device, equipment and medium
US9462077B2 (en) System, method, and circuit for servicing a client data service request
CN108989471A (en) The management method and device of log in network system
CN115827250A (en) Data storage method, device and equipment
US11755534B2 (en) Data caching method and node based on hyper-converged infrastructure
CN108228323B (en) Hadoop task scheduling method and device based on data locality
CN117149449A (en) Prefetch scheduling method and prefetch scheduler
CN118034892A (en) Method for realizing multi-core concurrent load of cluster file system client
CN116760821A (en) Distributed file downloading method, system, electronic equipment and storage medium
CN117950587A (en) Model training method and device, electronic equipment and storage medium
US10616317B2 (en) Method and system for affinity load balancing
CN116974748A (en) Resource scheduling method, node, device, medium and program product
CN114579269B (en) Task scheduling method and device
KR102642396B1 (en) Batch scheduling device for deep learning inference model using limited gpu resources

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination