From 23591f2a952bbe73be1b7a72b34d4233f820a1c7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 26 Dec 2019 11:48:34 +0100 Subject: [PATCH] munch: Add a simple userland program for chewing up lots of memory --- Userland/munch.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Userland/munch.cpp diff --git a/Userland/munch.cpp b/Userland/munch.cpp new file mode 100644 index 0000000000..b8b333e117 --- /dev/null +++ b/Userland/munch.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include +#include + +int main(int argc, char** argv) +{ + size_t limit = 0; + size_t bite_size = 0; + int interval = 0; + if (argc == 1) { + limit = 42 * MB; + bite_size = 1 * MB; + interval = 200000; + } else if (argc == 4) { + bite_size = atoi(argv[1]); + limit = atoi(argv[2]); + interval = atoi(argv[3]); + } else { + printf("usage: munch [bite_size limit interval]\n"); + return 1; + } + + size_t munched = 0; + printf("Munching %zu bytes every %d ms, stopping at %zu\n", bite_size, interval / 1000, limit); + for (;;) { + auto* ptr = mmap(nullptr, bite_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); + if (ptr == MAP_FAILED) { + perror("mmap"); + return 1; + } + memset(ptr, 0, bite_size); + munched += bite_size; + printf("Allocated: %zu\n", munched); + if (limit && munched >= limit) { + printf("All done!\n"); + break; + } + usleep(interval); + } + return 0; +}