1. CXL Cache
- In addition to the usecase that uses CXL device as System RAM and Swap interfaces, SMDK v1.4 allows another usecase that uses CXL device as OS-Level Cache interface.
- CXL Cache is the 2nd-level page cache with pluggable and page-granularity attributes that stores clean file-backed pages. Upon CXL Cache, a file-backed page is traversed in following memory order - pagecache(near), cxlcache(far), disk(farthest).
2. CXL-CLI
- CXL Spec commands added
identify, get-health-info, set-alert-config, get-alert-config, get-firmware-info, transfer-firmware, activate-firmware
- CXL Cache control commands added
enable-cxlcache, disable-cxlcache, flush-cxlcache, check-cxlcache
3. Documentation
- Update user guide documents
SMDK Architecture: CXL Cache - https://github.com/OpenMPDK/SMDK/wiki/2.-SMDK-Architecture
Kernel Guide: CXL Cache usage - https://github.com/OpenMPDK/SMDK/wiki/4.-Kernel
Plugin Guide: New CXL spec commands and CXL Cache control commands - https://github.com/OpenMPDK/SMDK/wiki/5.-Plugin
1. CXL Swap
- In addition to the usecase that uses CXL device as System RAM interface, SMDK v1.3 allows another usecase that uses CXL device as Swap interface. CXL Swap implements Linux frontswap and is delivered as kernel module likewise zSwap.
- However, it does not perform (de)compression while page swapping, thus, leads to CPU saving and latency QoS on swap handling. We believe it is more close to the philosophy of CXL memory expansion.
2. CXL Composability
- Composability is also a primary matter of CXL philosophy. By adopting previous Linux patches and algorithms, we enhanced compatibility and coverage of Linux VMM belows to better support of CXL composability.
- Page migration - manage CXL DRAM as movable page attribute
- Memory node on/offline - allow memory-node on/offline function for CXL DRAM
- Fragmentation avoidance - apply the algorithm for avoiding DRAM fragmentation issue to CXL DRAM
3. CXL-CLI
- CXL Swap control commands
enable_cxlswap, disable_cxlswap, flush_cxlswap, check_cxlswap
- CXL Device performance reporter
get-latency-matrix
4. Documentation
- Update and Refactoring user guide documents
SMDK Architecture - https://github.com/OpenMPDK/SMDK/wiki/2.-SMDK-Architecture
Installation Guide - https://github.com/OpenMPDK/SMDK/wiki/3.-Installation
Kernel Guide - https://github.com/OpenMPDK/SMDK/wiki/4.-Kernel
Plugin Guide - https://github.com/OpenMPDK/SMDK/wiki/5.-Plugin
1. N-way grouping (a.k.a memory partition)
- This is geared for those who want to assemble multiple CXL devices as they wish
- Related Usecase : Memory Interleaving, Isolation, Virtualization
- CXL-CLI - group / node management
- SMDK Allocator - updated compatible / optimization library
- SMDK Kernel - primitive interfaces to provide online and static CXL device information, and control
2. CXL-CLI
- Grouping commands
N-way group : group-zone / group-node / group-noop / group-dax / group-add / group-remove
Listing group : group-list
- CXL Spec commands
Poison : inject-poison / get-poison / clear-poison
Timestamp : set-timestamp / get-timestamp
Event : get-event-record / clear-event-record
- Basic CXL-CLI commands
SMDK CXL-CLI is an expansion of Intel CXL-CLI
3. Application Compatibility
- A multi-node traversal application is now able to run normally. e.g.) MLC
4. Miscellaneous
- Error/Exception handling on real-world testbeds
- More testcases
5. Issue
- fix issue : kernel build failure when CONFIG_LOCKDEP=y or CONFIG_EXMEM=n (v1.2.1, thanks to Ravi Shankar)
- functionality coverage : Even though a version of BIOS and/or CXL device does not provide DVSEC ID info, the patch allows listing CXL device information and node grouping. (v1.2.2, thanks to Wu Chanco)
Documentation
- SMDK Architecture - https://github.com/OpenMPDK/SMDK/wiki/2.-SMDK-Architecture
- User Guide - https://github.com/OpenMPDK/SMDK/wiki/3.-User-Guide
- Test and Tools - https://github.com/OpenMPDK/SMDK/wiki/4.-Test-and-Tools
This update reinforces coverage and reliability of v1.0.0 compatible/optimization API and memory partition features.
- BW Aggregation / Isolation
- Easy-configuration
- Python Binding
- Node Specific Allocation/deallocation
- Statistic Reporting
- Co-existence with DAX interface
- CXL Memory Registration using SRAT/CEDT/DVSEC
- Multi-socket Support
- Update version 5.17-rc5 -> 5.18-rc3
- Error/Exception Handling
- Testcases
Documentation (https://github.com/OpenMPDK/SMDK/wiki)
- User Guide
- Test and Tools
The initial OSS release of the Scalable Memory Development Kit (SMDK).
Software (https://github.com/OpenMPDK/SMDK.git)
- SMDK Plugin (allocator library, numactl extension)
- SMDK Kernel (memory partition)
- Application (IMDB, ML/AI)
- BM Tool (stream, mlc)
- Container (Application/BM Tool container)
- TC (unittests)
Documentation (https://github.com/OpenMPDK/SMDK/wiki)
- Design Principle and Objective
- SMDK Architecture
- User Guide
- Test and Tools
- Experiment Results