U.S. patent application number 14/623163 was filed with the patent office on 2016-08-18 for system and method for managing a cache pool.
The applicant listed for this patent is Dell Products L.P.. Invention is credited to Sandeep Agarwal, Anup Atluri, Deepu Syram Sreedhar M, Ashokan Vellimalai.
Application Number | 20160239420 14/623163 |
Document ID | / |
Family ID | 56622132 |
Filed Date | 2016-08-18 |
United States Patent
Application |
20160239420 |
Kind Code |
A1 |
Agarwal; Sandeep ; et
al. |
August 18, 2016 |
SYSTEM AND METHOD FOR MANAGING A CACHE POOL
Abstract
In one embodiment, a system includes a processor and a memory
communicatively coupled to the processor. The processor is
configured to receive a write request associated with a cache pool,
which comprises a plurality of disks. The write request comprises
data associated with the write request. The processor is
additionally configured to select a first disk from the plurality
of disks using a life parameter associated with the first disk. The
processor is further configured to cause the data associated with
the write request to be written to the first disk.
Inventors: |
Agarwal; Sandeep;
(Bangalore, IN) ; Atluri; Anup; (Bangalore,
IN) ; Vellimalai; Ashokan; (Bangalore, IN) ;
Sreedhar M; Deepu Syram; (Calicut, IN) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Dell Products L.P. |
Round Rock |
TX |
US |
|
|
Family ID: |
56622132 |
Appl. No.: |
14/623163 |
Filed: |
February 16, 2015 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 12/0871 20130101;
G06F 12/0893 20130101; G06F 2212/224 20130101; G06F 2212/62
20130101; G06F 12/0842 20130101 |
International
Class: |
G06F 12/08 20060101
G06F012/08 |
Claims
1. A method comprising: receiving a write request associated with a
cache pool comprising a plurality of disks, the write request
comprising data associated with the write request; selecting a
first disk from the plurality of disks using a life parameter
associated with the first disk; and causing the data associated
with the write request to be written to the first disk.
2. The method of claim 1, wherein the cache pool is a local cache
and, the method further comprising: determining that the local
cache is preferred; determining that each disk in the local cache
is full; receiving a set of parameters associated with a plurality
of disks in a remote cache, the set of parameters comprising the
life parameter; calculating a priority score for the plurality of
disks in the remote cache using the life parameters associated with
the plurality of disks in the remote cache; based on the priority
score, determining a disk with the greatest priority, the disk with
the greatest priority having a highest priority of the plurality of
disks in the remote cache; determining that at least two disks of
the plurality of disks in the remote cache each have the highest
priority; wherein selecting the first disk from the plurality of
disks comprises selecting a first available disk of the at least
two disks of the plurality of disks in the remote cache with the
highest priority; and wherein causing the data associated with the
write request to be written to the first disk comprises causing the
data associated with the write request to be written to the first
available disk.
3. The method of claim 1, further comprising: calculating a
priority score for the plurality of disks using the life parameters
associated with the plurality of disks; based on the priority
score, determining a disk with the greatest priority; and wherein
selecting the first disk from the plurality of disks comprises
selecting the disk with the greatest priority.
4. The method of claim 3, further comprising: determining that at
least two disks of the plurality of disks each have the highest
priority; wherein selecting the first disk from the plurality of
disks comprises selecting a first available disk of the at least
two disks of the plurality of disks with the highest priority; and
wherein causing the data associated with the write request to be
written to the first disk comprises causing the data associated
with the write request to be written to the first available disk
with the highest priority.
5. The method of claim 1, wherein the cache pool is a local cache
and, the method further comprising: local cache determining whether
the local cache is preferred; determining whether each disk in the
local cache is full; if the local cache is preferred and each disk
in the local cache is not full, then determining the first disk
using the life parameter comprises determining a local disk using
the life parameter, the local disk being in the local cache; and if
the local cache is preferred and each disk in the local cache is
full, then determining the first disk using the life parameter
comprises determining a remote disk using the life parameter, the
remote disk being in a remote cache.
6. The method of claim 1, further comprising: receiving a second
write request associated with the cache pool; determining that a
fairness cycling policy applies; in response to determining that
the fairness cycling policy applies, selecting a second disk, the
second disk identified using the fairness cycling policy; and
causing the data corresponding to the write request to be written
to the second disk.
7. The method of claim 1, further comprising: receiving a set of
parameters associated with a plurality of disks, the set of
parameters comprising a life parameter and a usage parameter; and
updating stored parameters for each of the plurality of disks using
the received set of parameters.
8. An information handling system, comprising: a memory; a
processor communicatively coupled to the memory, the processor
configured to: receive a write request associated with a cache pool
comprising a plurality of disks, the write request comprising data
associated with the write request; select a first disk from the
plurality of disks using a life parameter associated with the first
disk; and cause the data associated with the write request to be
written to the first disk.
9. The system of claim 8, wherein the cache pool is a local cache
and, the processor is further configured to: determine that the
local cache is preferred; determine that each disk in the local
cache is full; receive a set of parameters associated with a
plurality of disks in a remote cache, the set of parameters
comprising the life parameter; calculate a priority score for the
plurality of disks in the remote cache using the life parameters
associated with the plurality of disks in the remote cache; based
on the priority score, determine a disk with the greatest priority,
the disk with the greatest priority having a highest priority of
the plurality of disks in the remote cache; determine that at least
two disks of the plurality of disks in the remote cache each have
the highest priority; wherein selecting the first disk from the
plurality of disks comprises selecting a first available disk of
the at least two disks of the plurality of disks in the remote
cache with the highest priority; and wherein causing the data
associated with the write request to be written to the first disk
comprises causing the data associated with the write request to be
written to the first available disk.
10. The system of claim 8, wherein the processor is further
configured to: calculate a priority score for the plurality of
disks using the life parameters associated with the plurality of
disks; based on the priority score, determine a disk with the
greatest priority; and wherein selecting the first disk from the
plurality of disks comprises selecting the disk with the greatest
priority.
11. The system of claim 10, wherein the processor is further
configured to: determine that at least two disks of the plurality
of disks each have the highest priority; wherein selecting the
first disk from the plurality of disks comprises selecting a first
available disk of the at least two disks of the plurality of disks
with the highest priority; and wherein causing the data associated
with the write request to be written to the first disk comprises
causing the data associated with the write request to be written to
the first available disk with the highest priority.
12. The system of claim 8, wherein the cache pool is a local cache
and, the processor is further configured to: determine whether the
local cache is preferred; determine whether each disk in the local
cache is full; if the local cache is preferred and each disk in the
local cache is not full, then determining the first disk using the
life parameter comprises determining a local disk using the life
parameter, the local disk being in the local cache; and if the
local cache is preferred and each disk in the local cache is full,
then determining the first disk using the life parameter comprises
determining a remote disk using the life parameter, the remote disk
being in a remote cache.
13. The system of claim 8, wherein the processor is further
configured to: receive a second write request associated with the
cache pool; determine that a fairness cycling policy applies; in
response to determining that the fairness cycling policy applies,
select a second disk, the second disk identified using the fairness
cycling policy; and cause the data corresponding to the write
request to be written to the second disk.
14. The system of claim 8, wherein the processor is further
configured to: receive a set of parameters associated with a
plurality of disks, the set of parameters comprising a life
parameter and a usage parameter; and update stored parameters for
each of the plurality of disks using the received set of
parameters.
15. A non-transitory computer-readable medium including
computer-executable instructions encoded in the computer-readable
medium, the instructions, when executed by a processor, operable
to: receive a write request associated with a cache pool comprising
a plurality of disks, the write request comprising data associated
with the write request; select a first disk from the plurality of
disks using a life parameter associated with the first disk; and
cause the data associated with the write request to be written to
the first disk.
16. The computer-readable medium of claim 15, wherein the cache
pool is a local cache and the computer-executable instructions,
when executed by a processor, are further operable to: determine
that the local cache is preferred; determine that each disk in the
local cache is full; receive a set of parameters associated with a
plurality of disks in a remote cache, the set of parameters
comprising the life parameter; calculate a priority score for the
plurality of disks in the remote cache using the life parameters
associated with the plurality of disks in the remote cache; based
on the priority score, determine a disk with the greatest priority,
the disk with the greatest priority having a highest priority of
the plurality of disks in the remote cache; determine that at least
two disks of the plurality of disks in the remote cache each have
the highest priority; wherein selecting the first disk from the
plurality of disks comprises selecting a first available disk of
the at least two disks of the plurality of disks in the remote
cache with the highest priority; and wherein causing the data
associated with the write request to be written to the first disk
comprises causing the data associated with the write request to be
written to the first available disk.
17. The computer-readable medium of claim 15, the
computer-executable instructions, when executed by a processor,
further operable to: calculate a priority score for the plurality
of disks using the life parameters associated with the plurality of
disks; based on the priority score, determine a disk with the
greatest priority; and wherein selecting the first disk from the
plurality of disks comprises selecting the disk with the greatest
priority.
18. The computer-readable medium of claim 17, the
computer-executable instructions, when executed by a processor,
further operable to: determine that at least two disks of the
plurality of disks each have the highest priority; wherein
selecting the first disk from the plurality of disks comprises
selecting a first available disk of the at least two disks of the
plurality of disks with the highest priority; and wherein causing
the data associated with the write request to be written to the
first disk comprises causing the data associated with the write
request to be written to the first available disk with the highest
priority.
19. The computer-readable medium of claim 15, wherein the cache
pool is a local cache and the computer-executable instructions,
when executed by a processor, are further operable to: determine
whether the local cache is preferred; determine whether each disk
in the local cache is full; if the local cache is preferred and
each disk in the local cache is not full, then determining the
first disk using the life parameter comprises determining a local
disk using the life parameter, the local disk being in the local
cache; and if the local cache is preferred and each disk in the
local cache is full, then determining the first disk using the life
parameter comprises determining a remote disk using the life
parameter, the remote disk being in a remote cache.
20. The computer-readable medium of claim 15, the
computer-executable instructions, when executed by a processor,
further operable to: receive a second write request associated with
the cache pool; determine that a fairness cycling policy applies;
in response to determining that the fairness cycling policy
applies, select a second disk, the second disk identified using the
fairness cycling policy; and cause the data corresponding to the
write request to be written to the second disk.
Description
TECHNICAL FIELD
[0001] This disclosure relates generally to information handling
systems and more particularly to an improved system and method for
managing a cache pool.
BACKGROUND
[0002] As the value and use of information continues to increase,
individuals and businesses seek additional ways to process and
store information. One option available to users is information
handling systems. An information handling system generally
processes, compiles, stores, and/or communicates information or
data for business, personal, or other purposes thereby allowing
users to take advantage of the value of the information. Because
technology and information handling needs and requirements vary
between different users or applications, information handling
systems may also vary regarding what information is handled, how
the information is handled, how much information is processed,
stored, or communicated, and how quickly and efficiently the
information may be processed, stored, or communicated. The
variations in information handling systems allow for information
handling systems to be general or configured for a specific user or
specific use such as financial transaction processing, airline
reservations, enterprise data storage, or global communications. In
addition, information handling systems may include a variety of
hardware and software components that may be configured to process,
store, and communicate information and may include one or more
computer systems, data storage systems, and networking systems.
[0003] The concept of caching data in a cache has long been
employed in information handling systems. A cache can include a
block of memory for temporarily storing data that may be likely to
be accessed again. Maintaining a cache of data likely to be
accessed again may increase system performance. For example, an
information handling system may be coupled to a storage array via a
network, but may maintain a storage cache local to the information
handling system. Data read from or written to the remote storage
array that is likely to be accessed again (e.g., data that is
most-recently used and/or most-frequently used) may be stored to
the local cache, so that the information handling system can access
the cached data from the cache, rather than accessing the data from
the remote storage array which may take a longer period of time,
due to latency inherent in performing input/output operations over
a network.
SUMMARY
[0004] In one embodiment, a method includes receiving a write
request associated with a cache pool comprising a plurality of
disks. The write request comprises data associated with the write
request. The method additionally includes selecting a first disk
from the plurality of disks using a life parameter associated with
the first disk. The method further includes causing the data
associated with the write request to be written to the first
disk.
[0005] In one embodiment, a system includes a processor and a
memory communicatively coupled to the processor. The processor is
configured to receive a write request associated with a cache pool,
which comprises a plurality of disks. The write request comprises
data associated with the write request. The processor is
additionally configured to select a first disk from the plurality
of disks using a life parameter associated with the first disk. The
processor is further configured to cause the data associated with
the write request to be written to the first disk.
[0006] Certain embodiments of the present disclosure may provide
one or more technical advantages. The industry has increasingly
implemented caches using solid-state storage devices. However, one
well-known disadvantage of solid-state storage devices are the
limited number of times data can be written to the devices compared
to other forms of storage. Solid-state storage devices often employ
flash memory. Typically, a cell of a flash-based solid-state
storage device can be only be erased (and therefore written) a
limited number of times before it fails. Accordingly, over time a
sufficient number of cells may fail such that the solid-state
storage device may be incapable of writing further data. A
technical advantage of one embodiment includes causing disks to
wear at approximately the same or a similar rate, reducing or
eliminating the risk that one disk may be overused and fail
substantially sooner than other disks in the system (e.g., one disk
receives 1%, 2%, 5%, or 10% more writes to it than the other disks
in the system). Another technical advantage of one embodiment
includes reducing the cost of replacing disks that fail
substantially earlier than others in system.
[0007] Other technical advantages of the present disclosure will be
readily apparent to one skilled in the art from the following
figures, descriptions, and claims. Moreover, while specific
advantages have been enumerated above, various embodiments may
include all, some, or none of the enumerated advantages.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Reference is now made to the following description taken in
conjunction with the accompanying drawings, wherein like reference
numbers represent like parts.
[0009] FIG. 1 is a block diagram of an example of an information
handling system in accordance with some embodiments of the present
disclosure.
[0010] FIG. 2A illustrates an example of a database comprising a
set of parameters associated with nodes in the information handling
system of FIG. 1.
[0011] FIG. 2B illustrates an example of a database comprising a
set of priority scores associated with nodes in the information
handling system of FIG. 1.
[0012] FIG. 3 is a flowchart describing an example of managing a
cache pool.
DETAILED DESCRIPTION
[0013] FIG. 1 illustrates a block diagram of an example of
information handling system 100 in accordance with some embodiments
of the present disclosure. In particular embodiments, system 100
may include one or more nodes 102a-c that are coupled to network
160. Node 102a includes cache 103a, node 102b includes cache 130b
and node 102c includes cache 103c. Caches 103a-c each include a
plurality of disks and are included in cache pool 170. Nodes 102a-c
may also include memory modules 120a-c. Memory modules 120a-c may
include parameters 122a-c, which may include information about
disks in caches 130a-130c. For example, a life parameter may how
many times data may be written to a disk and a usage parameter may
represent the available storage space remaining on disk. Memory
modules 120a-c may further include priority scores 124a-c, which
scores each disk in cache pool 170 based on parameters 122a-c
associated with the disks to select a disk that the system should
write data to. System 100 is configured to receive a write request
associated with cache pool 170, select a first disk from cache pool
170 using a life parameter (e.g., one of parameters 122a-c)
associated with the first disk, and cause the data associated with
the write request to be written to the first disk.
[0014] Nodes 102a-c, in some embodiments, may comprise a server
sled, a server module, a server node, a server blade, or any
suitable structure capable of housing node components. Nodes 102a-c
may comprise processors 110a-c, memory modules 120a-c, caches
130a-c, user interfaces 150a-c, and network interfaces 140a-c. It
should be understood that the particular illustrated components of
each node 102a-c are examples only and that additional, fewer,
and/or alternative components may be present. For example, each
node 102a-c may include multiple processors 110a-c or memory
modules 120a-c.
[0015] In particular embodiments, user interfaces 150a-c include
hardware, software, or both, providing one or more interfaces for
communication between information handling system 100 and one or
more I/O devices. Information handling system 100 may include one
or more of these I/O devices, where appropriate. One or more of
these I/O devices may enable communication between a person and
information handling system 100. As an example and not by way of
limitation, an I/O device may include a keyboard, keypad,
microphone, monitor, mouse, printer, scanner, speaker, still
camera, stylus, tablet, touch screen, trackball, video camera,
another suitable I/O device or a combination of two or more of
these. An I/O device may include one or more sensors. This
disclosure contemplates any suitable I/O devices and any suitable
user interfaces 150 for them. Where appropriate, user interfaces
150a-c may include one or more device or software drivers enabling
processors 110a-c to drive one or more of these I/O devices.
Although this disclosure describes and illustrates a particular
user interface, this disclosure contemplates any suitable user
interface.
[0016] Network interfaces 140, in some embodiments, include
hardware, software, or both providing one or more interfaces for
communication (such as, for example, packet-based communication)
between information handling system 100 and one or more other
information handling systems 100 or one or more networks. As an
example and not by way of limitation, network interface 140 may
include a network interface controller or card (NIC) or network
adapter for communicating with an Ethernet or other wire-based
network or a wireless NIC (WNIC) or wireless adapter for
communicating with a wireless network, such as a WI-FI network.
This disclosure contemplates any suitable network and any suitable
network interface 140 for the network. As an example and not by way
of limitation, information handling system 100 may communicate with
an ad hoc network, a personal area network (PAN), a local area
network (LAN), a wide area network (WAN), a metropolitan area
network (MAN), or one or more portions of the Internet or a
combination of two or more of these. One or more portions of one or
more of these networks may be wired or wireless. As an example,
information handling system 100 may communicate with a wireless PAN
(WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a
WI-MAX network, a cellular telephone network (such as, for example,
a Global System for Mobile Communications (GSM) network), or other
suitable wireless network or a combination of two or more of these.
Information handling system 100 may include any suitable network
interfaces 140a-c for any of these networks, where appropriate.
Although this disclosure describes and illustrates a particular
network interface, this disclosure contemplates any suitable
communication interface.
[0017] In particular embodiments, buses 112a-c include hardware,
software, or both coupling components of information handling
system 100 to each other. As an example and not by way of
limitation, buses 112a-c may include an Accelerated Graphics Port
(AGP) or other graphics bus, an Enhanced Industry Standard
Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT
(HT) interconnect, an Industry Standard Architecture (ISA) bus, an
INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a
Micro Channel Architecture (MCA) bus, a Peripheral Component
Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced
technology attachment (SATA) bus, a Video Electronics Standards
Association local (VLB) bus, or another suitable bus or a
combination of two or more of these. Although this disclosure
describes and illustrates a particular bus, this disclosure
contemplates any suitable bus or interconnect.
[0018] Processors 110a-c, in some embodiments, may comprise any
system, device, or apparatus operable to interpret and/or execute
program instructions and/or process data. Processors 110a-c may
include one or more: microprocessors, microcontrollers, digital
signal processors (DSP), graphical processing units (GPU),
application specific integrated circuits (ASIC), or another digital
or analog circuitry configured to interpret and/or execute program
instructions and/or process data. In some embodiments, processors
110a-c may interpret and/or execute program instructions and/or
process data stored locally (e.g., in memory modules 120a-c). In
the same or alternative embodiments, processors 110a-c may
interpret and/or execute program instructions and/or process data
stored remotely. This disclosure contemplates processors 110a-c
including any suitable number of any suitable internal registers,
where appropriate. Where appropriate, processors 110a-c may include
one or more arithmetic logic units (ALUs); be a multi-core
processor; or include one or more processors 110. Although this
disclosure describes and illustrates a particular processor, this
disclosure contemplates any suitable processor.
[0019] Caches 130a-c, in some embodiments, may comprise any system,
device, or apparatus operable to facilitate access to data stored
in a storage system (e.g., a file system, a database, a hard drive,
or other suitable storage systems). In particular embodiments,
caches 130a-c are operable to store copies of such data so that
such data may be accessed faster through caches 130a-c than by
accessing the storage system which stores such data. Caches 130a-c
may be communicatively coupled to processors 110a-c. For example,
caches 130a-c may be physically within nodes 102a-c and may be
coupled to processors 110a-c using buses 112a-c. As another
example, caches 130a-c may be physically stored in a separate
location and may be communicatively coupled to processors 110a-c
through an internal network. Caches 130a-c may include one or more
disks. Disks, in some embodiments, may comprise solid state drives
(SSDs) or any drive operable to store information associated with a
write request. Caches 130a-c may include any number of disks. For
example, cache 130a may comprise four disks (disk A, disk B, disk
C, and disk D); cache 130b may comprise two disks (disk E and disk
F); and cache 130c may comprise three disks (disk G, disk H, and
disk I). Although illustrated with a specific number of disks,
system 100 may include any number of disks within caches
130a-c.
[0020] In some embodiments, nodes 102a-c may cause data to be
written to a disk in either a local cache or a remote cache. In
some embodiments, a local cache may be physically stored within
nodes 102a-c and/or may be located on the same internal network as
a host node (e.g., 102a). Each of nodes 102a-c may have access to
one or more local caches and one or more remote caches. For
example, cache 130a may be a local cache to node 102a and a remote
cache to nodes 102b and 102c. As another example, cache 130b may be
a local cache to node 102b and a remote cache to nodes 102a and
102c. As an additional example, cache 130c may be a local cache to
node 102c and a remote cache to nodes 102a and 102b. All caches
130a-c that are available for processors 110a-c to cause data to be
written on may comprise cache pool 170. Although this disclosure
describes an illustrates a particular number of caches 130a-c,
system 100 may include any number of caches.
[0021] Memory modules 120a-c may, in various embodiments, comprise
any system, device, or apparatus operable to retain and/or retrieve
program instructions and/or data (e.g., computer-readable media).
Memory modules 120a-c may comprise one or more modules; such
modules can include random access memory (RAM), electrically
erasable programmable read-only memory (EEPROM), a PCMCIA card,
flash memory, magnetic storage, opto-magnetic storage, and/or a
suitable selection and/or array of volatile or non-volatile memory
that retains data after power to its associated information
handling system, such as information handling system 100, is
powered down. In some embodiments memory modules 120a-c may be
implemented using any of these techniques, including techniques
different from each other. In some embodiments, memory modules
120a-c comprise parameters 122a-c and priority scores 124a-c.
[0022] Parameters 122a-c, in some embodiments, may include any
number of parameters associated with the disks in caches 130a-c and
indicating characteristics and/or properties of disks. Parameters
122a-c, in some embodiments, may include a life parameter, which
may represent the number of times data has been written to disk,
the remaining number of times data can be written to disk, or any
information indicating when disk is likely to fail. Disks, in some
embodiments, may comprise SSDs that may be rated and marketed
according to a maximum program and erase (P/E) cycles, known as the
endurance rating (e.g., 5K, 10K, 100K). Because SSDs have a limited
predetermined life (e.g., number of P/E cycles available), a life
parameter may track the remaining write life (e.g., number of P/E
cycles) available. The life parameter of each disk may be
represented in any suitable format, for example, as a number of
remaining cycles or a percentage of remaining life. Life parameters
for each disk may be stored in memory modules 120a-c in any
suitable format (e.g., as a table, matrix, or database). Parameters
122a-c, in some embodiments, may also include usage parameters for
disks. Usage parameter may represent the available storage space
remaining on disk. The usage parameter of each disk may be
presented in any suitable format, for example, as a percentage of
space currently used on disk, as a percentage of space available on
disk, as a value of space available on disk, or as a value of space
used on disk. Usage for each disk may be stored in memory modules
120a-c in any suitable format (e.g, in a table, matrix, or
database). FIG. 2A illustrates database 222 indicating life
parameters and usage parameters for each disk in cache pool 170.
Processors 110a-c may access parameters 122a-c in memory modules
120a-c when selecting a first disk to cause data to be written to,
as described below. By utilizing the life parameter when selecting
a disk to write to, processors 110a-c may reduce or eliminate the
risk that one of disks may be written to more frequently than other
disks in various embodiments. By seeking to have the life
parameters among all disks in cache pool 170 be similar to each
other, processors 110a-c may allow for a more even distribution of
remaining life among disks. This can reduce or eliminate the risk
that one disk may fail substantially sooner than other disks (e.g.,
one disk may receive 10% more writes than other disks). This can
increase the life of caches 130a-c without significantly impacting
the performance of caches 130a-c.
[0023] Priority scores 124, in some embodiments, may comprise a
score for each of the plurality of disks in cache pool 170.
Priority scores 124a-c may indicate which disk has the highest
priority, and thus which disk processors 110a-c should select to
cause data from a write request to be written on. Priority scores
124a-c may be calculated by processors 110a-c using parameters
122a-c. For example, processors 110a-c may determine a first
priority based on a disk's current life parameter value, determine
a second priority based on a disk's current usage parameter value,
and combine these priorities to calculate a priority score. An
administrator of system 100 may determine the priority associated
with each parameter value. FIG. 2B illustrates database 224
indicating priority scores 124a-c for each disk in cache pool 170.
Processors 110a-c may access priority scores 124a-c in memory
modules 120a-c when selecting a first disk to cause data to be
written to, as described below.
[0024] In one example of operation of information handling system
100, user interface may receive a write request from a user or
administrator of system 100. Processors 110a-c may determine a life
parameter of one or more disks in the local cache (e.g., cache 130a
for processor 110a) and in one or more remote caches (e.g., caches
130b and 130c). Processors 110a-c may calculate priority scores
124a-c for each disk of cache pool 170 and select the disk with the
highest priority. Processors 110a-c then causes the data associated
with the write request to be written to the disk with the highest
priority.
[0025] In some embodiments, processors 110a-c receive parameters
122a-c associated with a plurality of disks. Parameters 122a-c may
comprise a life parameter, a usage parameter, and any other
parameters associated with a disk. In some embodiments, processors
110a-c may receive parameters 122a-c in different ways. For
example, each time processors 110a-c receive a write request,
processors 110a-c may request parameters from disks in a local
cache (e.g., 130b for processor 110b) and communicate with
processors 110a and 110c to receive parameters 122a-c from disks in
remote caches (e.g., 130c and 130a). As another example, processors
110a-c may receive parameters 122a-c on a regular time interval
(for example, hourly, daily, weekly, or monthly). Processors 110a-c
may also receive parameters 122a-c each time that data is written
to one of disks A-I in cache pool 170 (e.g., any time a parameter
value changes or is updated). In some embodiments, processors
110a-c may receive priority scores 124a-c when receiving parameters
122a-c. In some embodiments, processors 110a-c may receive
parameters 122a-c and may calculate priority scores 124a-c
itself.
[0026] In some embodiments, processors 110a-c calculate a priority
score for the plurality of disks using one or more parameters from
parameters 122a-c associated with the plurality of disks.
Processors 110a-c may refer to a priority matrix to determine
priority scores 124a-c. An example of the priority matrix that may
be used to calculate priority scores for each disk is shown in
Table 1 below.
TABLE-US-00001 TABLE 1 priority matrix Life User-Defined Usage
User-Defined parameter Priority Parameter Priority 80-100% .1
80-100% 5 60-80% .2 60-80% 4 40-60% .3 40-60% 3 20-40% .4 20-40% 2
0-20% .5 0-20% 1
As shown in Table 1, life parameter may be indicated as a
percentage of remaining life of a disk. As the remaining life
increases (high percentage), the user-defined priority assigned to
the range decreases, corresponding to a higher priority. For
example, if a disk has 100% remaining write life, then it would
receive a priority of 0.1, indicating that it should be selected
above other disks. As shown in Table 1, usage parameter may be
indicated as a percentage of space used on a disk. As the usage
increases (high percentage), the user-defined priority assigned to
the range increases, corresponding to a lower priority. For
example, if a disk has used 98% of its current space, the disk
would receive a priority of 5, indicating that it should not be
selected above other disks due to the low space available. Table 1
represents an example of the priorities that may be assigned based
on the values of the various parameters associated with a disk.
Administrator of system 100 may define the priorities in any
suitable manner.
[0027] Processors 110a-c may use parameters 122a-c and a priority
matrix (an example of which is shown above in Table 1) in order to
calculate priority scores 124a-c for each disk. Referring to FIG.
2A, using database 222, which shows parameter values for the disks
in cache pool 170, processors 110a-c may calculate priority scores
124a-c. For example, disk A has a life parameter value of 60-80%,
which corresponds to a priority of 0.2 based on priority matrix in
Table 1 above. Disk A has a usage parameter of 20-40%, which
corresponds to a priority of 2 based on priority matrix in Table 1
above. Processors 110a-c may then combine the two priorities from
each parameter to determine the priority score. Processors 110a-c
may combine the two priorities through multiplication, addition,
averaging, or any suitable operation to determine the priority
score. Continuing the example from above, processors 110a-c may add
the life parameter priority of 0.2 to the usage parameter priority
of 2.0 to determine a priority score of 2.2 for disk A. FIG. 2B
illustrates an example of priority score matrix 224, which shows
the calculated priority scores 124a-c for the disks in cache pool
170.
[0028] In some embodiments, processors 110a-c determine a disk with
the greatest priority in cache pool 170. In some embodiments,
processors 110a-c may determine the disk with the lowest priority
score (e.g., closest to 0), to determine the disk with the highest
priority. Continuing the example from above and referring to FIG.
2B, disk A may have the lowest priority score of the disks in local
cache 130a. Disk A has lower priority scores than disks B, C, and D
because it has a large percentage of remaining life (as indicated
by its life parameter of 60-80%) and a low current usage percentage
(as indicated by its usage parameter of 20-40%), resulting in a low
priority score of 2.2
[0029] In some embodiments, processors 110a-c may determine that
writing to a disk in a local cache (e.g., 130c for node 102c) is
preferred to writing to a disk in a remote cache (e.g., 130a for
node 102c). If a local cache is preferred, processors 110a-c may
select one of the disks in the local cache even if a disk in a
remote cache has a higher priority. For example, referring to
database of priority scores 224 illustrated in FIG. 2B, processor
110a (of node 102a) may select disk A as the disk to use for a
write request even though disk H of node 102c has a lower priority
score, and thus a higher priority. In some embodiments, processors
110a-c may determine that a local cache is not preferred. For
example, processors 110a-c may select disk H as the disk with the
greatest priority based on its score of 1.5, which is the lowest
score listed in database 224, indicating that it has the highest
priority.
[0030] For the purposes of this disclosure, an information handling
system may include any instrumentality or aggregate of
instrumentalities operable to compute, calculate, determine,
classify, process, transmit, receive, retrieve, originate, switch,
store, display, communicate, manifest, detect, record, reproduce,
handle, or utilize any form of information, intelligence, or data
for business, scientific, control, or other purposes. For example,
an information handling system may be a personal computer (e.g.,
desktop or laptop), tablet computer, mobile device (e.g., personal
digital assistant (PDA) or smart phone), server (e.g., blade server
or rack server), a network storage device, or any other suitable
device, and may vary in size, shape, performance, functionality,
and price. The information handling system may include random
access memory (RAM), one or more processing resources such as a
central processing unit (CPU) or hardware or software control
logic, ROM, and/or other types of nonvolatile memory. Additional
components of the information handling system may include one or
more disk drives, one or more network ports for communicating with
external devices as well as various input and output (I/O) devices,
such as a keyboard, a mouse, touchscreen and/or a video display.
The information handling system may also include one or more buses
operable to transmit communication between the various hardware
components.
[0031] This disclosure contemplates any suitable number of
information handling systems 100. Where appropriate, information
handling system 100 may include one or more information handling
systems 100, be unitary or distributed, span multiple locations,
span multiple machines, span multiple data centers, or reside in a
cloud, which may include one or more cloud components in one or
more networks. Where appropriate, one or more information handling
systems 100 may perform without substantial spatial or temporal
limitation one or more steps of one or more methods described or
illustrated herein. As an example and not by way of limitation, one
or more information handling systems 100 may perform in real time
or in batch mode one or more steps of one or more methods described
or illustrated herein. One or more information handling systems 100
may perform at different times or at different locations one or
more steps of one or more methods described or illustrated herein,
where appropriate. Although this disclosure describes and
illustrates a particular information handling system having a
particular number of particular components in a particular
arrangement, this disclosure contemplates any suitable information
handling system having any suitable number of any suitable
components in any suitable arrangement.
[0032] For the purposes of this disclosure, computer-readable media
may include any instrumentality or aggregation of instrumentalities
that may retain data and/or instructions for a period of time.
Computer-readable media may include, without limitation, storage
media, such as a direct access storage device (e.g., a hard disk
drive or floppy disk); a sequential access storage device (e.g., a
tape disk drive); a compact disk; CD-ROM; DVD; random access memory
(RAM); read-only memory (ROM); electrically erasable programmable
read-only memory (EEPROM); solid state drives (SSDs) such as Single
Level Cell (SLC), Multi Level Cell (MLC), enterprise MLC (eMLC),
and/or flash memory; as well as communications media, such as
wires, optical fibers, microwaves, radio waves, and other
electromagnetic and/or optical carriers; and/or any combination of
the foregoing.
[0033] Modifications, additions, or omissions may be made to the
systems described herein without departing from the scope of the
disclosure. For example, information handling system 100 may
include any number of nodes 102a-c, cache pools 170, and networks
160. The components may be integrated or separated. Moreover, the
operations may be performed by more, fewer, or other components.
Additionally, the operations may be performed using any suitable
logic comprising software, hardware, and/or other logic.
[0034] FIG. 3 is a flowchart describing an example of managing a
cache pool by system 100 of FIG. 1. At step 302, in some
embodiments, processor 110a may receive a write request from user
interface 150a. The write request may have data associated with it
to be written to one or more of the disks of cache pool 170.
[0035] At step 304, in some embodiments, processor 110a determines
whether a fairness cycling policy applies. A fairness cycling
policy may be a policy that writes data to each disk based on a
predetermined rotation of the disks (e.g., the disks may be written
to in a sequence). If a fairness cycling policy applies, step 306
may be performed and if a fairness cycling policy does not apply,
step 308 may be performed. If processor 110a determines that a
fairness cycling policy applies in step 304, then processor 110a
writes the data corresponding to the write request received in step
302 to a next disk in cache pool 170 at step 306. For example,
using a fairness cycling policy, processor 110a may determine a
next disk by determining which disk is next in the predetermined
rotation of the disks. As another example, if the local cache is
preferred, processor 110 may determine a next disk by determining
which disk of the disks in the local cache is next in the
predetermined rotation of the disks. After writing the data to the
next disk in step 306, the method ends.
[0036] If processor 110a determines at step 304 that a fairness
cycling policy does not apply, processor 110a determines whether
the local cache is preferred at step 308, in some embodiments. If
the local cache is preferred, step 310 may be performed and if a
local cache is not preferred, step 326 may be performed. In some
embodiments, a user or administrator of system 100 may select a
setting that the local cache is preferred. For example, for
processor 110a, local cache may comprise cache 130a, including
disks A, B, C and D. In some embodiments, processor 110a may
perform step 308, determining whether the local cache is preferred,
prior to step 304, determining whether a fairness cycling policy
applies. For example, processor 110a may determine that a local
cache is preferred, determine that a fairness cycling policy
applies, and write the data corresponding to the write request to a
next disk in the local cache pool. As another example, processor
110 may determine that a local cache is not preferred, determine
that a fairness cycling policy applies, and write the data
corresponding to the write request to a next disk in the remote
cache pool.
[0037] At step 310, in some embodiments, processor 110a determines
whether the local cache, for example, cache 130a, is full.
Processor 110a may determine the usage of each of the disks by
polling the disks within cache 130a to determine whether any of the
disks in cache 130a contain available space. Processor 110a may
access the stored parameters 122a in memory module 120a that may
include a database of usage parameters for each disk in cache 130a.
FIG. 2A illustrates an example of database 222 storing parameters
122a. If processor 110a determines that a local cache is full in
step 310, step 326 may be performed in which processor 110a
examines the disks of remote caches (e.g., caches 130b and 130c).
If processor 110a determines that the local cache is not full
(e.g., at least one of the disks in cache 130a has a current usage
less than 100% or otherwise has sufficient capacity to store
information associated with the write request), step 312 may be
performed.
[0038] At step 312, in some embodiments, processor 110a determines
life parameters for the plurality of disks in the local cache.
Processor 110a may determine the life parameter for the plurality
of disks, such as disks A, B, C, and D, in any number of ways. For
example, processor 110a may poll each of the disks within cache
130a to determine the life parameters. As another example,
processor 110a may access memory modules 120a-c that store
parameters 122a. An example of parameters 122a is depicted in FIG.
2A in matrix 222.
[0039] At step 314, in some embodiments, processor 110a determines
usage parameters for the plurality of disks in cache 130a.
Processor 110a may determine the usage parameters by polling the
disks and/or by accessing parameters 122a in memory 120a, similar
to the technique that processor 110a uses to determine the life
parameters at step 312.
[0040] At step 316, in some embodiments, processor 110a calculates
priority scores for the plurality of disks in local cache 130a.
Processor 110a may calculate priority scores 124a using the life
parameters and the usage parameters determined at steps 312 and
314, respectively. For example, processor 110a may calculate the
priority score of disk B in local cache 130a as 4.4. Disk B may
have a remaining life parameter of 20-40% and a current usage
parameter of 60-80%, as shown database 222 of FIG. 2A. Processor
110a may use any suitable scoring technique to associate a score
with life parameter and usage parameter. For example, a priority
associated with a 20-40% life parameter may be 0.4 and a priority
associated with usage parameter 60-80%, may be 4.0 (as illustrated
above in Table 1). Continuing the example, processor 110a may add
the life parameter priority (0.4) and the usage parameter priority
(4.0) to determine the priority score of disk B as 4.4. Processor
110a may use any suitable scoring technique and associate any
suitable priorities with certain parameter values. An example of
priority scores associated with each life parameter and usage
parameter is shown in Table 1 above. In some embodiments, processor
110a may calculate the priority score for each of the disks in
cache pool 170, for example a priority score for each of disks A,
B, C, D, E, F, G, H, and I. An example of priority scores database
224 that may be stored in memory 120a is illustrated in FIG.
2B.
[0041] At step 318, in some embodiments, processor 110a determines
a disk with the greatest priority based on priority scores 124a of
the disks. Processor 110a may compare priority scores 124a for each
disk (e.g., disks A, B, C, D) to determine which disk has the
highest priority. Continuing the example from above, disk A may
have a priority score of 2.2, disk B may have a priority score of
4.4, disk C may have a priority score of 4.5 and disk D may have a
priority score of 5.3. In this example, processor 110a may select
disk A as the disk with the lowest priority score, which
corresponds with the highest priority disk.
[0042] At step 320, in some embodiments, processor 110a determines
whether one or more disks each have the highest priority. For
example, if disk A has a priority of 2.2, disk B has a priority of
4.4, disk C has a priority of 2.2, and disk D has a priority of
5.3, then disk A and disk C both have the same priority score of
2.2. Because 2.2 is the lowest priority score of the disks in local
cache 130a (which corresponds to the highest priority), processor
110a may determine that more than one disk has the highest
priority. If at step 320 processor 110a determines that one or more
disks have the highest priority, for example, disk A and disk C
having the same priority score of 2.2, then processor 110a may
write the data to a first available disk with the highest priority
in step 322. Processor 110a may determine the first available disk
by determining which disk is next in the predetermined rotation of
the disks. If at step 320, processor 110a determines that only one
disk has the highest priority (e.g., disk A's priority score of 2.2
results in it having the highest priority), then processor 110a, at
step 324, writes the data associated with the write request
received in step 302 to disk A in various embodiments. After
writing the data either to the first available disk in step 322 or
to the disk with the greatest priority in step 324, the method
ends.
[0043] If processor 110a determines that the local cache is not
preferred in step 308, or that the local cache is full in step 310,
the method continues to step 326. At step 326, in some embodiments,
processor 110a determines a life parameter for a plurality of disks
in a remote cache. A remote cache may be any cache that is not
located on node 102a. For example, referring to FIG. 1, cache 130b
and cache 130c would be remote caches to node 102a. At step 328, in
some embodiments, processor 110a may determine a usage parameter
for the plurality of disks in the remote cache. For example,
processor 110a may communicate with processors 110b and 110c about
caches 130b and 130c through network 160. In some embodiments,
determining life and usage parameters of a plurality of disks in
steps 326 and 328 can be performed using one or more of the
techniques discussed above with respect to steps 312-314.
[0044] At step 330, in some embodiments, processor 110a may
calculate priority scores for the plurality of disks in the remote
cache. For example, processor 110a may determine that disk E of
remote cache 130b has a priority score of 5.2 and that disk F of
remote cache 130b has a priority score of 4.1. Processor 110a may
further determine the priority scores of the disks located in cache
130c. For example, disk G may have a priority score of 3.4, disk H
may have a priority score of 1.5 and disk I may have a priority
score of 1.3. In some embodiments, calculating a priority score for
the disks in remote caches in step 330 can be performed using one
or more of the techniques discussed above with respect to step
316.
[0045] At step 332, in some embodiments, processor 110a may
determine the disk with the greatest priority based on the priority
scores calculated in step 330. Continuing the example from above,
processor 110a may determine that Disk H has the lowest priority
score of the disks in the remote caches 130b and 130c, and thus
that Disk H has the highest priority. In some embodiments,
determining the disk with the greatest priority in step 332 can be
performed using one or more techniques discussed above with respect
to step 318.
[0046] In some embodiments, processor 110a determines whether one
or more disks each have the highest priority in step 334.
Determining whether one or more disks each have the highest
priority in step 334 can be performed using one or more of the
techniques discussed above with respect to step 320. Continuing the
example from above, processor 110a may determine that only one disk
has the highest priority (e.g., Disk H with a priority score of
1.5). If processor 110a determines that only one disk has the
highest priority, then processor 110a causes the data to be written
to the selected disk with the greatest priority (e.g., disk H) in
step 338. Processor 110a may send a message to network interface
140c through network interface 140a via network 160 so that
processor 110c may write the data to disk H located in cache 130c.
If, at step 334, processor 110a determines that at least two disks
have the highest priority, processor 110a causes the data from the
write request to be written to a first available disk with the
highest priority in step 336 in some embodiments. For example, if
disk E has a priority score of 1.5 and disk H has a priority score
of 1.5, resulting in both of them having the highest priorities of
the disks in cache pool 170, then processor 110a may select disk E
as the first available disk. After processor 110a causes the data
to be written to either the first available disk with the highest
priority in step 336 or to the selected disk to use for a write
request in step 338, the method ends.
[0047] Modifications, additions, or omissions may be made to the
methods described in FIG. 3 without departing from the scope of the
disclosure. For example, the steps may be combined, modified, or
deleted where appropriate, and additional steps may be added. For
example, processors 110a-c may determine the disk with the greatest
priority in step 318 based on the life parameters of the disks. In
this example, steps 314 and 316, which determine usage parameters
and calculate priority scores may be omitted. Additionally, the
steps may be performed in any suitable order without departing from
the scope of the present disclosure. While discussed as processors
(e.g., 110a, 110b, and 110c) and their components performing the
steps, any suitable component of information handling system 100
may perform one or more of the steps.
[0048] Although the present disclosure has been described with
several embodiments, a myriad of changes, variations, alterations,
transformations, and modifications may be suggested to one skilled
in the art, and it is intended that the present disclosure
encompass such changes, variations, alterations, transformations,
and modifications as fall within the scope of the appended
claims.
* * * * *