Patent ID: 7383417

Claim:
A prefetching method, for prefetching data from a file to a buffer before the data is read by a program product, comprising: recording a history for a plurality of data readings, said history including timings at which a plurality of command processes, for the program product, and a plurality of data reading processes, for reading data used for command processes, were performed, said command timings including a period extending from a completion of a current data reading to a start of a succeeding data reading and said data reading processes timing including a period between a time at which a request for data is issued until a time a response to said request is returned; measuring a total value for a volume of data for which reading by the program product has been requested and when said total value of the volume of data exceeds a reference data value, performing: arranging said data readings in said history in a time series order; generating a plurality of prefetchings that correspond to the plurality of data readings recorded in the history; determining, for each of said plurality of prefetchings, a start time and an end time consonant with the plurality of data readings recorded in the history, wherein said prefetchings are completed prior to a start time of a corresponding one of the data readings, determining an execution order for the plurality of prefetchings based on said prefetching start and end times; optimizing said execution order when two or more prefetchings are readings of data from two or more contiguous areas by collectively replacing with one prefetching said two or more prefetchings, wherein a preceding and a succeeding prefetching of said one prefetching is collected as said one prefetching; dividing the plurality of prefetchings into a plurality of groups by sequentially adding one or more prefetchings to each of the groups, wherein prefetchings are added to a group so that a usage rate for the buffer for data that have been read into the buffer by prefetching and have not yet been read from the buffer by the program product, does not exceed a predetermined upper limit value, wherein additional prefetchings are added to a group in violation of said predetermined upper limit value when a processing overhead causes delay of a succeeding prefetching or a read is not issued during a period preceding a prefetching; determining group start timings in consonance with each of the groups, to start one or more prefetchings included in the group wherein the group start timings for the individual groups are determined so that the usage rate for the buffer does not exceed the upper limit value; and executing at least one of said prefetchings included in each of the groups, at the group start timings that correspond to the group, wherein prefetchings included in a next group are started when the usage rate for the buffer is lower than a predesignated lower limit value.