Configurable memory access benchmark that generates known access patterns for DAMON evaluation.
make -C pcg-c/src # build PCG RNG library (first time only)
make
Requires: gcc, libnuma-dev, libpthread
./gups 0 <nr_threads> <wss_MB> <elem_size> <theta> \
<logging> <randomize> <duration> <migrate> [pattern_interval]
./gups 1 <nr_threads> <wss_MB> <elem_size> <hss_MB> \
<hot_pct> <logging> <randomize> <duration> <migrate> [pattern_interval]
| Parameter | Description |
|---|---|
nr_threads |
Number of worker threads (max 32) |
wss_MB |
Working set size in MB |
elem_size |
Element size in bytes |
theta |
Zipfian skew parameter (0 < theta < 1) |
hss_MB |
Hot set size in MB (hotspot mode) |
hot_pct |
Percentage of accesses to hot set (0-100) |
logging |
Log interval (every N-th accepted access writes a timestamp); 0 = disabled |
randomize |
1 = apply LFSR permutation to indices |
duration |
Benchmark duration in seconds |
migrate |
1 = migrate pages from NUMA node 0 to node 1 before benchmark |
pattern_interval |
Seconds between hot-set pattern shifts; 0 or omitted = disabled |
GUPS_timeline(sec) value— per-second throughput (10^9 updates/s)bench.address— file containing<start_addr> <end_addr>of the mmap'd working setlog_<tid>.txt— per-thread timestamp logs for evaluation replay
| File | Description |
|---|---|
gups.c |
Main benchmark: argument parsing, thread management, worker loop |
gups.h |
Thread argument struct |
dist.h |
Distribution interface (dist_ctx, dist_ops) and inline helpers |
dist_zipf.c |
Zipfian distribution implementation |
dist_hotspot.c |
Hotspot distribution implementation |
timer.c / timer.h |
elapsed() utility |