-# @COPYRIGHT@
#
-# $Id: Makefile,v 1.2 2004/11/17 20:24:11 acb Exp $
-
-BASE=pl_mom
-VERSION=0.3
-TARFILE=$(BASE)-$(VERSION).tgz
-
-all: pl_mom.pl pl_mom
+# pl_mom suite of node monitors
+#
+# Mark Huang <mlhuang@cs.princeton.edu>
+# Copyright (C) 2006 The Trustees of Princeton University
+#
+# $Id$
+#
-install:
- install -D -m 755 pl_mom.pl /usr/local/planetlab/bin/pl_mom.pl
- install -D -m 755 pl_mom /etc/init.d/pl_mom
+ALL := leak
-tarball:
- rm -f $(TARFILE)
- tar cvfz $(TARFILE) -C .. --exclude=CVS $(BASE)-$(VERSION)
+CC := gcc
+CFLAGS := -Wall -O2
-rpm:: tarball
- sudo cp $(TARFILE) /usr/src/redhat/SOURCES
- sudo rpmbuild -ba $(BASE).spec
+all: $(ALL)
+clean:
+ rm -f $(ALL)
+.PHONY: all clean
--- /dev/null
+/*
+ * Stupid program that leaks memory at a configurable rate, to test swapmon
+ *
+ * Mark Huang <mlhuang@cs.princeton.edu>
+ * Copyright (C) 2006 The Trustees of Princeton University
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <getopt.h>
+
+int
+main(int argc, char *argv[])
+{
+ int rate = 16;
+ int leaked;
+
+ for (;;) {
+ int c, option_index = 0;
+ static struct option long_options[] = {
+ { "rate", required_argument, NULL, 'r' },
+ { "help", no_argument, NULL, 'h' },
+ { 0, 0, 0, 0 }
+ };
+
+ c = getopt_long(argc, argv, "r:h", long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'r':
+ rate = atoi(optarg);
+ break;
+ case 'h':
+ default:
+ fprintf(stderr, "Usage: %s [OPTION]...\n", argv[0]);
+ fprintf(stderr, "\t-r, --rate=MiB/sec\tRate to leak memory in MiB/sec\n");
+ return 0;
+ }
+ }
+
+ leaked = 0;
+ for (;;) {
+ int i, bufsize = rate * 1024 * 1024;
+ char *buf = malloc(bufsize);
+ if (buf) {
+ /* Touch every page in the buffer */
+ for (i = 0; i < bufsize; i += 4096)
+ buf[i] = 1;
+ leaked += rate;
+ printf("\r%d MiB", leaked);
+ fflush(stdout);
+ }
+ sleep(1);
+ }
+
+ return 0;
+}