Resource Manager Setup
This page describes how to prepare source code, build RamRyder resource-manager components, configure memory devices, and start the resource manager.
Get Source Code
git clone --recurse-submodules https://github.com/ramryder-project/ramryder.git
Build Resource Manager
From the RamRyder directory:
./scripts/pkgdep.sh
# use --arch-cpu-amd to configure if you run on AMD server. Default: Intel
./configure [--arch-cpu-amd]
make
Configure Hardware Resource
1) Configure hardware
RamRyder supports multiple memory hardware types (for example DIMM, PMEM, and CXL). Before configuring resource manager, first prepare and expose your memory devices correctly on the host.
For hardware-specific setup steps, see Hardware Support Overview.
2) Configure resource manager file
Create src/elesticmm.conf (or copy from src/elasticmm_default.conf) and
configure your memory devices:
[global]
# size in MB
segment_size_mb 128
monitor_interval_second 1
[devices]
# the combination of tier id and dev id should be unique
dev path=/dev/dax0.0 size_mb=20480 tier_id=0 dax_id=0
dev path=/dev/dax1.0 size_mb=20480 tier_id=0 dax_id=1
[clouddb]
enable_clouddb false
influxdb_url <url>
influxdb_token <token>
use_proxy false
proxy_addr <proxy addr>
The minimum required configuration is the [devices] section. Each memory
device should be exposed as a DAX device under /dev so it can be managed in
userspace.
For each DAX device:
- use
tier_id=0for local memory (DIMM) - use
tier_id=1for CXL memory - keep
dax_idunique within the sametier_id
Section details:
- [global]: defines the global configuration for resource manager.
segment_size_mb: size of one management segment (MB).monitor_interval_second: monitoring interval (seconds). Resource manager uses this interval when collecting and uploading runtime memory pressure and dynamic allocation metrics.
- [devices]: each
deventry describes one software-managed DAX device.path: host device path (for example/dev/dax0.0).size_mb: usable device size in MB.tier_id: memory-tier identifier. Use the same value for devices in the same socket/tier, and different values for devices in different sockets/tiers.dax_id: device identifier within one tier and should be unique for each DAX device under the sametier_id.
- [clouddb]: controls whether RamRyder uploads per-VM runtime memory metrics
(such as capacity, bandwidth, and latency) to CloudDB. RamRyder currently
supports InfluxDB as the backend, so these metrics can be observed in tools
such as Grafana dashboards.
enable_clouddb: enables or disables CloudDB reporting.influxdb_url: URL of the InfluxDB service.influxdb_token: authentication token used to write metrics.use_proxy: enables or disables proxy access for remote DB connection (deprecated).proxy_addr: proxy address used whenuse_proxyis enabled (deprecated).
Start Resource Manager
cd src
sudo ./resource_manager
sudo is required because resource manager reads host performance counters.