System and method for integrating overprovisioned memory devices
A memory device includes a memory interface to a host computer and a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS). A kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device.
1. A memory device comprising:
a memory interface to a host computer; and
a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS),
wherein a kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, and
wherein the frontswap API call of the kernel driver module provides a hook to intercept the anonymous pages before the anonymous pages are migrated to a swap space of a secondary swap system, and instead migrates the anonymous pages to the frontswap space of the memory space.
2. The memory device of claim 1 , where the virtual memory capacity of the memory device dynamically varies by compression, deduplication, or/and error-correction of data stored in the memory device.
3. The memory device of claim 1 , wherein the memory interface is a double data rate (DDR) interface or a peripheral component interconnect express (PCIe) interface.
4. The memory device of claim 1 , wherein the frontswap API call of the kernel driver module migrates the anonymous pages to the swap space of the secondary swap system when the virtual memory capacity is full due to a compaction of the memory device.
5. A memory device comprising:
a memory interface to a host computer; and
a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS),
wherein a kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, and
wherein the cleancache API call of the kernel driver module provides a hook to intercept the file pages before the file pages are migrated to a file system of a secondary swap system, and instead migrates the file pages to the cleancache space of the memory device.
6. The memory device of claim 5 , wherein the cleancache API call of the kernel driver module migrates the file pages to the file system of the secondary swap system when the virtual memory capacity is full due to a compaction ratio of the memory device.
7. The memory device of claim 1 , wherein the frontswap and cleancache API calls initiate a CPU memory copy and direct memory access (DMA) transfer to an interface controller.
8. The memory device of claim 1 , wherein the memory overprovisioning logic includes an embedded bitmap to tracks pages in the memory device.
9. The memory device of claim 1 , further comprising a dedicated communication channel to provide the virtual memory capacity to the host OS.
10. A method comprising:
providing a memory device comprising a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS);
configuring the memory device as a block memory device over a memory interface to a host computer;
loading a kernel driver module from a kernel of the host OS during a runtime; and
providing a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device using the kernel driver module based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, wherein the frontswap API call of the kernel driver module provides a hook to intercept the anonymous pages before the anonymous pages are migrated to a swap space of a secondary swap system, and instead migrates the anonymous pages to the frontswap space of the memory space, and wherein the cleancache API call of the kernel driver module provides a hook to intercept the file pages before the file pages are migrated to a file system of the secondary swap system, and instead migrates the file pages to the cleancache space of the memory device.
11. The method of claim 10 , further comprising registering the memory device as a block memory device having the virtual memory capacity.
12. The method of claim 10 , wherein the kernel driver module determines to accept or reject the anonymous pages or the file pages based on the virtual memory capacity.
13. The method of claim 10 , where the virtual memory capacity of the memory device dynamically varies by compression, deduplication, or/and error-correction of data stored in the memory device.
14. The method of claim 10 , wherein the memory interface is a double data rate (DDR) interface or a peripheral component interconnect express (PCIe) interface.
15. The method of claim 10 , wherein the frontswap API call of the kernel driver module migrates the anonymous pages to the swap space of the secondary swap system and the cleancache API call of the kernel driver module migrates the file pages to the file system of the secondary swap system when the virtual memory capacity is full due to a compaction ratio of the memory device.
16. The method of claim 10 , wherein the frontswap and cleancache API calls initiate a CPU memory copy and direct memory access (DMA) transfer to an interface controller.
17. The method of claim 10 , wherein the memory overprovisioning logic includes an embedded bitmap to tracks pages in the memory device.