mmm_donut: Initial version

Initial version of the Mad Memory Muncher, a Dynamically Organizing
Non-Uniprocess Tester.

This attempts to chew through memory and exercise zram / low memory
conditions in a slightly cleaner way than other similar tools.
Specifically:

- It's intrinsically multiprocess and the different processes work
  together.  Among other benefits, this means we don't get into corner
  cases where one process starts or finishes significantly before the
  others.
- The master process can detect if a child has died and stop the test.
- We can summarize the results of all clients easily.

This test is written in python so it is hopefully easy to extend.  It
still attempts to be predictable and performant by allocating pages
itself by calling libc directly and doing its memory manipulation
using numpy (which is written in C).

At the moment this program only has a single, hardcoded test where it
allocates a bunch of memory and then spends time accessing it.  It
could certainly be extended to include additional test modes.

BUG=None
TEST=Use this to genereate some memory pressure

Change-Id: I9d9babc7b2b9700741fa7577dc744aeac66f73a6
Reviewed-on: https://chromium-review.googlesource.com/840441
Commit-Ready: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Sonny Rao <sonnyrao@chromium.org>
2 files changed
tree: 78ab60cace2eabca9fd0eab96be2327cc6231ea7
  1. Makefile
  2. README
  3. common.mk
  4. memory-eater/
  5. mmm_donut.py
  6. pylintrc