IP Library Granted Patent US 12,314,610
Granted Patent B2
US 12,314,610 · App. 18/716,278 · Granted May 27, 2025

Sequential read prefetching method and apparatus, device, and medium

Inventors: Yingjie Zhang (Jiangsu, CN); Xiangrui Meng (Jiangsu, CN)
Assignee: SUZHOU METABRAIN INTELLIGENT TECHNOLOGY CO., LTD.
G06F3/0659G06F3/0604G06F3/0676
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,314,610
App. No.
18/716,278
Granted
May 27, 2025
Kind
B2
Abstract

The present application provides a sequential read prefetching method and apparatus based on an Inspur Cluster File System (ICFS) distributed block storage system, a device, and a non-volatile readable storage medium. The method includes: in response to an OSD receiving a read request issued by a client, determining whether the read request is a sequential read request; in response to the read request being the sequential read request, creating a prefetching sliding window according to a data object to be read in the read request; in response to completion of the creation of the prefetching sliding window, calculating, according to the data object to be read in the read request, anew volume object needing to be prefetched; and adding the calculated new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching.

Claims (64)

1. A sequential read prefetching method, comprising the following steps:

in response to an Object-based Storage Device (OSD) receiving a read request issued by a client, determining whether the read request issued by the client is a sequential read request;

in response to the read request issued by the client being the sequential read request, creating a prefetching sliding window according to a data object to be read in the read request, wherein each sliding window records a position that has been read and a prefetching position that has been read of a corresponding sequential read service, and a queue composed of objects that need to be subsequently prefetched but have not been prefetched;

in response to receiving a new sequential read object, creating a new prefetching sliding window or updating a position that has been read of the prefetching sliding window;

in response to detecting that a time period during which the position that has been read of the prefetching sliding window has not been updated reaches a preset time period, deleting the prefetching sliding window;

in response to completion of the creation of the prefetching sliding window, calculating, according to the data object to be read in the read request, at least one new volume object needing to be prefetched; and

adding the new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching.

2. The method according to claim 1 , further comprising:

in response to the execution of the prefetching, saving at least one prefetching data object into a cache of an internal memory.

3. The method according to claim 2 , wherein the step of in response to the execution of the prefetching, saving at least one prefetching data object into a cache of an internal memory comprises:

in response to the execution of the prefetching, acquiring the prefetching data object from a magnetic disk; and

saving the prefetching data object into the cache of the internal memory.

4. The method according to claim 2 , wherein after the step of in response to the execution of the prefetching, saving at least one prefetching data object into a cache of an internal memory, the method further comprises:

in response to a subsequent sequential read service reading the new volume object needing to be prefetched, reading the prefetching data object from the cache of the internal memory.

5. The method according to claim 2 , wherein after the step of in response to the execution of the prefetching, saving at least one prefetching data object into a cache of an internal memory, the method further comprises:

in response to the new volume object needing to be prefetched receiving a write request, updating the prefetching data object to be at least one newly written data.

6. The method according to claim 1 , wherein the in response to completion of the creation of the prefetching sliding window, calculating, according to the data object to be read in the read request, at least one new volume object needing to be prefetched comprises:

determining a range of prefetching data objects according to the data object to be read in the read request;

constructing object names of all objects within the range of prefetching data objects; and

in response to placement groups (PGs) calculated from the constructed object names through a Crush algorithm being located in a PG distribution diagram of the OSD, determining that data objects corresponding to the object names are volume objects needing to be prefetched.

7. The method according to claim 6 , wherein before the step of determining a range of prefetching data objects according to the data object to be read in the read request, the method further comprises:

acquiring object that are closest to read data; and

setting the closest object to be a prefetching data object.

8. The method according to claim 1 , wherein after the step of adding the calculated new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching, the method further comprises:

updating a prefetching position that has been read of the prefetching sliding window.

9. The method according to claim 1 , wherein the adding the calculated new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching comprises:

creating a separate thread to execute the prefetching; and

acquiring data objects needing to be prefetched from the queue of objects to be prefetched of the prefetching sliding window, executing prefetching, and cyclically processing all the objects needing to be prefetched.

10. The method according to claim 1 , wherein after the step of adding the calculated new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching, the method further comprises:

in response to the execution of prefetching, selection of prefetching data object, and selection of no prefetching data object timing out, updating corresponding statistical items.

11. The method according to claim 10 , wherein after the step of in response to the execution of prefetching, selection of prefetching data object, and selection of no prefetching data object timing out, updating corresponding statistical items, the method further comprises:

sending updated statistical items to an external interface.

12. The method according to claim 1 , wherein after the step of in response to a OSD receiving a read request issued by a client, determining whether the read request issued by the client is a sequential read request, the method further comprises:

in response to the OSD receiving the read request issued by the client, analyzing a data object name of the data object to be read; and

determining a volume identity document according to the data object name.

13. The method according to claim 12 , wherein after the step of determining a volume identity document according to the data object name, the method further comprises:

determining a prefetching processor according to the volume identity document.

14. The method according to claim 13 , wherein the prefetching processor comprises a data structure that records states of all sequential read services on a specific volume.

15. The method according to claim 12 , wherein after the step of determining a volume identity document according to the data object name, the method further comprises:

in response to the data object being identified for multiple times that it has a sequential read request in the object, sending the data object to a prefetching processor exclusive to the volume for processing, according to an identity document of a volume.

16. The method according to claim 1 , wherein the step of determining whether the read request issued by the client is a sequential read request comprises:

determining, according to the read request issued by the client, whether the client is located in a sequential read scenario; and

determining, according to a determining result, whether the read request is the sequential read request.

17. The method according to claim 1 , wherein the step of in response to the read request issued by the client being the sequential read request, creating a prefetching sliding window according to a data object to be read in the read request comprises:

creating a plurality of prefetching sliding windows according to the data object to be read in the read request; and

recording a position that has been read and a prefetching position that has been read of a corresponding sequential read service in each sliding window, and a queue composed of objects that need to be subsequently prefetched but have not been prefetched.

18. The method according to claim 1 , wherein after the step of adding the calculated new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching, the method further comprises:

deleting the volume object which has been prefetched after execution from queue of objects to be prefetched of the prefetching sliding window.

19. A computer device, comprising:

at least one processor; and

at least one memory, wherein the at least one memory stores computer-readable instructions, and the computer-readable instructions, when executed by the at least one processor, cause the at least one processor to perform following actions:

in response to an Object-based Storage Device (OSD) receiving a read request issued by a client, determining whether the read request issued by the client is a sequential read request;

in response to the read request issued by the client being the sequential read request, creating a prefetching sliding window according to a data object to be read in the read request, wherein each sliding window records position that has been read and a prefetching position that has been read of corresponding sequential read service, and a queue composed of objects that need to be subsequently prefetched but have not been prefetched;

in response receiving a new sequential read object, creating a new prefetching sliding window or updating a position that has been read of the prefetching sliding window;

in response to detecting that a time period during which the position that has been read of the prefetching sliding window has not been updated reaches a preset time period, deleting the prefetching sliding window;

in response to completion of the creation of the prefetching sliding window, calculating, according to the data object to be read in the read request, at least one new volume object needing to be prefetched; and

adding the new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching.

20. A non-volatile readable storage medium, wherein the non-volatile readable storage medium stores computer-readable instructions, and the computer-readable instructions, when executed by at least one processor, cause the at least one processor to perform following actions:

in response to an Object-based Storage Device (OSD) receiving a read request issued by a client, determining whether the read request issued by the client is a sequential read request;

in response to the read request issued by the client being the sequential read request, creating a prefetching sliding window according to a data object to be read in the read request, wherein each sliding window records position that has been read and a prefetching position that has been read of corresponding sequential read service, and a queue composed of objects that need to be subsequently prefetched but have not been prefetched;

in response receiving a new sequential read object, creating a new prefetching sliding window or updating a position that has been read of the prefetching sliding window;

in response to detecting that a time period during which the position that has been read of the prefetching sliding window has not been updated reaches a preset time period, deleting the prefetching sliding window;

in response to completion of the creation of the prefetching sliding window, calculating, according to the data object to be read in the read request, at least one new volume object needing to be prefetched; and

adding the new volume object needing to be prefetched into a queue of objects to be prefetched of the prefetching sliding window and executing prefetching.

Assignments (2)
LICENSE Recorded Jun 30, 2026
From: IEIT SYSTEMS CO., LTD
To: AIVRES SYSTEMS INC.
Reel/Frame 075857/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2025
From: ZHANG, YINGJIE; MENG, XIANGRUI
To: SUZHOU METABRAIN INTELLIGENT TECHNOLOGY CO., LTD.
Reel/Frame 070764/0383 →
Priority Claims (1)
CN 202210192660.9 · Mar 1, 2022 · national
Continuity (1)
Related Publication 20240427525A1 · Dec 26, 2024
References Cited (21)
US 10191959B1 · Nguyen · 2019 [cited by applicant]
US 20090055399A1 · Lu et al. · 2009 [cited by applicant]
US 20130018851A1 · Jayaraman et al. · 2013 [cited by applicant]
US 20130128893A1 · Jorgensen · 2013 [cited by applicant]
US 20150242437A1 · Lee et al. · 2015 [cited by applicant]
US 20170031823A1 · Ross · 2017 [cited by examiner]
US 20200327063A1 · Kang · 2020 [cited by examiner]
CN 103135967A · 2013 [cited by applicant]
CN 103250141A · 2013 [cited by applicant]
CN 103577158A · 2014 [cited by applicant]
CN 104715048A · 2015 [cited by applicant]
CN 106557431A · 2017 [cited by applicant]
CN 109542361A · 2019 [cited by applicant]
CN 110737388A · 2020 [cited by applicant]
CN 110780819A · 2020 [cited by applicant]
CN 111782612A · 2020 [cited by applicant]
CN 112328185A · 2021 [cited by applicant]
CN 113419824A · 2021 [cited by applicant]
CN 114077588A · 2022 [cited by applicant]
CN 114327299A · 2022 [cited by applicant]
International search report for PCT/CN2022/135170 mailed on Feb. 8, 2023. [cited by applicant]