Source: https://patents.google.com/patent/US20140359063A1/en
Timestamp: 2020-02-20 11:48:27
Document Index: 177837142

Matched Legal Cases: ['art 210', 'art 210', 'art 210', 'art 210', 'art 210', 'art 210']

US20140359063A1 - Computer system, cache control method, and server - Google Patents
Computer system, cache control method, and server Download PDF
US20140359063A1
US20140359063A1 US14/287,250 US201414287250A US2014359063A1 US 20140359063 A1 US20140359063 A1 US 20140359063A1 US 201414287250 A US201414287250 A US 201414287250A US 2014359063 A1 US2014359063 A1 US 2014359063A1
US14/287,250
US9591096B2 (en
Yuusuke FUKUMURA
2013-05-28 Priority to JP2013-111694 priority Critical
2013-05-28 Priority to JP2013111694A priority patent/JP6106028B2/en
2014-05-27 Application filed by Hitachi Ltd filed Critical Hitachi Ltd
2014-05-27 Assigned to HITACHI, LTD. reassignment HITACHI, LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FUKUMURA, YUUSUKE, KONDO, NOBUKAZU, SUGIMOTO, KEN
2014-12-04 Publication of US20140359063A1 publication Critical patent/US20140359063A1/en
2017-03-07 Publication of US9591096B2 publication Critical patent/US9591096B2/en
230000014509 gene expression Effects 0 description 45
A computer system, comprising: a server on which an application providing a service runs; and a storage system for storing data, the server including a cache device in which a server cache for temporarily storing data is set up, and an operating system for controlling the server, the operating system including a cache driver for controlling the server cache, wherein the operating system is configured to hold access information storing a frequency of reading data and a frequency of writing data, and wherein the cache driver is configured to: update the access information in a case where an I/O request; analyze access characteristics of data that is a target for the I/O request based on the access information; and determine whether to store the data that is the target for the I/O request in the server cache.
There have been proposed various computer systems that achieve fast data access by using a volatile memory and a nonvolatile memory which are included in a server (see, for example, the description of US 2009/0024793 A1). US 2009/0024793 A1 describes cache control in a system having a memory for data cache different from a main memory. When writing of data onto a disk is detected, for example, a device driver determines whether or not the data can be written into the memory for data cache, pushes out data from the memory for data cache if necessary, and writes the requested data therein.
In a case where data which is frequently read by an application is stored in a server cache, the data is removed from the server cache when the data has not been accessed for a long period of time since the last access. In this case, the data needs to be read from the storage system, which lowers the processing performance of the application. In a case where data which is frequently read by an application is stored only in a storage cache, the server frequently transmits a read request for the data. This increases the reading load on the storage system, which lowers the writing performance in the storage system.
The present invention can be appreciated by the description which follows in conjunction with the following figures, wherein: a computer system, comprising: a server on which an application providing a service runs; and a storage system for storing data to be used by the application. The server includes a first processor, a first memory, a cache device in which a server cache for temporarily storing data is set up, and a first interface for coupling to another apparatus. The storage system includes a controller and a plurality of storage devices. The controller includes a second processor, a second memory, and a second interface for coupling to another apparatus. The server includes an operating system for controlling the server. The storage system includes a storage cache for temporarily storing data and a storage control part for controlling the storage system. The operating system including a cache driver for controlling the server cache. The operating system is configured to hold access information storing a frequency of reading data and a frequency of writing data. The cache driver is configured to: update the access information in a case where an I/O request is received from the application; analyze access characteristics of data that is a target for the I/O request based on the updated access information; and determine whether to store the data that is the target for the I/O request in the server cache based on a result of analysis of the access characteristics.
Controlling data to be stored into the server cache based on the data access characteristics of the application can improve the processing performance of the computer system.
According to this invention, a server 100 controls data to be stored into a server cache 130. Specifically, the server 100 stores data which is frequently read by an application 120 into the server cache 130. Meanwhile, the server 100 performs such control as to prevent data which is frequently written from being stored into the server cache 130.
In a case of reading data from a storage medium 206 illustrated in FIG. 2, a storage system 200 stores the data read from the storage medium 206 illustrated in FIG. 2 into a storage cache 220. In writing data into the storage medium 206 illustrated in FIG. 2, the storage system 200 stores the data into the storage cache 220. This caching process can improve the reading and writing performances.
According to this invention, the server 100 performs the above-mentioned cache control to bring about an access state illustrated in FIG. 1. Specifically, data which is frequently read is stored into the server cache 130, and data which is written into the storage medium 206 is stored into the storage cache 220.
Secondly, data which is frequently written is not stored into the server cache 130, thereby suppressing the writing-originated degradation of the performance of the server cache 130. In general, a flash memory which is used as the server cache 130 is limited in the frequency of writing, and hence frequent writing of data degrades the flash memory. Accordingly, reducing the frequency of writing to the flash memory can suppress degradation of the performance of the server cache 130.
Fourthly, the above-mentioned cache control is automatically executed by the server 100 based on the access characteristics of data. Therefore, a system administrator or a user or the like who uses the application 120 need not set up information on cache control beforehand.
The computer according to this embodiment includes the server 100 and the storage system 200. FIG. 2 illustrates the computer system including a single server 100 and a single storage system 200, but this invention is not limited thereto. The computer system may include a plurality of servers 100 and a plurality of storage systems 200.
The server 100 and the storage system 200 are coupled to each other over a local area network (LAN) or a storage area network (SAN). It should be noted that the computer system may include the server 100 and the storage system 200 within the same casing. In this case, the server 100 and the storage system 200 are connected to each other via a backplane. The server 100 may be directly connected to the storage system 200.
The server 100 is a computer that performs predetermined services. The server 100 includes a processor 101, a memory 102, a cache device 103, and a connection interface 104, which are interconnected by internal buses. The server 100 may include a storage apparatus and an input/output apparatus. The storage apparatus may be, for example, an HDD. The input/output apparatus includes a keyboard, a mouse, a touch panel, and a display.
The processor 101 runs a program stored in the memory 102. The execution of the program by the processor 101 achieves the functions of the server 100. In the following description, processes, which are described to be carried out mainly by the program, imply that the program is run by the processor 101.
According to this embodiment, it is assumed that a solid state drive (SSD) having a flash memory is used as the cache device 103. It should be noted that the cache device 103 is not limited to a nonvolatile memory such as a flash memory. For example, a volatile memory such as a DRAM may be used.
In this embodiment, the server cache 130 stores a plurality of pieces of data which are stored logical blocks of an Logical unit (LU). For example, a buffer cache may be used. The buffer cache is generated by allocating a buffer page to the server cache 130 and segmenting the buffer page into block buffers of a predetermined block size.
The connection interface 104 is a device for connection to an external apparatus such as the storage system 200. When the server 100 is coupled to the storage system 200 over a SAN, for example, a fiber channel (FC) adapter card is used as the connection interface 104. When the server 100 is coupled to the storage system 200 over a LAN, a network interface card (NIC) is used as the connection interface 104.
Next, the program and information to be stored in the memory 102 are described. The memory 102 according to this embodiment stores programs that achieve an operating system (OS) 110 and the application 120. The memory 102 may store another program and information.
The OS 110 provides a function to control the server 100, and controls data transfer between the server 100 and the storage system 200. The OS 110 includes a virtual file system (VFS) 111, a file system 112, a cache driver 113, a device driver 114, and access information 115. The OS 110 includes function units (not shown), which are known and are not therefore described.
The OS 110 formats the LU provided by the storage system 200 to predetermined file systems 112. At the time of formatting, the OS 110 divides the LU into predetermined logical blocks, and assigns identification numbers to the respective logical blocks. The file system 112 manages data including at least one block data as a file.
The program and information to be stored in the memory 102 may be stored in the storage system 200 or a storage apparatus provided in the server 100. In this case, the processor 101 acquires the program and information from the storage system 200 or the storage apparatus, and loads the acquired program and information into the memory 102.
The controller 201 controls the storage system 200, and controls data transfer between the server 100 and the storage system 200. The controller 201 includes a processor 202, a memory 203, a connection interface 204, and a storage interface 205, which are interconnected by internal buses.
The processor 202 runs a program stored in the memory 203. The execution of the program by the processor 202 achieves the functions of the storage system 200. In the following description, processes that are described to be carried out mainly by the program imply that the program is run by the processor 202.
The memory 203 stores a program to be run by the processor 202 and information needed to run the program. The program and information that are to be stored in the memory 203 are described later. The memory 203 includes the storage cache 220 that is a storage area for temporarily storing data. The storage cache 220 temporarily stores the data accessed by the server 100
In a case of receiving a read request from the server 100, the storage system 200 returns data stored in the storage cache 220. In a case of receiving a write request from the server 100, the storage system 200 writes data into the storage cache 220, notifies the server 100 of the completion of the writing process, and then writes the data into the storage medium 206. The above-mentioned processing can speed up the response to the server 100.
The connection interface 204 is a device for connection to an external apparatus such as the server 100. When the server 100 is coupled to the storage system 200 over a SAN, for example, a channel adapter (CA) is used as the connection interface 204. When the server 100 is coupled to the storage system 200 over a LAN, a NIC is used as the connection interface 204.
The storage interface 205 is a device for connection to the storage media 206. The storage medium 206 is a device for storing data. For example, the storage medium 206 may be an HDD or SSD. It should be noted that the storage medium 206 may be any device that can store data.
The storage control part 210 controls the storage system 200. According to this embodiment, a plurality of storage media 206 are used to configure a RAID. The storage control part 210 logically divides the RAID volume to generate a plurality of LUs. The storage control part 210 also provides the server 100 with the generated plurality of LUs.
The storage control part 210 holds management information indicating the correlation between the LUs and the storage media 206. In a case of receiving an access request for an LU from the server 100, the storage control part 210 accesses the storage medium 206 that provides a storage area (logical block) forming the LU based on the management information. The storage control part 210 also has various functions including an LU managing function, a data transfer function, and a cache control function, which are known and are not therefore described.
The program and information to be stored in the memory 203 may be stored in the storage medium 206. In this case, the processor 202 reads the program and information from the storage medium 206, and loads the read program and information into the memory 203.
Although the storage cache 220 is set on the memory 203 of the storage, this invention is not limited to this architecture. The controller 201 may include a caching memory. The caching memory may be any one of a nonvolatile memory and a volatile memory.
The example illustrated in FIG. 3 shows that block data with the block number 301 of “1” is read “8” times and is written “1” time.
In a case of receiving an I/O request from the application 120, the OS 110 starts I/O processing to be described below. The I/O request includes information identifying a file to be accessed or information identifying block data to be accessed. For example, the I/O request includes a file name or the like in a case where a file is to be accessed, or includes a block number or the like in a case where block data is to be accessed. According to this embodiment, it is assumed that the I/O request includes a file name.
The VFS 111 requests a file system 112 that manages a file to be read to read the file. The file system 112 calls the cache driver 113, and instructs the cache driver 113 to retrieve block data of the file to be read. This instruction includes information specifying the block number of block data in a file to be read. In the following description, information specifying the block number of block data in a file is also described as block obtaining information.
The cache driver 113 specifies the block number of block data in a file based on the block obtaining information. In a case where the file includes a plurality of pieces of block data, the cache driver 113 specifies the block number of every block data included in the file.
The cache driver 113 retrieves block data of a file to be read from among the block data stored in the server cache 130. While the detailed description of the method of retrieving block data based on a block number, which is a known technology, is omitted, block data is retrieved based on, for example, a buffer head.
In a case where the block data of a file to be read is present, the cache driver 113 outputs the block data to the VFS 111. In a case where the block data of a file to be read is not present, the cache driver 113 notifies the VFS 111 that the block data is not present.
In a case where it is determined that the block data of a file to be read is present in the server cache 130, the OS 110 reads data from the server cache 130 (Step S103), and transmits a notification of completion of the reading process to the application 120 (Step S104). Moreover, the OS 110 updates the access information 115 (Step S105), and terminates the processing. Specifically, the following process is performed.
Further, the cache driver 113 refers to the block number 301 in the access information 115 to retrieve an entry corresponding to the block number of the read block data. The cache driver 113 increments the value of Read 303 of the retrieved entry by “1.”
In a case where it is determined in Step S102 that the block data of a file to be read is not present in the server cache 130, the OS 110 transmits a read request to the storage system 200 (Step S106). Specifically, the following process is performed.
The cache driver 113 registers the read request based on the block obtaining information, and calls the device driver 114. It should be noted that the processing of the application stands by until the application receives the notification of completion of all the registered read requests from the device driver 114.
In a case of receiving the notification of completion of all the registered read requests, the cache driver 113 outputs block data to be stored into the server cache 130 to the VFS 111. The VFS 111 outputs this block data to the application 120 along with the notification of completion.
In addition, the cache driver 113 refers to the block number 301 in the access information 115 to retrieve an entry corresponding to the block number of the block data included in the notification of completion. The cache driver 113 increments the value of Read 303 of the retrieved entry by “1.”
The OS 110 executes a cache determination process (Step S110), and then terminates the processing. Specifically, the cache driver 113 executes the cache determination process. The details of the cache determination process are given later referring to FIGS. 5A and 5B.
In a case where it is determined in Step S101 that the I/O request is not a read request, in other words, the I/O request is a write request, the OS 110 determines whether or not block data of a file to be written is present in the server cache 130 (Step S111). The process of Step S111 is the same as the process of Step S102, and hence its description is omitted.
In a case where it is determined that block data of a file to be written is present in the server cache 130, the OS 110 updates block data stored in the server cache 130 (Step S112). Further, the OS 110 transmits a write request to the storage system 200 (Step S113), and transmits a notification of completion to the application 120 (Step S114). Moreover, the OS 110 updates the access information 115 (Step S115). Specifically, the following process is performed.
The cache driver 113 registers the write request based on block obtaining information, and calls the device driver 114. The cache driver 113 outputs a notification of completion to the VFS 111. The VFS 111 outputs the notification of completion to the application 120.
The cache driver 113 refers to the block number 301 in the access information 115 to retrieve an entry corresponding to the block number of the overwritten block data. The cache driver 113 increments the value of Write 304 of the retrieved entry by “1.”
The OS 110 executes a cache determination process (Step S116), and then terminates the processing. Specifically, the cache driver 113 executes the cache determination process. The details of the cache determination process are given later referring to FIGS. 5A and 5B.
In a case where it is determined in Step S111 that the block data of a file to be written is not present in the server cache 130, the OS 110 executes a cache registration process for storing the block data to be written into the server cache 130 (Step S117). The details of the cache registration process are given later referring to FIG. 6.
The OS 110 executes a cache determination process (Step S121), and then terminates the processing. Specifically, the cache driver 113 executes the cache determination process. The details of the cache determination process are given later referring to FIGS. 5A and 5B.
In a case where it is determined that the block data to be read is not stored in the storage cache 220, the storage system 200 secures a storage area in the storage cache 220, and reads block data from the storage medium 206. Further, the storage system 200 stores the read block data into the secured storage area, and transmits the block data to the server 100.
In a case where it is determined that the block data to be written is not stored in the storage cache 220, the storage system 200 secures a storage area in the storage cache 220, stores the block data to be written into the secured storage area, and transmits a notification of completion to the server 100. Then, the storage system 200 writes the block data to be stored into the storage cache 220 in a predetermined storage area in the storage medium 206.
The cache driver 113 updates the access information 115, and then executes the cache determination process to be described below. In a case where there are a plurality of pieces of block data to be processed, the cache driver 113 repeatedly performs the following process on each block data.
The cache driver 113 determines whether or not the cache determination process needs to be executed (Step S201). For example, it is determined whether or not the following expression (1) is fulfilled.
Read Cntr+Write Cntr≧J (1)
In the expression, the variable Read Cntr represents the value of Read 303 of a reading-target block data, the variable Write Cntr represents the value of Write 304 of the reading-target block data, and J represents a threshold. In a case where the expression (1) is fulfilled, it is determined that the cache determination process needs to be executed.
The access characteristics of block data or the like read for the first time are not known. According to this embodiment, therefore, the server 100 monitors the access states of block data for a certain period of time. Although the access frequency is used in this embodiment, an access time or the like may be used as well.
In a case where it is determined that the cache determination process needs to be executed, the cache driver 113 determines whether or not a process trigger is a read request (Step S202). In Step S202 and subsequent steps, the cache driver 113 analyzes the access characteristics of the reading-target block data.
In a case where it is determined that a process trigger is a read request, the cache driver 113 determines whether or not the frequency of reading the reading-target block data is equal to or larger than a predetermined threshold (Step S203). For example, it is determined whether or not the following expression (2) is fulfilled.
Read Cntr≧K (2)
In a case where it is determined that the frequency of reading the reading-target block data is less than the predetermined threshold, the cache driver 113 invalidates the reading-target block data stored in the server cache 130 (Step S205), and terminates the processing.
In a case where it is determined that the frequency of reading the reading-target block data is equal to or larger than the predetermined threshold, the cache driver 113 determines whether or not the reading-target block data is likely to be read frequently (Step S204). For example, it is determined whether or not the following expression (3) is fulfilled.
Expression   ( 3 ) Read   Cntr Write   Cntr ≧ L ( 3 )
In the expression, L represents a threshold. The expression (3) is a conditional expression for determining whether or not an access ratio calculated by dividing Read 303 by Write 304 is equal to or larger than a predetermined threshold. In a case where the expression (3) is fulfilled, it is determined that the reading-target block data is likely to be read frequently.
According to this embodiment, the OS 110 performs control so that even when the frequency of reading block data is large, block data which is to be frequently written is not stored into the server cache 130. This is because that frequent writing of data may degrade the writing performance of the cache device 103, or execution of the writing process may delay the process of reading block data.
In a case where it is determined in Step S202 that the process trigger is not a read request, in other words, the process trigger is a write request, the cache driver 113 determines whether or not the frequency of writing block data to be written is equal to or larger than a predetermined threshold (Step S206). For example, it is determined whether or not the following expression (4) is fulfilled.
Write Cntr≧M (4)
In a case where it is determined that the frequency of writing block data to be written is equal to or larger than the predetermined threshold, the cache driver 113 invalidates the block data stored in the server cache 130 (Step S208), and terminates the processing.
In a case where it is determined that the frequency of writing block data to be written is less than the predetermined threshold, the cache driver 113 determines whether or not the block data to be written has a high tendency to write. In other words, the cache driver 113 determines whether or not the block data to be written is likely to be written frequently (Step S207). For example, it is determined whether or not the following expression (5) is fulfilled.
Expression   ( 5 ) Write   Cntr Read   Cntr ≧ N ( 5 )
In the expression, N represents a threshold. The expression (5) is a conditional expression for determining whether or not an access ratio calculated by dividing Write 304 by Read 303 is equal to or larger than a predetermined threshold. In a case where the expression (5) is fulfilled, it is determined that the block data to be written has a high tendency to write.
According to this embodiment, the OS 110 performs control so that even when the frequency of writing block data is small, block data which is to be frequently written is not stored into the server cache 130. This can suppress degradation of the writing performance of the cache device 103, and improve the performance of an application.
In a case where it is determined that the server cache 130 does not have a storage area for storing new block data, the cache driver 113 retrieves migratable block data based on the access characteristics of block data to be stored into the server cache 130 (Step S303), and determines whether or not there is migratable block data based on the retrieve result (Step S304). For example, it is determined whether or not there is at least one block data that fulfills the following expression (6).
Expression   ( 6 ) Write   Cntr Read   Cntr < N ( 6 )
Specifically, the cache driver 113 removes the selected block data, and stores the new block data into the buffer cache where the removed block data is stored. In a case where there are a plurality of pieces of data fulfilling the expression (6), the cache driver 113 selects block data which provides the smallest access ratio on the left-hand side of the expression (6).
In a case where it is determined that migratable block data does not exist, the cache driver 113 performs replacement of block data based on the LRU algorithm (Step S306), and terminates the processing. The data replacement based on the LRU algorithm may use a known technology, and hence its detailed description is omitted.
As shown in FIG. 7, the writing performance of the storage system 200 lowers along with an increase in the reading ratio. Accordingly, the performance of the related-art storage system 200 is optimized by adjusting the writing ratio to about 50%.
Data which is written frequently is not stored into the server cache 130, and hence it is possible to suppress writing-originated degradation of the performance of the server cache 130. Further, the number of read requests that are transmitted from the server 100 to the storage system 200 is reduced. This allows the storage system 200 to perform the writing process to the limit of the performance of the storage system 200.
In addition, the server 100 automatically controls block data to be stored into the server cache 130 based on the access characteristics of data. Therefore, a system administrator or a user or the like who uses the application 120 need not set up information on cache control beforehand.
According to the first embodiment, the OS 110 stores block data into the server cache 130 once, and then executes the cache determination process. According to a second embodiment of this invention, the OS 110 executes the cache determination process, and determines whether or not to store block data into the server cache 130 based on the result of the cache determination process. The following description is mainly focused on the differences from the first embodiment.
After the process of Step S106, the OS 110 does not execute the cache registration process, but transmits a notification of completion to the application 120 (Step S108). According to the second embodiment, it is determined based on the result of the cache determination process whether or not to execute the cache registration process. This can reduce an increase in the frequency of writing data into the cache device 103.
In a case where it is determined in Step S111 that block data in a file to be written does not exist in the server cache 130, the OS 110 does not execute the cache registration process or the cache determination process, and transmits a write request to the storage system 200 (Step S118).
In a case where it is determined in Step S203 that the frequency of reading the reading-target block data is less than a predetermined threshold, the cache driver 113 terminates the processing. Block data is not stored in the server cache 130 according to the second embodiment, and hence the process of invalidating the block data is omitted.
Because the cache driver 113 may not hold block data at this point of time, it is necessary to obtain the reading-target block data. For example, the cache driver 113 transmits a read request to the storage system 200 again to obtain the reading-target block data.
According to the second embodiment, the frequency of writing data into the cache driver 113 is reduced, and hence it is possible to suppress the degradation of the performance of the cache device 103 such as SSD whose number of writing accesses is limited.
According to the first embodiment, the storage location of block data is controlled based on the access characteristics of block data. A third embodiment of this invention differs from the first embodiment in that the OS 110 controls the storage location of data in a file based on the file access performance. The following description is mainly focused on the differences from the first embodiment.
The configuration of the computer system, and the hardware configurations and the software configurations of the server 100 and the storage system 200 according to the third embodiment are identical to those of the first embodiment, and hence their descriptions are omitted. The third embodiment differs from the first embodiment in the contents of the access information 115.
According to the third embodiment, the block number 301 stores a number indicating the storage location of block data in a file in the storage system 200. Other information is the same as that in the first embodiment, and hence its description is omitted.
In Step S203, the cache driver 113 determines whether or not the frequency of reading a file including the reading-target block data is equal to or larger than a predetermined threshold. For example, it is determined whether or not the following expression (7) is fulfilled.
Total Read Cntr≧P (7)
In the expression, variable Total Read Cntr represents the frequency of reading a file including the reading-target block data, and P represents a threshold. In a case where the expression (7) is fulfilled, it is determined that the frequency of reading a file including the reading-target block data is equal to or larger than the predetermined threshold.
Expression   ( 8 ) Total   Read   Cntr Total   Write   Cntr ≧ Q ( 8 )
In the expression, variable Total Write Cntr represents the frequency of writing in a file including block data to be written, and Q represents a threshold. In a case where the expression (8) is fulfilled, it is determined that the file including the reading-target block data is likely to be read frequently. The scheme of calculating the value to be stored in Total Write Cntr is the same as the scheme of calculating the value to be stored in Total Read Cntr, and hence its description is omitted.
In Step S206, the cache driver 113 determines whether or not the frequency of writing a file including block data to be written is equal to or larger than a predetermined threshold. For example, it is determined whether or not the following expression (9) is fulfilled.
Total Write Cntr≧R (9)
Expression   ( 10 ) Total   Write   Cntr Total   Read   Cntr ≧ S ( 10 )
The cache driver 113 first selects one block data included in a file. For example, the cache driver 113 selects block data with a small block number. Then, the cache driver 113 performs processes of Steps S301 to S306 on the selected block data.
The drawings shows control lines and information lines as considered necessary for explanation but do not show all control lines or information lines in the products. It can be considered that almost of all components are actually interconnected.
a server on which an application providing a service runs; and
a storage system for storing data to be used by the application,
the server including a first processor, a first memory, a cache device in which a server cache for temporarily storing data is set up, and a first interface for coupling to another apparatus,
the storage system including a controller and a plurality of storage devices,
the controller including a second processor, a second memory, and a second interface for coupling to another apparatus,
the server including an operating system for controlling the server,
the storage system including a storage cache for temporarily storing data and a storage control part for controlling the storage system,
the operating system including a cache driver for controlling the server cache,
wherein the operating system is configured to hold access information storing a frequency of reading data and a frequency of writing data, and
wherein the cache driver is configured to:
update the access information in a case where an I/O request is received from the application;
analyze access characteristics of data that is a target for the I/O request based on the updated access information; and
determine whether to store the data that is the target for the I/O request in the server cache based on a result of analysis of the access characteristics.
wherein the cache driver is configured to, in a case where a read request for first data is received from the application:
determine whether the first data is stored in the server cache;
transmit the read request to the storage system in a case where it is determined that the first data is not stored in the server cache;
store the first data received from the storage system into the server cache;
update the frequency of reading the first data in the access information;
determine whether the first data is read frequently by the application based on the updated access information; and
invalidate the first data stored in the server cache in a case where it is determined that the first data is not read frequently by the application, and
wherein the cache driver is configured to, in a case where a write request for second data is received from the application:
determine whether the second data is stored in the server cache;
update the second data is stored in the server cache in a case where it is determined that the second data is stored in the server cache;
transmit the write request to the storage system;
update the frequency of writing the second data in the access information;
determine whether the second data is written frequently by the application based on the updated access information; and
invalidate the second data stored in the server cache in a case where it is determined that the second data is written frequently by the application.
store the first data into the server cache in a case where it is determined that the first data is read frequently by the application, and
update the second data in a case where it is determined that the second data is stored in the server cache;
4. The computer system according to claim 2, wherein the cache driver is configured to:
calculate a first access ratio by dividing the frequency of reading the first data by the frequency of writing the first data;
determine that the first data is frequently read by the application in a case where the frequency of reading the first data is equal to or larger than a first threshold and in a case where the first access ratio is equal to or larger than a second threshold;
determine that the first data is not frequently read by the application in a case where at least one of a case where the frequency of reading the first data is less than the first threshold or a case where the first access ratio is less than the second threshold is satisfied;
calculate a second access ratio by dividing the frequency of writing the second data by the frequency of reading the second data;
determine that the second data is frequently written by the application in a case where at least one of a case where the frequency of writing the second data is equal to or larger than a third threshold or a case where the second access ratio is equal to or larger than a fourth threshold is satisfied; and
determine that the second data is not frequently written by the application in a case where the frequency of writing the second data is less than the third threshold and in a case where the second access ratio is less than the fourth threshold.
5. A cache control method for a computer system,
the computer system including a server on which an application providing a service runs, and a storage system for storing data to be used by the application,
the operating system being configured to hold access information storing a frequency of reading data and a frequency of writing data,
the cache control method including:
a first step of updating, by the cache driver, the access information in a case where an I/O request is received from the application;
a second step of analyzing, by the cache driver, characteristics of data that is a target for the I/O request based on the updated access information; and
a third step of determining, by the cache driver, whether to store the data that is the target for the I/O request in the server cache based on a result of analysis of the access characteristics.
6. The cache control method according to claim 5,
wherein the second step includes, in a case where a read request for first data is received from the application:
a fourth step of determining whether the first data is stored in the server cache;
a fifth step of transmitting the read request to the storage system in a case where it is determined that the first data is not stored in the server cache;
a sixth step of storing the first data received from the storage system into the server cache;
a seventh step of updating the frequency of reading the first data in the access information; and
an eighth step of determining whether the first data is read frequently by the application based on the updated access information,
wherein the third step includes, in a case where the read request for the first data is received from the application, invalidating the first data stored in the server cache in a case where it is determined that the first data is not read frequently by the application,
wherein the second step includes, in a case where a write request for second data is received from the application:
a ninth step of determining whether the second data is stored in the server cache;
a tenth step of updating the second data in a case where it is determined that the second data is stored in the server cache;
an eleventh step of transmitting the write request to the storage system;
a twelfth step of updating the frequency of writing the second data in the access information; and
a thirteenth step of determining whether the second data is written frequently by the application based on the updated access information, and
wherein the third step includes, in a case where the write request for the second data is received from the application, invalidating the second data stored in the server cache in a case where it is determined that the second data is written frequently by the application.
7. The cache control method according to claim 5,
a fourteenth step of determining whether the first data is stored in the server cache;
a fifteenth step of transmitting the read request to the storage system in a case where it is determined that the first data is not stored in the server cache;
a sixteenth step of updating the frequency of reading the first data in the access information; and
a seventeenth step of determining whether the first data is read frequently by the application based on the updated access information,
wherein the third step includes, in a case where the read request for the first data is received from the application, storing the first data into the server cache in a case where it is determined that the first data is read frequently by the application,
an eighteenth step of determining whether the second data is stored in the server cache;
a nineteenth step of updating the second data in a case where it is determined that the second data is stored in the server cache;
a twentieth step of transmitting the write request to the storage system;
a twenty-first step of updating the frequency of writing the second data in the access information; and
a twenty-second step of determining whether the second data is written frequently by the application based on the updated access information, and
8. The cache control method according to claim 6,
wherein the eighth step includes:
calculating a first access ratio by dividing the frequency of reading the first data by the frequency of writing the first data;
determining that the first data is frequently read by the application in a case where the frequency of reading the first data is equal to or larger than a first threshold and in a case where the first access ratio is equal to or larger than a second threshold; and
determining that the first data is not frequently read by the application in a case where at least one of a case where the frequency of reading the first data is less than the first threshold or a case where the first access ratio is less than the second threshold is satisfied, and
wherein the thirteenth step includes:
calculating a second access ratio by dividing the frequency of writing the second data by the frequency of reading the second data;
determining that the second data is frequently written by the application in a case where at least one of a case where the frequency of writing the second data is equal to or larger than a third threshold or a case where the second access ratio is equal to or larger than a fourth threshold is satisfied; and
determining that the second data is not frequently written by the application in a case where the frequency of writing the second data is less than the third threshold and in a case where the second access ratio is less than the fourth threshold.
9. A server on which an application providing a service runs and which is to be coupled to a storage system for storing data to be used by the application, the server comprising:
a cache device in which a server cache for temporarily storing data is set up; and
an interface for coupling to another apparatus,
the server comprising an operating system for controlling the server,
11. The server according to claim 9,
12. The server according to claim 10, wherein the cache driver is configured to:
US14/287,250 2013-05-28 2014-05-27 Computer system, cache control method, and server Active 2035-04-07 US9591096B2 (en)
JP2013-111694 2013-05-28
JP2013111694A JP6106028B2 (en) 2013-05-28 2013-05-28 Server and cache control method
US20140359063A1 true US20140359063A1 (en) 2014-12-04
US9591096B2 US9591096B2 (en) 2017-03-07
ID=51986421
US14/287,250 Active 2035-04-07 US9591096B2 (en) 2013-05-28 2014-05-27 Computer system, cache control method, and server
US (1) US9591096B2 (en)
JP (1) JP6106028B2 (en)
CN105516344A (en) * 2015-12-31 2016-04-20 深圳前海微众银行股份有限公司 Data management system and service-processing method
CN107124422A (en) * 2017-05-12 2017-09-01 北京明朝万达科技股份有限公司 A kind of terminal admittance control method and system
JP6203592B2 (en) * 2013-10-07 2017-09-27 株式会社日立製作所 Computer system, cache management method, and computer
WO2019123519A1 (en) * 2017-12-18 2019-06-27 三菱電機株式会社 Information processing device, information processing method, and information processing program
US6349358B1 (en) * 1998-08-31 2002-02-19 Nec Corporation Magnetic disc control apparatus capable of detecting a near sequential I/O and storing it to a cache memory, and a system thereof
US20090024793A1 (en) * 2007-07-17 2009-01-22 Fontenot Nathan D Method and apparatus for managing data in a hybrid drive system
US20120297113A1 (en) * 2011-05-20 2012-11-22 International Business Machines Corporation Optimized flash based cache memory
JP2002099465A (en) * 2000-09-25 2002-04-05 Hitachi Ltd Cache control method
JP2003216491A (en) * 2002-01-23 2003-07-31 Hitachi Ltd Hierarchical cache control method
JP4631301B2 (en) * 2004-03-31 2011-02-23 株式会社日立製作所 Cache management method for storage device
2013-05-28 JP JP2013111694A patent/JP6106028B2/en active Active
2014-05-27 US US14/287,250 patent/US9591096B2/en active Active
JP6106028B2 (en) 2017-03-29
JP2014232350A (en) 2014-12-11
US9591096B2 (en) 2017-03-07
US9037800B2 (en) 2015-05-19 Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
US20090055595A1 (en) 2009-02-26 Adjusting parameters used to prefetch data from storage into cache
US9529814B1 (en) 2016-12-27 Selective file system caching based upon a configurable cache map
KR20090117919A (en) 2009-11-16 Extending flash drive lifespan
JP4508608B2 (en) 2010-07-21 Storage adapter with integrated cache
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KONDO, NOBUKAZU;FUKUMURA, YUUSUKE;SUGIMOTO, KEN;REEL/FRAME:032963/0155