Change the read_procmem function to return the stack size of the process
authorKim Nguyễn <kn@lri.fr>
Fri, 20 Apr 2012 13:28:52 +0000 (15:28 +0200)
committerKim Nguyễn <kn@lri.fr>
Fri, 20 Apr 2012 13:28:52 +0000 (15:28 +0200)
not the heap size.

include/utils.ml

index fcb74c1..a8c865e 100644 (file)
@@ -37,7 +37,7 @@ DEFINE BIG_A_SIZE = 8192
 let read_procmem () =
   let pid = Unix.getpid() in
   let cin = open_in (Printf.sprintf "/proc/%i/status" pid) in
-  let pattern = "VmHWM" in
+  let pattern = "VmStk" in
   let matchline s = let l = String.length pattern in
   if (String.length s) < l then false
   else let s' = String.sub s 0 l in
@@ -64,9 +64,9 @@ let time_mem f x =
   let t2 = Unix.gettimeofday () in
   let t = (1000. *. (t2 -. t1)) in
     l:= t::!l;
-    Logger.print Format.err_formatter "  %fms\n%!" t ;
-    Logger.print Format.err_formatter "Mem use before: %s\n%!" s1;
-    Logger.print Format.err_formatter "Final Mem: %s\n\n\n%!" s2;
+    Logger.print Format.err_formatter "  %fms@\n%!" t ;
+    Logger.print Format.err_formatter "Mem use before: %s@\n%!" s1;
+    Logger.print Format.err_formatter "Final Mem: %s@\n@\n@\n%!" s2;
     r
 ;;
 
@@ -105,18 +105,19 @@ let stop_perf () =
 let time f ?(count=1) ?(msg="") x =
   let rec loop i =
     Gc.compact();
+    let oldstack = read_procmem () in
     let t1 = Unix.gettimeofday () in
     let r = f x in
     let t2 = Unix.gettimeofday () in
     let t = (1000. *. (t2 -. t1)) in
     Logger.print Format.err_formatter "%s: " msg;
     if (count != 1) then Logger.print Format.err_formatter "run %i/%i,  "  i count;
-    Logger.print Format.err_formatter "%fms" t;
+    Logger.print Format.err_formatter "%fms (stack size: before=%s, after=%s)@\n" t oldstack (read_procmem());
     if i >= count then  (l:= t::!l;r)
     else loop (i+1)
   in
   let r = loop 1 in
-  Logger.print Format.err_formatter "@\n";
+  (*Logger.print Format.err_formatter "@\n"; *)
   r
 ;;
 let total_time () =  List.fold_left (+.) 0. !l;;