-
Notifications
You must be signed in to change notification settings - Fork 140
Performance Testing
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.
- Install 22.04.
- Install dcperf deps
sudo apt install -y python3-pip git python3-click python3-pandas python3-tabulate
- Install misc things I suspect may be required (build-essential, cmake, pkg-config, clang, llvm).
- 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. - clone dcperf repo.
- as root, run
python3 ./benchpress_cli.py install
- 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).
- re-run the benchpress_cli install cmd from above.
after this, dcperf is installed.
- use do-release-upgrade to upgrade to 24.04 to be able to build scx (easiest way around this dependency matrix).
- 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
- 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