From 085c7fe5d4ea6e7b59f944d46ecfeba3755a315b Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 2 Mar 2012 10:53:34 +0000 Subject: Drop the per-task timing stats, give a summary only (#5897) We were keeping around the Task struct (216 bytes) for every worker we ever created, even though we only keep a maximum of 6 workers per Capability. These Task structs accumulate and cause a space leak in programs that do lots of safe FFI calls; this patch frees the Task struct as soon as a worker exits. One reason we were keeping the Task structs around is because we print out per-Task timing stats in +RTS -s, but that isn't terribly useful. What is sometimes useful is knowing how *many* Tasks there were. So now I'm printing a single-line summary, this is for the program in TASKS: 2001 (1 bound, 31 peak workers (2000 total), using -N1) So although we created 2k tasks overall, there were only 31 workers active at any one time (which is exactly what we expect: the program makes 30 safe FFI calls concurrently). This also gives an indication of how many capabilities were being used, which is handy if you use +RTS -N without an explicit number. --- rts/posix/OSThreads.c | 1 - 1 file changed, 1 deletion(-) (limited to 'rts/posix') diff --git a/rts/posix/OSThreads.c b/rts/posix/OSThreads.c index b1be93d04b..c29454809f 100644 --- a/rts/posix/OSThreads.c +++ b/rts/posix/OSThreads.c @@ -198,7 +198,6 @@ forkOS_createThreadWrapper ( void * entry ) Capability *cap; cap = rts_lock(); rts_evalStableIO(&cap, (HsStablePtr) entry, NULL); - taskTimeStamp(myTask()); rts_unlock(cap); return NULL; } -- cgit v1.2.1