Skip to content

Performance Testing

likewhatevs edited this page Feb 18, 2025 · 2 revisions

Not sure how to organize this yet, so here goes.

Thing's tested so far (and how to use):

spark test can't work (i.e. invalid url issues).

feedsim works but is long enough I haven't investigated it thoroughly.

oss_performance_mediawiki -- seems to work well.

how to install and test with sched_ext.

  1. Install 22.04.
  2. Install dcperf deps sudo apt install -y python3-pip git python3-click python3-pandas python3-tabulate
  3. Install misc things I suspect may be required (build-essential, cmake, pkg-config, clang, llvm).
  4. Download hhvm from https://github.com/facebookresearch/DCPerf/releases/download/hhvm/hhvm-3.30-multplatform-binary-ubuntu.tar.xz , unxz, run ./pour-hhvm.sh as root.
  5. clone dcperf repo.
  6. as root, run python3 ./benchpress_cli.py install
  7. when install fails (missing libcrypto .something), use find to cp it to the correct path (it will be under the repo root, and needs to be elsewhere under the repo root).
  8. re-run the benchpress_cli install cmd from above.

after this, dcperf is installed.

  1. use do-release-upgrade to upgrade to 24.04 to be able to build scx (easiest way around this dependency matrix).
  2. obtain and install these two (jammy?) deb's to make libraries required by dcperf (at least oss_performance_mediawiki) be in the right place: libldap-2.5-0_2.5.11+dfsg-1~exp1ubuntu3_amd64.deb libvpx7_1.11.0-2ubuntu2_amd64.deb
  3. test

Note -- this might seem useless because of how involved the setup steps are, but like, signal seems to be good and tbh, we can hook this up to CI eventually so these steps are a one-time thing.

UI is a bit rough, but seems to work.

Here's some random data plugged in while playing with dcperf: https://bencher.dev/console/projects/scx-layered/plots?back=L2NvbnNvbGUvb3JnYW5pemF0aW9ucy9zY2hlZC1leHQvcHJvamVjdHM%2FcGVyX3BhZ2U9OCZwYWdlPTE%3D

This could also be hooked up to CI, eventually, once there is demand/time.

This is very much WIP, but I think this is the way to go about testing perf changes.

The pro's are easy to use, easy to setup, good UI.

The cons are, hard to debug (although, tbh, same is true of dcperf).

tl;dr -- get and run geekbench, with and without layered.

Here are a couple of plots of me testing this w/ and w/o layered:

single socket: https://browser.geekbench.com/v6/cpu/compare/10603669?baseline=10603787

multi socket: https://browser.geekbench.com/v6/cpu/compare/10603857?baseline=10603989

Clone this wiki locally