/memory-optimizer

Primary LanguageC++OtherNOASSERTION

MemoryOptimizer -- hot page accounting and migration daemon

PREREQUISITE

Hardware

  • Intel Skylake/Cascade Lake processors
  • NVDIMM persistent memory

Kernel

  • LKML discussions:

    [RFC][PATCH v2 00/21] PMEM NUMA node and hotness accounting/migration

  • git repo:

      git clone https://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux.git
      git checkout -B ept-idle-v2-4.20 origin/ept-idle-v2-4.20
    
  • kconfig:

      CONFIG_NUMA=y
      CONFIG_MEM_SOFT_DIRTY=y
      CONFIG_PROC_PAGE_MONITOR=y
      CONFIG_IDLE_PAGE_TRACKING=y
      CONFIG_KVM=m
      CONFIG_KVM_EPT_IDLE=m
    

OS packages

Debian/Ubuntu and RHEL users can run this script to install packages:

./install-deps.sh

Build

make

TOOLS

  • page-refs: PFN based page table scan
  • task-refs: page table scan and migration for one process/VM
  • sys-refs: page table scan and migration for a set of process/VMs

sys-refs is most powerful and can run as daemon to manage hot/cold page placement on DRAM/PMEM nodes.