实验复现

Memtis - ASPLOS’23

前置 | Linux

Benchmarks 验证运行

依照原文实验,配置了除 SPEC CPU 2017 以外的所有测试集。

gapbs

对 benchmark/bench.mk 做少许修改,手动下载解压。[5]

liblinear

v2.45 没有了,现版本 v2.47。对 datasets.mk 做少许修改,kdd 需要手动下载。[6]

graph500

v3.0.0 和 vmitosis-workloads/graph500 均无法使用,单独安装 v2.1.4.[7]

Benchmark Specification - Graph 500

btree

1
2
3
# change the number of elements and lookup requests
vim btree/btree.c
# see line 61

XSBench

Programming Model: openmp-threading

This is the “default” version of XSBench that is appropriate for serial and multicore CPU architectures. The method of parallelism is via the OpenMP threading model.[8]

Silo (bug)

get silo here

安装 libaio-dev[9],手动安装 libdb4.8Install libdb4.8 on Debian,编译

1
$ make dbtest

已在 silo repo 和 stackoverflow 提问,答复已采纳

The bug is that operator<< is declared for std::pair later in the util.h file. That means lookup for << from format_list can’t find it. Normally lookup should find operator overloads via ADL regardless of declaration order at the point of instantiation, but for that to work the overload must be defined in a namespace scope associated with the argument types, i.e. std here, where the user is not allowed to place such an overload. This is a common mistake and happened to work for a long time on GCC because of a bug in the compiler’s lookup.

line 607 的操作符重载移至 format_list() 之前即可。

Results

环境配了足足三天,但最后只仓促进行了全位于容量层 (DCPMM-only) 的 baseline 实验,之后便出去实习了。有点可惜。

实验环境的 CPU 是 Xeon Silver 4314,比原文 Xeon Gold 5218 弱上不少,跑得也是肉眼可见的慢。


  1. https://docs.kernel.org/admin-guide/cgroup-v2.html ↩︎

  2. https://kubernetes.io/zh-cn/docs/concepts/architecture/cgroups/ ↩︎

  3. https://www.lixueduan.com/posts/linux/08-cgroup-v2 ↩︎

  4. https://juniorprincewang.github.io/2018/11/21/Linux内核kthread/ ↩︎

  5. Releases · ANLAB-KAIST/traces ↩︎

  6. Multi-core LIBLINEAR ↩︎

  7. Graph500教程-CSDN博客 ↩︎

  8. ANL-CESAR/XSBench: XSBench: The Monte Carlo Macroscopic Cross Section Lookup Benchmark ↩︎

  9. MySQL Bugs: #86386: cmake can’t find libaio libraries not found during compilation. ↩︎