The disclosure relates generally to computer systems, and more particularly to computer systems using storage devices to extend system memory.
Computer systems that include multiple storage devices may have different workloads. One storage device may spend more time writing data than another storage device. For storage devices, such as Solid State Drives (SSDs), where it may take longer to write data than to read data, this workload imbalance may result in the overall performance of the computer system being reduced.
A need remains to process balance the loads in across storage devices.
The drawings described below are examples of how embodiments of the disclosure may be implemented, and are not intended to limit embodiments of the disclosure. Individual embodiments of the disclosure may include elements not shown in particular figures and/or may omit elements shown in particular figures. The drawings are intended to provide illustration and may not be to scale.
Embodiments of the disclosure include a load balancing daemon. The load balancing daemon may identify a storage device from which to migrate a page, and a page on the storage device to migrate. The load balancing daemon may also identify another storage device to which the page may be migrated. The load balancing daemon may then manage the migration of the page from the first storage device to the second storage device.
Reference will now be made in detail to embodiments of the disclosure, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth to enable a thorough understanding of the disclosure. It should be understood, however, that persons having ordinary skill in the art may practice the disclosure without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first module could be termed a second module, and, similarly, a second module could be termed a first module, without departing from the scope of the disclosure.
The terminology used in the description of the disclosure herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used in the description of the disclosure and the appended claims, the singular forms “a”, “an”, and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The components and features of the drawings are not necessarily drawn to scale.
Computer systems may include different forms of storage for data. Typically, computer systems include a host memory (which may be a volatile storage, meaning that the information stored therein may be lost if power is interrupted) and a storage device (which may be a non-volatile storage, meaning that the information stored therein may be preserved even if power is interrupted).
These different forms of storage may have different advantages and disadvantages. For example, aside from the risk of data loss if power is interrupted, host memory may be more expensive to purchase in large amounts, but may have a relatively fast response time (to read and/or write data). Non-volatile storage, on the other hand, may not lose data if power is interrupted, and may be purchased in large amounts inexpensively, but may have a slower response time.
Some computer systems attempt to present all storage (system memory and storage devices) as one extended storage. Applications may read from or write to addresses in this extended view of storage without knowledge of exactly where the data is stored: the computer system may manage these details.
But for storage devices, particularly Solid State Drives (SSDs), which have a slower response time to write data than to read data, a storage device that spends a lot of time writing data may end up slowing down read requests sent to that storage device. If there are other storage devices available, and those other storage devices have lesser loads, the overall performance of the system may be reduced as a result of one storage device handling a large number of write requests.
Embodiments of the disclosure address these issues by identifying the devices that are busiest and idlest, based on updates to where data is stored within the storage device. If the difference in workload between the busiest and idlest devices exceeds a threshold, hot pages may be migrated from the busiest device to the idlest device, to attempt to balance their relative loads and improve overall system performance.
Processor 110 may be coupled to memory 115. Memory 115 may be any variety of memory, such as flash memory, Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Persistent Random Access Memory, Ferroelectric Random Access Memory (FRAM), or Non-Volatile Random Access Memory (NVRAM), such as Magnetoresistive Random Access Memory (MRAM), etc. Memory 115 may also be any desired combination of different memory types, and may be managed by memory controller 125. Memory 115 may be used to store data that may be termed “short-term”: that is, data not expected to be stored for extended periods of time. Examples of short-term data may include temporary files, data being used locally by applications (which may have been copied from other storage locations), and the like.
Processor 110 and memory 115 may also support an operating system, under which various applications may be running. These applications may issue requests (which may also be termed commands) to read data from or write data to either memory 115 or storage devices 120-1 and/or 120-2 (which may be referred to collectively as storage device 120). Storage device 120 may be accessed using device driver 130. While
In some embodiments of the disclosure, storage devices 120 may be used in combination with memory 115 to operate as a heterogeneous memory system. In a heterogeneous memory system, applications may issue load and/or store requests using virtual addresses associated with the applications. The system may then use page table 135 to determine where the data is actually stored: memory 115, storage device 120-1, or storage device 120-2. The system may then load or store the data as requested, with the application being unaware of the actual location where the data is stored. Page table 135 may be stored in memory 115 (as shown), even though storage devices 120-1 and 120-2 may be used to extend memory 115 to implement a heterogeneous memory system using, for example, a cache-coherent interconnect protocol, such as the Compute Express Link® (CXL) protocol, to present a combined memory to applications (Compute Express Link is a registered trademark of the Compute Express Link Consortium, Inc.).
As discussed below with reference to
In an ideal situation, data would be read and/or written with equal frequency. But from a practical point of view, not all data is handled equally, even by a single application. Some data may be written once and read multiple times; other data may be written repeatedly. For example, an application may store temporary data, such as interim calculation results. As the interim results are updated, the application may store the updated results. This process may continue until the final results are determined, at which point the final results may be stored.
Because different applications may use data differently—and a single application may use multiple data differently—it may happen that different memory addresses are subject to different levels (and types) of activity. For example, in a heterogeneous memory system such as that shown in
Load balancing daemon 145 may manage storage devices 120 to distribute data in a manner that attempts to balance the loads on storage devices 120. (As memory 115 and storage devices 120 may be used to present a heterogeneous memory system, load balancing daemon 145 may also manage loads on memory 115.)
SSD 120 may also include host interface layer 310, which may manage interface 305. If SSD 120 includes more than one interface 305, a single host interface layer 310 may manage all interfaces, SSD 120 may include a host interface layer for each interface, or some combination thereof may be used.
SSD 120 may also include SSD controller 315, various channels 320-1, 320-2, 320-3, and 320-4, along which various flash memory chips 325-1, 325-2, 325-3, 325-4, 325-5, 325-6, 325-7, and 325-8 may be arrayed. SSD controller 315 may manage sending read requests and write requests to flash memory chips 325-1 through 325-8 along channels 320-1 through 320-4. Although
Within each flash memory chip, the space may be organized into blocks, which may be further subdivided into pages, and which may be grouped into superblocks. Page sizes may vary as desired: for example, a page may be 4 KB of data. If less than a full page is to be written, the excess space is “unused”. Blocks may contain any number of pages: for example, 128 or 256. And superblocks may contain any number of blocks. A flash memory chip might not organize data into superblocks, but only blocks and pages.
While pages may be written and read, SSDs typically do not permit data to be overwritten: that is, existing data may be not be replaced “in place” with new data. Instead, when data is to be updated, the new data is written to a new page on the SSD, and the original page is invalidated (marked ready for erasure). Thus, SSD pages typically have one of three states: free (ready to be written), valid (containing valid data), and invalid (no longer containing valid data, but not usable until erased) (the exact names for these states may vary).
But while pages may be written and read individually, the block is the basic unit of data that may be erased. That is, pages are not erased individually: all the pages in a block are typically erased at the same time. For example, if a block contains 256 pages, then all 256 pages in a block are erased at the same time. This arrangement may lead to some management issues for the SSD: if a block is selected for erasure that still contains some valid data, that valid data may need to be copied to a free page elsewhere on the SSD before the block may be erased. (In some embodiments of the disclosure, the unit of erasure may differ from the block: for example, it may be a superblock, which as discussed above may be a set of multiple blocks.)
Because the units at which data is written and data is erased differ (page vs. block), if the SSD waited until a block contained only invalid data before erasing the block, the SSD might run out of available storage space, even though the amount of valid data might be less than the advertised capacity of the SSD. To avoid such a situation, SSD controller 315 may include a garbage collection controller (not shown in
SSDs also have a finite number of times each cell may be written before cells may not be trusted to retain the data correctly. This number is usually measured as a count of the number of program/erase cycles the cells undergo. Typically, the number of program/erase cycles that a cell may support mean that the SSD will remain reliably functional for a reasonable period of time: for personal users, the user may be more likely to replace the SSD due to insufficient storage capacity than because the number of program/erase cycles has been exceeded. But in enterprise environments, where data may be written and erased more frequently, the risk of cells exceeding their program/erase cycle count may be more significant.
To help offset this risk, SSD controller 315 may employ a wear leveling controller (not shown in
SSD controller 315 may include host-managed device memory (HDM) 330 and flash translation layer (FTL) 335 (which may be termed more generally a translation layer, for storage devices that do not use flash storage). When used in a heterogeneous memory system, SSD 120 may use HDM 330 to present to processor 110 of
In some embodiments of the disclosure, all the available storage in SSD 120 may be exposed to processor 110 of
HDM 330 may be thought of as operating “above” FTL 335. That is, HDM 330 may use addresses as determined by processor 110 of
In some embodiments of the disclosure, HDM 330 may be able to process access to any supported memory address directly. But in other embodiments of the disclosure (for example, in storage devices such as SSD 120 that may use block-addressing rather than byte-addressing), HDM 330 may include a buffer (not shown in
The size of the buffer may be any desired fraction of the storage offered by SSD 120. For example, the buffer may be 1/10 of the storage offered by SSD 120 that is used as heterogeneous memory: if SSD 120 supports a total of 16 GB of storage for heterogeneous memory, then the buffer may be 1.6 GB in size. If DRAM is used for the buffer, such embodiments of the disclosure may provide a balance between supporting byte-addressing and the cost of DRAM used as the buffer. The buffer may also be any variety of volatile memory or non-volatile memory. HDM 330 is discussed further with reference to
FTL 335 may handle translation of LBAs or other logical IDs (as used by processor 110 of
SSD controller 315 may also include processor 340. Processor 340 may be a local processor to SSD 120 that may offer some computational capability from within SSD 120. Processor 340 is optional, as shown by the dashed border.
If processor 340 is included, processor 340 may include cache 345. Cache 345 may operate similarly to a conventional cache, providing a storage closer to (and potentially faster than) processor 340. But if cache 345 is used to store information also stored in flash memory chips 325-1 through 325-8, this creates a potential problem. If data in cache 345 is updated but not immediately flushed, it could be that data in flash memory chips 325-1 through 325-8 (that is currently cached), accessed through HDM 330, could be stale relative to the values stored in cache 345. Since load balancing daemon 145 of
Finally, SSD controller 315 may also include interrupt logic 350. In some embodiments of the disclosure, load balancing daemon 145 of
As may be seen, host system memory 420 may be divided into multiple sections. In
For physical addresses in host memory addresses 425, memory management unit 415 may issue load or store requests over the memory bus to memory 115. For physical addresses in HDM addresses 430, memory management unit 415 may issue load or store requests using a cache-coherent interconnect protocol, such as the CXL.mem protocol, for example. Storage device 120 may receive such load store requests at memory interface 435. HDM 330 may then be used to access the data from flash memory chips 325-1 through 325-8 of
In
As discussed above, SSDs such as SSD 120 of
On the left side of
Upon receiving store request 505, FTL 335 of
While
Whenever a new store request, such as store request 505 of
As discussed above, due to SSDs erasing blocks rather than pages, it may sometimes occur that valid data exists in a block selected for garbage collection, and such data may be programmed into a new block on the SSD. In addition, as discussed above, to keep cells of flash memory relatively balanced in terms of how many program/erase cycles each cell has undergone, it may sometimes occur that data is moved to another block due to wear leveling. In some embodiments of the disclosure, FTL 335 of
If storage device 120 of
Because SSD 120 of
While
When update count 605 and write counts 610 are stored in HDM 330, load balancing daemon 145 of
Because processor 110 of
In
In some embodiments of the disclosure, the virtual addresses used by different applications may overlap. For example, two different applications might both use a virtual address 0x1000. To avoid confusion and avoid the risk of multiple applications accessing common heterogeneous memory system addresses, each application may have its own page table 135, mapping the virtual addresses used by the application to the physical addresses used by machine 105 of
Of course, in some embodiments of the disclosure, applications may share access to a particular physical address to enable sharing of data and/or inter-application communication. In such a situation, page table 135 for each application may map virtual addresses to the common physical address: this mapping may be from the same virtual address or different virtual addresses. But such a situation reflects an intentional sharing of data, rather than an accidental sharing of data.
While
Load balancing daemon 145 may then select two storage devices, one of which may be identified as a “busy” storage device and another that may be identified as an “idle” storage device. In some embodiments of the disclosure, particularly where system 105 of
While storage devices 120 may be relatively “busy” or “idle”, that fact alone does not mean that load balancing daemon 145 automatically needs to migrate data between the storage devices. For example, assume that storage device 120-1 had an associated update count 605 of
Once load balancing daemon 145 has determined that storage device 120-1 has a sufficiently greater load than storage device 120-2 to justify migrating data, load balancing daemon 145 may then determine which memory page(s) on storage device 120-1 to migrate to storage device 120-2. Load balancing daemon 145 may select memory page(s) using any desired algorithm. For example, load balancing daemon 145 may attempt to identify a set of memory pages on storage device 120-1 whose write counts 610 of
While embodiments of the disclosure may include selecting any set of memory pages to migrate between storage devices 120, migrating a memory page make take some time, which may impact other requests to storage device 120-2, particularly other write requests. Thus, in some embodiments of the disclosure a minimal set of memory pages may be migrated between storage devices 120. To keep the number of memory pages selected for migration as small as possible, the memory pages with the largest write counts 610 of
But if data is migrated from storage device 120-1 to storage device 120-2, and if page table 135 maps the virtual address used by the application to the “physical address” of the data, the information in page table 135 may be out-of-date after memory page 905 is migrated from storage device 120-1 to storage device 120-2. For example, consider the situation where memory addresses 0x0 0000 0000 through 0x1 FFFF FFFF identify data stored in memory 115 of
Since the data is being migrated from one memory page to another within the heterogeneous memory system, it is reasonable to update the physical address to which the virtual address is mapped in page table 135. Thus, to support the application being able to access its data, load balancing daemon 145 may update page table entry 910 in page table 135 to reflect the new location where the data is stored. For example, whereas physical address 710-2 of
In the above discussion, load balancing daemon 145 is described as migrating data between storage devices 120. As load balancing daemon 120 may focus on balancing the loads of storage devices 120, this is reasonable. But embodiments of the disclosure may also consider the load on memory 115 of
The above discussion also describes load balancing daemon 145 as focusing on write requests issued to storage devices 120. For storage devices such as SSDs, where write requests may take longer than read requests, balancing write request loads may be reasonable. But in some embodiments of the disclosure, load balancing daemon 145 may also factor in the loads imposed by read requests (or may focus solely on the loads imposed by read requests). For example, in systems where data is relatively static, read requests may predominate. Load balancing daemon 145 may attempt to distribute data across storage devices 120 in a manner that results in roughly equal numbers of read operations, which may improve overall performance.
Finally, the above discussion assumes that storage devices 120 have roughly equivalent performance. That is, the amount of time needed for storage device 120-1 to write data may be expected to be roughly the same as the amount of time needed for storage device 120-2 to write data, and similarly for reading data. If the performance storage devices 120 may vary, load balancing daemon 145 may factor in the time required for storage devices 120 to carry out their operations. For example, assume that storage device 120-1 takes an average of 100 microseconds (μs) to respond to a write request, and that storage device 120-2 takes an average of 200 μs to respond to a write request. If storage device 120-1 has processed 13 write requests (based on update count 605 of
Load balancing daemon 145 may periodically reset update counts 605 of
Note also that sometimes an application may no longer use a particular data, and may release it from memory. Since that data is not going to be used in the future, the write count associated with that address may be reset immediately. In addition, because the load represented by update count 605 of
While
But in addition to this organization, different portions of storage device 120 may be assigned to different uses. For example, pages 1005-1 through 1005-8 may be organized into two portions 1005 and 1010. Portion 1005 may be used with the heterogeneous memory system as described above. Portion 1010 may be accessed by applications as per normal storage access. That is, applications may issue read or write requests to access data stored in portion 1010, rather than load or store requests that might appear to be directed to memory 115 of
While the above description focuses on pages 1005-1 through 1005-8 in units of pages, embodiments of the disclosure may organize other units, such as blocks or superblocks, into portions 1005 and 1010. In addition, storage device 120 may include any number (one or more) portions, of which none, some, or all may overlap to varying degrees.
As discussed above with reference to
At block 1205, load balancing daemon 145 of
At block 1220 (
At block 1325, load balancing daemon 145 of
In
Embodiments of this disclosure introduce a new mechanism to detect hot pages using an indirect mechanism in a Solid State Drive (SSD) 120 of
As disclosed in embodiments, hot pages may migrate from one kind of system memory to another in a heterogeneous memory system 105 of
Embodiments of the disclosure may count the number of updates by tracking LBA-to-PBA mapping changes in SSD 120 of
Advantages of embodiments of the disclosure may include an increase lifetime of non-volatile memory, such as SSD, Phase-Change Memory (PCM), and other non-volatile random access memory (NVRAM) having limited write endurance. Furthermore, embodiments of the disclosure may improve overall performance of SSDs by reducing the number of garbage collection runs.
Embodiments of the disclosure may include page migration for load balance. In some embodiments of the disclosure, this page migration may migrate pages from non-volatile memory to another non-volatile memory for load balancing. In some embodiments of the disclosure, in order to find out the busiest devices and the idlest devices, the FTL 335 of
Embodiments of the disclosure may include a system 105 of
Embodiments of the disclosure may include an FTL 335 of
Embodiments of the disclosure may include storing the mapping update count in HDM 330 of
Embodiments of the disclosure may include page migration for load balancing, and may further include the FTL 335 of
Embodiments of this disclosure permit a load balancing daemon to determine information about writes to storage devices in a heterogeneous memory system. Based on this information, which may include update counts indicating the total number of writes to the storage devices, a load balancing daemon may select a busy storage device and an idle storage device, based on the relative number of writes to each storage device. The load balancing daemon may also use other information, such as the total number of writes to each page in the busy storage device, to select one or more pages for migration to the idle storage device. The load balancing daemon may have pages migrated from the busy storage device to the idle storage. The load balancing daemon may then update information in the host system to reflect the migration of the pages from the busy storage device to the idle storage device.
The following discussion is intended to provide a brief, general description of a suitable machine or machines in which certain aspects of the disclosure may be implemented. The machine or machines may be controlled, at least in part, by input from conventional input devices, such as keyboards, mice, etc., as well as by directives received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signal. As used herein, the term “machine” is intended to broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transportation devices, such as private or public transportation, e.g., automobiles, trains, cabs, etc.
The machine or machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits (ASICs), embedded computers, smart cards, and the like. The machine or machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communicative coupling. Machines may be interconnected by way of a physical and/or logical network, such as an intranet, the Internet, local area networks, wide area networks, etc. One skilled in the art will appreciate that network communication may utilize various wired and/or wireless short range or long range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, Bluetooth®, optical, infrared, cable, laser, etc.
Embodiments of the present disclosure may be described by reference to or in conjunction with associated data including functions, procedures, data structures, application programs, etc. which when accessed by a machine results in the machine performing tasks or defining abstract data types or low-level hardware contexts. Associated data may be stored in, for example, the volatile and/or non-volatile memory, e.g., RAM, ROM, etc., or in other storage devices and their associated storage media, including hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biological storage, etc. Associated data may be delivered over transmission environments, including the physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, etc., and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment, and stored locally and/or remotely for machine access.
Embodiments of the disclosure may include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, the instructions comprising instructions to perform the elements of the disclosures as described herein.
The various operations of methods described above may be performed by any suitable means capable of performing the operations, such as various hardware and/or software component(s), circuits, and/or module(s). The software may comprise an ordered listing of executable instructions for implementing logical functions, and may be embodied in any “processor-readable medium” for use by or in connection with an instruction execution system, apparatus, or device, such as a single or multiple-core processor or processor-containing system.
The blocks or steps of a method or algorithm and functions described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a tangible, non-transitory computer-readable medium. A software module may reside in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD ROM, or any other form of storage medium known in the art.
Having described and illustrated the principles of the disclosure with reference to illustrated embodiments, it will be recognized that the illustrated embodiments may be modified in arrangement and detail without departing from such principles, and may be combined in any desired manner. And, although the foregoing discussion has focused on particular embodiments, other configurations are contemplated. In particular, even though expressions such as “according to an embodiment of the disclosure” or the like are used herein, these phrases are meant to generally reference embodiment possibilities, and are not intended to limit the disclosure to particular embodiment configurations. As used herein, these terms may reference the same or different embodiments that are combinable into other embodiments.
The foregoing illustrative embodiments are not to be construed as limiting the disclosure thereof. Although a few embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible to those embodiments without materially departing from the novel teachings and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of this disclosure as defined in the claims.
Embodiments of the disclosure may extend to the following statements, without limitation:
Statement 1. An embodiment of the disclosure includes a system, comprising:
a processor;
a memory connected to the processor;
a first storage device connected to the processor, the first storage device including a first storage portion, the first storage portion including a memory page, the first storage portion to extend the memory;
a second storage device connected to the processor, the second storage device including a second storage portion, the second storage portion to extend the memory; and
a load balancing daemon to migrate the memory page from the first storage portion of the first storage device to the second storage portion of the second storage device based at least in part on a first update count of the first storage device and a second update count of the second storage device.
Statement 2. An embodiment of the disclosure includes the system according to statement 1, wherein the load balancing daemon includes a migration logic to migrate the memory page from the first storage portion of the first storage device to the second storage portion of the second storage device.
Statement 3. An embodiment of the disclosure includes the system according to statement 1, wherein the first storage portion and the second storage portion extend the memory via a cache-coherent interconnect protocol.
Statement 4. An embodiment of the disclosure includes the system according to statement 3, wherein the cache-coherent interconnect protocol includes a Compute Express Link (CXL) protocol.
Statement 5. An embodiment of the disclosure includes the system according to statement 3, wherein the memory is drawn from a set including flash memory, Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Persistent Random Access Memory, Ferroelectric Random Access Memory (FRAM), or Non-Volatile Random Access Memory (NVRAM).
Statement 6. An embodiment of the disclosure includes the system according to statement 3, wherein:
the first storage device includes a first Solid State Drive (SSD); and
the second storage device includes a second SSD.
Statement 7. An embodiment of the disclosure includes the system according to statement 3, wherein the load balancing daemon includes software executable by the processor.
Statement 8. An embodiment of the disclosure includes the system according to statement 3, wherein:
the first storage device includes a first host-managed device memory (HDM) to store the first update count; and
the second storage device includes a second HDM to store the second update count.
Statement 9. An embodiment of the disclosure includes the system according to statement 8, wherein the first update count is non-cacheable.
Statement 10. An embodiment of the disclosure includes the system according to statement 8, wherein the first storage device includes a second processor including a cache to cache the first update count, the second processor using a cache-coherent interconnect protocol to maintain coherence between the first update count in the cache and the first HDM.
Statement 11. An embodiment of the disclosure includes the system according to statement 8, wherein the load balancing daemon includes an access logic to access the first update count from the first HDM and to access the second update count from the second HDM.
Statement 12. An embodiment of the disclosure includes the system according to statement 8, wherein the load balancing daemon includes a reset logic to reset the first update count in the first HDM and to reset the second update count in the second HDM.
Statement 13. An embodiment of the disclosure includes the system according to statement 8, wherein the first HDM further stores a write count for the memory page.
Statement 14. An embodiment of the disclosure includes the system according to statement 13, wherein the load balancing daemon includes an access logic to access the write count from the first HDM.
Statement 15. An embodiment of the disclosure includes the system according to statement 3, wherein the load balancing daemon includes a poller to poll the first storage device for the first update count and to poll the second storage device for the second update count.
Statement 16. An embodiment of the disclosure includes the system according to statement 3, wherein:
the first storage device includes a first interrupt logic to interrupt the load balancing daemon to provide the first update count; and
the second storage device includes a second interrupt logic to interrupt the load balancing daemon to provide the second update count.
Statement 17. An embodiment of the disclosure includes the system according to statement 3, wherein the load balancing daemon is configured to migrate the memory page from the first storage portion of the first storage device to the second storage portion of the second storage device based at least in part on the first update count exceeding the second update count.
Statement 18. An embodiment of the disclosure includes the system according to statement 17, wherein the load balancing daemon is configured to migrate the memory page from the first storage portion of the first storage device to the second storage portion of the second storage device based at least in part on a difference between the first update count and the second update count exceeding a threshold.
Statement 19. An embodiment of the disclosure includes the system according to statement 18, wherein:
the memory page is associated with a write count;
the first storage portion further stores a second memory page, the second memory page associated with a second write count; and
the load balancing daemon is configured to migrate the memory page from the first storage portion of the first storage device to the second storage portion of the second storage device based at least in part on the difference between the first update count and the second update count exceeding the threshold and the write count being higher than the second write count.
Statement 20. An embodiment of the disclosure includes the system according to statement 3, wherein the storage device includes an increment logic to increment the first update count based at least in part on new data being written to the first storage device.
Statement 21. An embodiment of the disclosure includes the system according to statement 20, wherein the increment logic is configured to increment a write count associated with the memory page based at least in part on the new data being written to the memory page.
Statement 22. An embodiment of the disclosure includes the system according to statement 3, wherein:
the first storage portion includes a second memory page; and
the load balancing daemon is configured to migrate the second memory page from the first storage portion of the first storage device to the memory based at least in part on the first update count of the first storage device and a second write count associated with the second memory page exceeding a threshold.
Statement 23. An embodiment of the disclosure includes the system according to statement 3, wherein the memory stores a second memory page and a second write count for the second memory page.
Statement 24. An embodiment of the disclosure includes the system according to statement 23, wherein the load balancing daemon is configured to migrate the second memory page from the memory to the second storage portion of the second storage device based at least in part on the second write count being less than a threshold.
Statement 25. An embodiment of the disclosure includes the system according to statement 3, wherein:
the first storage device further includes a third storage portion, the third storage portion accessible by an application running on the processor; and
the second storage device further includes a fourth storage portion, the fourth storage portion accessible by the application running on the processor.
Statement 26. An embodiment of the disclosure includes a storage device, comprising:
a storage including a first storage portion, the first storage portion including a memory page;
a controller to process at least one of a load request or a store request sent to the storage device; and
an increment logic to manage an update count identifying a first number of times data has been written to the storage and a write count identifying a second number of times data has been written to the memory page,
wherein the storage extends a memory.
Statement 27. An embodiment of the disclosure includes the storage device according to statement 26, wherein the storage device supports a cache-coherent interconnect protocol.
Statement 28. An embodiment of the disclosure includes the storage device according to statement 27, wherein the cache-coherent interconnect protocol includes a Compute Express
Link (CXL) protocol.
Statement 29. An embodiment of the disclosure includes the storage device according to statement 26, wherein the storage device includes a Solid State Drive (SSD).
Statement 30. An embodiment of the disclosure includes the storage device according to statement 29, wherein the SSD includes a flash translation layer (FTL) including the increment logic.
Statement 31. An embodiment of the disclosure includes the storage device according to statement 30, wherein the increment logic is configured to disregard a garbage collection of the memory page.
Statement 32. An embodiment of the disclosure includes the storage device according to statement 30, wherein the increment logic is configured to disregard a wear leveling of the memory page.
Statement 33. An embodiment of the disclosure includes the storage device according to statement 26, further comprising a HDM to store the update count and the write count.
Statement 34. An embodiment of the disclosure includes the storage device according to statement 33, wherein the update count and the write count are non-cacheable.
Statement 35. An embodiment of the disclosure includes the storage device according to statement 33, wherein the first storage device includes a processor including a cache to cache the update count, the processor using a cache-coherent interconnect protocol maintaining coherence between the update count in the cache and the HDM.
Statement 36. An embodiment of the disclosure includes the storage device according to statement 26, wherein the storage device further includes a second storage portion accessible by an application running on a processor.
Statement 37. An embodiment of the disclosure includes the storage device according to statement 26, further comprising an interrupt logic to interrupt a load balancing daemon to provide the update count.
Statement 38. An embodiment of the disclosure includes a method, comprising:
identifying a first storage device by a load balancing daemon running on a processor;
identifying a second storage device by the load balancing daemon running on the processor;
identifying a memory page stored on the first storage device by the load balancing daemon running on the processor; and
migrating the memory page from the first storage device to the second storage device,
wherein the first storage device and the second storage device extend a memory.
Statement 39. An embodiment of the disclosure includes the method according to statement 38, wherein the first storage device and the second storage device extend a memory via a cache-coherent interconnect protocol.
Statement 40. An embodiment of the disclosure includes the method according to statement 39, wherein the cache-coherent interconnect protocol includes a Compute Express Link (CXL) protocol.
Statement 41. An embodiment of the disclosure includes the method according to statement 39, wherein:
the first storage device includes a first Solid State Drive (SSD); and
the second storage device includes a second SSD.
Statement 42. An embodiment of the disclosure includes the method according to statement 39, wherein:
identifying the first storage device by the load balancing daemon running on the processor includes determining a first update count of the first storage device; and
identifying the second storage device by the load balancing daemon running on the processor includes determining a second update count of the second storage device.
Statement 43. An embodiment of the disclosure includes the method according to statement 42, wherein:
determining the first update count of the first storage device includes accessing the first update count from a first HDM of the first storage device; and
determining the second update count of the second storage device includes accessing the second update count from a second HDM of the second storage device.
Statement 44. An embodiment of the disclosure includes the method according to statement 42, wherein:
identifying the first storage device by the load balancing daemon running on the processor further includes determining that the first update count is greater than the second update count; and
identifying the second storage device by the load balancing daemon running on the processor includes determining that the second update count is less than the first update count.
Statement 45. An embodiment of the disclosure includes the method according to statement 42, wherein:
determining the first update count of the first storage device includes:
determining the second update count of the second storage device includes:
Statement 46. An embodiment of the disclosure includes the method according to statement 42, further comprising:
receiving a store request at the first storage device; and
updating the first update count based at least in part on receiving the store request.
Statement 47. An embodiment of the disclosure includes the method according to statement 46, wherein
receiving the store request at the first storage device includes receiving the store request to update the memory page at the first storage device; and
the method further comprises updating a write count associated with the memory page on the first storage device.
Statement 48. An embodiment of the disclosure includes the method according to statement 42, further comprising:
resetting the first update count of the first storage device by the load balancing daemon; and
resetting the second update count of the second storage device by the load balancing daemon.
Statement 49. An embodiment of the disclosure includes the method according to statement 42, further comprising resetting a write count associated with the memory page on the first storage device by the load balancing daemon.
Statement 50. An embodiment of the disclosure includes the method according to statement 39 wherein identifying the memory page stored on the first storage device by the load balancing daemon running on the processor includes identifying the memory page stored on the first storage device by the load balancing daemon running on the processor based at least in part on a write count for the memory page.
Statement 51. An embodiment of the disclosure includes the method according to statement 50, wherein identifying the memory page stored on the first storage device by the load balancing daemon running on the processor further includes:
determining the write count for the memory page;
determining a second write count for a second memory page stored on the first storage device; and
identifying the memory page based at least in part on the write count being greater than the second write count.
Statement 52. An embodiment of the disclosure includes the method according to statement 51, wherein:
determining the write count for the memory page includes accessing the write count from a HDM of the storage device; and
determining the second write count for the second memory page stored on the first storage device includes accessing the second write count from the HDM of the storage device.
Statement 53. An embodiment of the disclosure includes the method according to statement 51, wherein:
determining the write count for the memory page includes:
determining the second write count for the second memory page stored on the first storage device includes:
Statement 54. An embodiment of the disclosure includes the method according to statement 53, wherein:
receiving the write count from the first storage device includes receiving a first interrupt from the first storage device, the first interrupt including the write count; and
receiving the second write count from the first storage device includes receiving a second interrupt from the first storage device, the second interrupt including the second write count.
Statement 55. An embodiment of the disclosure includes the method according to statement 39, wherein migrating the memory page from the first storage device to the second storage device includes migrating the memory page from the first storage device to a memory.
Statement 56. An embodiment of the disclosure includes the method according to statement 39, wherein migrating the memory page from the first storage device to the second storage device includes migrating the memory page from a memory to the second storage device.
Statement 57. An embodiment of the disclosure includes the method according to statement 39, wherein migrating the memory page from the first storage device to the second storage device includes:
reading the memory page from the first storage device; and
writing the memory page to the second storage device.
Statement 58. An embodiment of the disclosure includes the method according to statement 57, wherein migrating the memory page from the first storage device to the second storage device further includes erasing the memory page from the first storage device.
Statement 59. An embodiment of the disclosure includes the method according to statement 39, wherein migrating the memory page from the first storage device to the second storage device includes updating a page table based at least in part on migration of the page to the second storage device.
Statement 60. An embodiment of the disclosure includes the method according to statement 39, wherein the first storage device includes a first storage portion including the memory page.
Statement 61. An embodiment of the disclosure includes the method according to statement 60, wherein the first storage device further includes a second storage portion, the second storage portion accessible by an application running on the processor.
Statement 62. An embodiment of the disclosure includes a method, comprising:
receiving a store request at a storage device; and
updating an update count for the storage device based at least in part on receiving the store request.
Statement 63. An embodiment of the disclosure includes the method according to statement 62, wherein
receiving the store request at the storage device includes receiving the store request to update the memory page at the storage device; and
the method further comprises updating a write count associated with the memory page on the storage device.
Statement 64. An embodiment of the disclosure includes the method according to statement 62, further comprising:
receiving a poll at the storage device from a load balancing daemon for the update count; and
sending the update count from the storage device to the load balancing daemon.
Statement 65. An embodiment of the disclosure includes the method according to statement 64, wherein sending the update count from the storage device to the load balancing daemon includes sending an interrupt from the storage device to the load balancing daemon, the interrupt including the update count.
Statement 66. An embodiment of the disclosure includes the method according to statement 62, further comprising:
receiving a poll at the storage device from a load balancing daemon for a write count; and
sending the write count from the storage device to the load balancing daemon.
Statement 67. An embodiment of the disclosure includes the method according to statement 66, wherein sending the write count from the storage device to the load balancing daemon includes sending an interrupt from the storage device to the load balancing daemon, the interrupt including the write count.
Statement 68. An embodiment of the disclosure includes the method according to statement 62, further comprising:
receiving a request at the storage device to reset the update count; and
resetting the update count for the storage device.
Statement 69. An embodiment of the disclosure includes the method according to statement 62, further comprising:
receiving a request at the storage device to reset a write count; and
resetting the write count for the storage device.
Statement 70. An embodiment of the disclosure includes the method according to statement 62, wherein the first storage device includes a first storage portion including the memory page.
Statement 71. An embodiment of the disclosure includes the method according to statement 70, wherein the first storage device further includes a second storage portion, the second storage portion accessible by an application running on the processor.
Statement 72. An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
identifying a first storage device by a load balancing daemon running on a processor;
identifying a second storage device by the load balancing daemon running on the processor;
identifying a memory page stored on the first storage device by the load balancing daemon running on the processor; and
migrating the memory page from the first storage device to the second storage device.
Statement 73. An embodiment of the disclosure includes the article according to statement 72, wherein the first storage device and the second storage device extend a memory via a cache-coherent interconnect protocol.
Statement 74. An embodiment of the disclosure includes the article according to statement 73, wherein the cache-coherent interconnect protocol includes a Compute Express Link (CXL) protocol.
Statement 75. An embodiment of the disclosure includes the article according to statement 73, wherein:
the first storage device includes a first Solid State Drive (SSD); and
the second storage device includes a second SSD.
Statement 76. An embodiment of the disclosure includes the article according to statement 73, wherein:
identifying the first storage device by the load balancing daemon running on the processor includes determining a first update count of the first storage device; and
identifying the second storage device by the load balancing daemon running on the processor includes determining a second update count of the second storage device.
Statement 77. An embodiment of the disclosure includes the article according to statement 76, wherein:
determining the first update count of the first storage device includes accessing the first update count from a first HDM of the first storage device; and
determining the second update count of the second storage device includes accessing the second update count from a second HDM of the second storage device.
Statement 78. An embodiment of the disclosure includes the article according to statement 76, wherein:
identifying the first storage device by the load balancing daemon running on the processor further includes determining that the first update count is greater than the second update count; and
identifying the second storage device by the load balancing daemon running on the processor includes determining that the second update count is less than the first update count.
Statement 79. An embodiment of the disclosure includes the article according to statement 76, wherein:
determining the first update count of the first storage device includes:
determining the second update count of the second storage device includes:
Statement 80. An embodiment of the disclosure includes the article according to statement 76, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
receiving a store request at the first storage device; and
updating the first update count based at least in part on receiving the store request.
Statement 81. An embodiment of the disclosure includes the article according to statement 80, wherein
receiving the store request at the first storage device includes receiving the store request to update the memory page at the first storage device; and
the non-transitory storage medium has stored thereon further instructions that, when executed by the machine, result in updating a write count associated with the memory page on the first storage device.
Statement 82. An embodiment of the disclosure includes the article according to statement 76, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
resetting the first update count of the first storage device by the load balancing daemon; and
resetting the second update count of the second storage device by the load balancing daemon.
Statement 83. An embodiment of the disclosure includes the article according to statement 76, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in resetting a write count associated with the memory page on the first storage device by the load balancing daemon.
Statement 84. An embodiment of the disclosure includes the article according to statement 73 wherein identifying the memory page stored on the first storage device by the load balancing daemon running on the processor includes identifying the memory page stored on the first storage device by the load balancing daemon running on the processor based at least in part on a write count for the memory page.
Statement 85. An embodiment of the disclosure includes the article according to statement 84, wherein identifying the memory page stored on the first storage device by the load balancing daemon running on the processor further includes:
determining the write count for the memory page;
determining a second write count for a second memory page stored on the first storage device; and
identifying the memory page based at least in part on the write count being greater than the second write count.
Statement 86. An embodiment of the disclosure includes the article according to statement 85, wherein:
determining the write count for the memory page includes accessing the write count from a HDM of the storage device; and
determining the second write count for the second memory page stored on the first storage device includes accessing the second write count from the HDM of the storage device.
Statement 87. An embodiment of the disclosure includes the article according to statement 85, wherein:
determining the write count for the memory page includes:
determining the second write count for the second memory page stored on the first storage device includes:
Statement 88. An embodiment of the disclosure includes the article according to statement 87, wherein:
receiving the write count from the first storage device includes receiving a first interrupt from the first storage device, the first interrupt including the write count; and
receiving the second write count from the first storage device includes receiving a second interrupt from the first storage device, the second interrupt including the second write count.
Statement 89. An embodiment of the disclosure includes the article according to statement 73, wherein migrating the memory page from the first storage device to the second storage device includes migrating the memory page from the first storage device to a memory.
Statement 90. An embodiment of the disclosure includes the article according to statement 73, wherein migrating the memory page from the first storage device to the second storage device includes migrating the memory page from a memory to the second storage device.
Statement 91. An embodiment of the disclosure includes the article according to statement 73, wherein migrating the memory page from the first storage device to the second storage device includes:
reading the memory page from the first storage device; and
writing the memory page to the second storage device.
Statement 92. An embodiment of the disclosure includes the article according to statement 91, wherein migrating the memory page from the first storage device to the second storage device further includes erasing the memory page from the first storage device.
Statement 93. An embodiment of the disclosure includes the article according to statement 73, wherein migrating the memory page from the first storage device to the second storage device includes updating a page table based at least in part on migration of the page to the second storage device.
Statement 94. An embodiment of the disclosure includes the article according to statement 73, wherein the first storage device includes a first storage portion including the memory page.
Statement 95. An embodiment of the disclosure includes the article according to statement 94, wherein the first storage device further includes a second storage portion, the second storage portion accessible by an application running on the processor.
Statement 96. An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
receiving a store request at a storage device; and
updating an update count for the storage device based at least in part on receiving the store request.
Statement 97. An embodiment of the disclosure includes the article according to statement 96, wherein
receiving the store request at the storage device includes receiving the store request to update the memory page at the storage device; and
the non-transitory storage medium has stored thereon further instructions that, when executed by the machine, result in updating a write count associated with the memory page on the storage device.
Statement 98. An embodiment of the disclosure includes the article according to statement 96, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
receiving a poll at the storage device from a load balancing daemon for the update count; and
sending the update count from the storage device to the load balancing daemon.
Statement 99. An embodiment of the disclosure includes the article according to statement 98, wherein sending the update count from the storage device to the load balancing daemon includes sending an interrupt from the storage device to the load balancing daemon, the interrupt including the update count.
Statement 100. An embodiment of the disclosure includes the article according to statement 96, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
receiving a poll at the storage device from a load balancing daemon for a write count; and
sending the write count from the storage device to the load balancing daemon.
Statement 101. An embodiment of the disclosure includes the article according to statement 100, wherein sending the write count from the storage device to the load balancing daemon includes sending an interrupt from the storage device to the load balancing daemon, the interrupt including the write count.
Statement 102. An embodiment of the disclosure includes the article according to statement 96, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
receiving a request at the storage device to reset the update count; and
resetting the update count for the storage device.
Statement 103. An embodiment of the disclosure includes the article according to statement 96, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in:
receiving a request at the storage device to reset a write count; and
resetting the write count for the storage device.
Statement 104. An embodiment of the disclosure includes the article according to statement 96, wherein the first storage device includes a first storage portion including the memory page.
Statement 105. An embodiment of the disclosure includes the article according to statement 104, wherein the first storage device further includes a second storage portion, the second storage portion accessible by an application running on the processor.
Consequently, in view of the wide variety of permutations to the embodiments described herein, this detailed description and accompanying material is intended to be illustrative only, and should not be taken as limiting the scope of the disclosure. What is claimed as the disclosure, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto.
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 63/222,406, filed Jul. 15, 2021, which is incorporated by reference herein for all purposes.
Number | Date | Country | |
---|---|---|---|
63222406 | Jul 2021 | US |