diff --git a/src/tools.c b/src/tools.c
index 682ebd0ad7cc0514cb5904dbd112b2b1bc1da05d..4653c2ef799f9256bd459d9dcc1cf5698a7db6f4 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -27,6 +27,8 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <sys/resource.h>
+#include <sys/time.h>
 
 /* This object's header. */
 #include "tools.h"
@@ -701,3 +703,14 @@ int compare_particles(struct part a, struct part b, double threshold) {
 
 #endif
 }
+
+/**
+ * @brief return the resident memory use of the process and its children.
+ *
+ * @result memory use in Kb.
+ */
+long get_maxrss() {
+  struct rusage usage;
+  getrusage(RUSAGE_SELF, &usage);
+  return usage.ru_maxrss;
+}
diff --git a/src/tools.h b/src/tools.h
index 4d9e8d3ef86f9ad2661118acf008797893ea5bd7..bb141101a3bf6fad38a83a15ea7f6bb5de86e9f8 100644
--- a/src/tools.h
+++ b/src/tools.h
@@ -52,4 +52,6 @@ int compare_values(double a, double b, double threshold, double *absDiff,
                    double *absSum, double *relDiff);
 int compare_particles(struct part a, struct part b, double threshold);
 
+long get_maxrss();
+
 #endif /* SWIFT_TOOL_H */