Skip to content

Memory Machine X - v1.4.0 Release Notes

Introduction

This document provides information about the Memory Machine X (MMX) version 1.4.0 release. This version focused on introducing foundational Quality-of-Service (QoS) policy engines, significant enhancements to memory tiering capabilities, and key updates to the Browser User Interface (BUI).

Key Features in This Release

This release of Memory Machine X version 1.4.0 delivered several new capabilities and improvements:

  • New Quality-of-Service (QoS) Policy Engines:
    • Introduction of the Latency Optimized Policy (Tiering) using intercept-less Hotness Tracking.
    • Debut of the Bandwidth Optimized Policy with a fixed ratio for memory distribution between DRAM and CXL.
  • Enhanced Process Monitoring:
    • Multi-PID Support: The Latency Policy Engine now automatically monitors and manages forked processes.
    • AutoPID Identification: PIDs are automatically added or removed from the target list based on memory thresholds.
  • System-Level Tiering Options:
    • Users can enable system-wide tiering (excluding Kernel PIDs/TIDs), compatible with Kubernetes workflows.
    • Users can specify the duration for the Hot Working Set Size profiler.
  • User Interface (BUI) Enhancements:
    • Ability to switch between Latency and Bandwidth optimization modes.
    • Option to enable/disable Bandwidth Optimization Tiering system-wide.
    • Performance improvements for the UI itself.
    • Added Light/Dark Mode support.
  • System Interaction and Warnings:
    • Warnings are generated when Kernel Transparent Page Placement (TPP) is enabled.
    • Options to respect or override memory policies set via numactl.
    • Handling for Out-of-Memory (OOM) conditions induced by the Bandwidth Policy.
  • General Bug Fixes: Various bug fixes were implemented to improve stability and performance.

Memory Machine Features

Quality-of-Service (QoS) Policy Engines

This release introduced Quality-of-Service (QoS) capabilities through the implementation of the following policy engines:

  1. Latency Optimized Policy (Tiering)

    • Functionality: The latency-optimized policy uses intercept-less Hotness Tracking to tier memory between DRAM and CXL. This was first implemented in the v1.3.0 release and has been further refined.
    • Multi-PID Support (New Feature): The Latency Policy Engine monitors forked processes created by the parent application process and automatically adds the new PID(s) to the list of targets managed by the engine.
    • Performance Improvements: Efforts were made to improve the overall performance of the Tiering Policy.
    • Includes general bug fixes as needed.
  2. Bandwidth Optimized Policy (New Feature)

    • Functionality: The bandwidth-optimized policy uses a decision engine to select and move a specific ratio of memory pages between DRAM and CXL for the monitored application(s).
    • Fixed Ratio Configuration: The config file specifies the desired ratio (e.g., 80% DRAM, 20% CXL).
    • Decision Engine: A new Bandwidth Decision Engine reads the ratio from the config file. In this initial version, application memory pages are selected randomly to satisfy the ratio, without advanced intelligence in page selection (selected pages may be hot or cold).
    • CXL Device Support: This release supports a single CXL Memory Expansion Device per CPU Socket.
    • OOM Handling: Mechanisms were implemented to handle Out-of-Memory conditions that the Bandwidth Policy might induce.

Other Key Features

  • Hot Working Set Size Duration: Users can now specify the duration for which the profiler should run (e.g., 10 minutes, 1 hour, 12 hours).
  • System-Wide Tiering:
    • Allows for tiering where the selected Policy or Profiler decides what to tier and when, based on a Decision Engine.
    • This functionality excludes Kernel PIDs/TIDs and is designed to work with Kubernetes workflows.
  • AutoPID Identification Support (New Feature):
    • PIDs are automatically added to or subtracted from the Target PID list based on a memory threshold set by the user or in the config file.
    • This feature is automatically enabled when QoS is enabled and is customizable in the UI.
  • Policy Switching in UI (New): Users can switch between Latency and Bandwidth optimization modes directly in the User Interface.
  • Kernel TPP Warning:
    • When Kernel Transparent Page Placement (TPP) is enabled, a warning is generated in the UI and log files, advising the user that undefined or unpredictable behavior could be observed.
  • Numactl Policy Handling:
    • When memory policies are used via numactl, Memory Machine X offers the user a way to either respect that policy or override it.

Browser User Interface (BUI) Updates

  • UI/UX Performance Improvements: Enhancements were made to the UI's performance.
  • Light/Dark Mode Support: Users can now choose between light and dark themes for the BUI.
  • System-Wide Bandwidth Tiering Control: Users can enable or disable Bandwidth Optimization Tiering system-wide without needing to select individual PIDs.
  • Includes general bug fixes for the UI.

Bug Fixes

This release included various bug fixes to enhance stability and performance across the different features.

Known Issues and Limitations

The Bandwidth Optimized Policy's Decision Engine selected pages randomly to meet the defined ratio; more intelligent page selection was planned for future development.

Support for multiple CXL Memory Expansion Devices per CPU socket for interleaved bandwidth under the Bandwidth Optimized Policy was not fully implemented. This will be addressed in the next release.

Contact and Support

For support, documentation, and more information about Memory Machine X, please visit the MemVerge official website or contact your MemVerge support representative.